ホーム フォルダー (pi) に次のスクリプトがあります: server.py。
ログインして手動で実行する必要がないように、Debian の起動時にこのスクリプトを実行するにはどうすればよいですか?
答え1
この回答が最初に書かれた時点では、Debian (デフォルトでインストールされた) はバイナリで「SysV」rc スクリプトを使用していましたstart-stop-daemon
。ファイルには、rc スクリプトのベースとして使用できるサンプル スクリプトがありました/etc/init.d/skeleton
。rc スクリプトが完成し、実行可能としてマークされると、コマンドをupdate-rc.d
使用して、必要な実行レベルに追加できます。
年月が経つにつれ、物事は変化してきました。特に 2014 年には、次の 2 つの点が変わりました。
- この
/etc/init.d/skeleton
スクリプトは、(5)マニュアルページの例のスクリプトに置き換えられinit-d-script
、2018年にのみ利用可能なベースは完全に廃止されました。スケルトンの内容も大幅に変更され、呼び出しを記述したり、変数の割り当て以上のものを記述する/etc/init.d/skeleton
必要がなくなりました。(start-stop-daemon
https://unix.stackexchange.com/a/480897/5132。 - インストールされたデフォルトが systemd に変更されたため、代わりに systemd サービス ユニット ファイル (実行可能としてマークする必要はありません) を記述し、 で有効にする必要がありました
systemctl enable
。ただし、ユニット ファイルの例はありませんでした。(参考:。
したがって、2018年現在、設定で(少なくとも)スクリプトに名前を付ける(絶対パス名を使用)systemdサービスユニットファイルを作成する必要がありますExecStart
。質問では特定の方法が示されていませんが、設定を使用して、User
スクリプトをスーパーユーザーではなくユーザーアカウントの保護下で実行したい場合があります。そして、かもしれない質問に指定されていない事項にもよりますが、スクリプトを呼び出す相対的な順序と、ホーム ディレクトリが別々にマウントされている場合はホーム ディレクトリの (自動) マウントを調整する必要があります。
答え2
su -c 'SCRIPT' USER
の中に入れる/etc/rc.local
。