2016年2月2日火曜日

cron でOS起動時にプログラムを走らせる.@reboot shell.sh

前回,前々回で,デスクトップPCを Wake on LANで起動する方法,グローバルの固定IPが無くても自宅サーバーに外部から接続する方法を紹介した.

【WM×LI】Wake On LAN を使って Optiplex 3020 を起動する.
【WM×LI】固定のグローバルIPが無くても外部から自宅サーバーにログインする.


これらによってやりたいことはほぼ完成したが,最後に残った問題がサーバーの再起動だ.


予期せず接続が切れてしまった時の対策としては autosshコマンド が使えるが,サーバーの再起動時にはもう一度 autosshコマンドを叩く必要がある.


しかし遠隔地にいる時に,サーバーを再起動してしまったら,私の環境ではログインできずにそれっきりになってしまう.


今回はその対策として,cron を使ったOS起動時のプログラムの自動起動を紹介する.


cron と言えば,特定の時刻に好きなプログラムを自動で走らせるためのソフトウェアで,主にバックアップやOSのアップデートなどに使える便利機能だが,時刻や曜日を指定するところに「@reboot」と記入してやると,OSの起動時に一度だけプログラムを走らせることができるようになる.


そこで次のようなスクリプトを用意して,

/home/mirasuni/bin/shell.sh
#!/bin/bash

autossh -f -N user@123.123.123.123 -R 9022:192.168.100.1:22

exit 0


cron に以下の一行を追加する.
@reboot /home/mirasuni/bin/shell.sh


ちなみに,cron の編集には以下のコマンドを用い,直接エディタで開いたりしない.
$ crontab -e


また,スクリプトに実行権限を与えることも忘れずに行う.
$ chmod +x /home/mirasuni/bin/shell.sh


試しに再起動してみてうまく動いていれば設定完了.


これで,いつでもどこでもサーバーにアクセスして,デスクトップPCの電源を入れて,プログラムを走らせる環境が,本当の意味で完成した.


0 件のコメント:

コメントを投稿