Bukkit定时重启bash脚本,GNU Screen走着

Bukkit服务器我一直用GNU Screen跑,隔两天有时候会不稳定要重启。好麻烦根本就不关心为什么,搞定就行。有bukkit插件可以实现但是咱多没自尊用那个。虽然感觉bash操作Screen也挺邋遢的.. 但是好用!其实不然的话怎么操作后台,nohup倒腾输入流什么的太麻烦了,这种用途还是terminal模拟器好看。

#!/bin/bash
#/home/bukkit/restart.sh

i=0
while (( $i < 5 ))
do
    if [ "`ps aux|grep -e '^bukkit'|grep SCREEN`" != "" ]; then
        su bukkit -c 'screen -S bukkit -X stuff 'stop`echo -ne '\015'`'' #`echo -ne '\015'` 等于敲下回车
        echo "`date` restart.sh:" 'Stoping bukkit...'
        ((i+=1))
        sleep 5

    else
        ((i+=100))
    fi
done

if (( $i == 100 )); then
    echo "`date` restart.sh:" 'Bukkit was not running. Starting...'
fi

if (( $i == 5 )); then
    kill `ps aux|grep bukkit|awk '{print $2}'`
    echo "`date` restart.sh:" 'Forcibly killing bukkit...'
    sleep 1
fi

if [ "`ps aux|grep -e '^bukkit'|grep SCREEN`" != "" ]; then
    echo "`date` restart.sh:" "ERROR: Couldn't stop bukkit. Exiting."
    exit 1
fi

bash /home/bukkit/start.sh

exit 0

Read More

没有X11的Linux实现远程键盘共享

笔记本连个招呼都不打说死就死了,于是着手配置树莓派作为我的网络中心/手边唯一的linux终端。嵌入式就不要装X了。有X的话Synergy是跨平台共享鼠标键盘神器,显然没有图形服务器它根本不知道把输入往哪送。所以没有X的方案要解决两个问题:

A. 开机自动登录用户(有shell才有希望)
B. 发送指令给不同用户 Read More

通过多重跳板的 ssh -D 动态转发

最近我专用的代理线路速度很不稳定,用租的又觉得不安全,另外玩MMO换公用主机的IP容易被列入可疑名单(天朝gold farmer是一绝)。
所以就试了下home => 公用主机 => 私人主机的方案,其实很简单,这么多年想到了都没试一下简直岂有此理。

#!/bin/bash

export SSHPASS=host0passwd
screen -dmS tunnel0 bash -c "
while :
do
    sshpass -e ssh -L 9900:host1:22 user0@host0 -N
#在本地开9900到达host1的22端口,途中作为user0经过host0。
    sleep 1
done
"

export SSHPASS=host1passwd
screen -dmS tunnel1 bash -c "
while :
do
    sshpass -e ssh -D *:1234 user1@localhost -p 9900
#这时localhost:9900等价于(通过host0的)host1:22,写-D *:1234或192.168.x.x:1234从而在局域网内开放端口,localhost则只能本机。然后使用本地的1234作为SOCKS就行。
    sleep 1
done
"

Maya nParticle简单脚本实现粒子堆叠

想要用一个一包糖粒堆在物体(对又是它..)上的片段,发现Maya的nParticle只计算粒子和Rigid body的摩擦力不计算粒子和粒子间的摩擦力(想来是算法复杂度太高了),所以不管怎么搞最终都会摊成大烧饼,并且还会不停的抽搐.. 查了下大概有两个相对简单的方法
Read More