Ubuntu 15.04では、次のファイルがあります:/ usr/local/bin/myscript(これは私が作成したスクリプトです)。
このコマンドを自分のアカウントで実行すると、rootユーザーとして必要なことを実行できます:Sudo/usr/local/bin/myscript
/ usr/local/bin/myscriptをマシンの起動時に実行しますが、rootユーザーとして実行します(Sudoコマンドを実行しているかのように、パスワードを入力する必要はありません)。これはUbuntu 15.04ではどのように行われますか?
Ubuntuバージョン15を使用しています。systemdを使用しています。 /etc/rc.local
は、せいぜいsystemdの下位互換性メカニズムです。そして、下にハイパーリンクされたAskUbuntu質問の混乱が示すように、それを使用すると、ひどく間違ってしまう可能性があります。したがって、適切なsystemdサービスユニットを作成します。
ローカル、システム、パッケージ以外のサービスユニットを作成しているため、ユニットファイルは/etc/systemd/system/
にあり、そこにそのタイプのユニットが配置されています。それを/etc/systemd/system/myscript.service
と呼びましょう。を含む:
[Unit] Description = user2580's script Documentation = https://unix.stackexchange.com/questions/202698/ [Service ] Type = simple ExecStart =/usr/local/bin/myscript [Install] WantedBy = multi-user.target
スクリプトが「デーモン化するために」フォークする場合は、それを行わないようにしてください。それは完全に不要です。
systemctl preset myscript.service
を実行して、ブートストラップ時に自動的に開始します。systemctl start myscript.service
を実行して、今すぐ手動で開始します。systemctl status myscript.service
を実行して、ステータスを確認します。これは、Xサーバーと通信できるコンテキストでスクリプトを実行しないことに注意してください。 Xサーバーが起動する前に実行することもできます。しかし、Xクライアントであるための要件や、HOME
環境変数のような初心者を悩ます他の複雑さについては言及していません。そして、それらはいずれにせよ、他の質問の主題です。それで、それはそのままにしておきます。
/etc/rc.local
のスクリプトを呼び出す行を追加するだけです。このファイルは、実行される最後のinitスクリプトです。
/etc/rc.local
が実行可能であり、rootが所有していることを確認してください。