画面セッション内で実行され、スクリプトを10分ごとに連続的にループする(終了しない)シェルスクリプトがあります。スクリーンセッションを開始し、シェルスクリプトを実行し、ブート時にそれからデタッチする方法を考えていました。
今私はこれを実行します:
screen
sh /var/www/scripts/screen.sh
ctrl+ad (to detach)
現在、Minecraftにはスクリーンスクリプトを使用しています。
これは私がそれを行う方法です:screen -dmS
。
スクリプトの正確な行:
as_user "cd $MCPATH && screen -dmS $SCREEN $INVOCATION"
as_user "screen -list | grep '\.$SCREEN' | cut -f1 -d'.' | tr -d -c 0-9 > $pidfile"
おそらくscreen -dm
を使用するだけで十分かもしれません。
「ブート時に実行する」限り、init.dスクリプトを作成できます。
Sudo vi /etc/init.d/screensh
:
#!/bin/bash
# /etc/init.d/screensh
### BEGIN INIT INFO
# Provides: screen.sh
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Screen.sh
# Description: This runs a script continuously in screen.
### END INIT INFO
case "$1" in
start)
echo "Starting screen.sh"
screen -dm sh /var/www/scripts/screen.sh
;;
stop)
echo "Stopping screen.sh"
PID=`ps -ef | grep screen.sh | grep -v grep | awk '{print $2}'`
kill -9 $PID
;;
restart|force-reload)
echo "Restarting $screen"
PID=`ps -ef | grep screen.sh | grep -v grep | awk '{print $2}'`
kill -9 $PID
sleep 15
screen -dm sh /var/www/scripts/screen.sh
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
そして、Sudo update-rc.d screensh defaults
を実行します。
それを試してみて、うまくいかない場合は試してみてください。しかし、実際に試してみるためのテストシステムはまだないはずです。