web-dev-qa-db-ja.com

Ubuntu 15.04マシンの起動時にrootユーザーとしてプログラムを実行するにはどうすればよいですか?

Ubuntu 15.04では、次のファイルがあります:/ usr/local/bin/myscript(これは私が作成したスクリプトです)。

このコマンドを自分のアカウントで実行すると、rootユーザーとして必要なことを実行できます:Sudo/usr/local/bin/myscript

/ usr/local/bin/myscriptをマシンの起動時に実行しますが、rootユーザーとして実行します(Sudoコマンドを実行しているかのように、パスワードを入力する必要はありません)。これはUbuntu 15.04ではどのように行われますか?

4
user2580

そして今、systemdの答え。

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環境変数のような初心者を悩ます他の複雑さについては言及していません。そして、それらはいずれにせよ、他の質問の主題です。それで、それはそのままにしておきます。

参考文献

14
JdeBP

/etc/rc.localのスクリプトを呼び出す行を追加するだけです。このファイルは、実行される最後のinitスクリプトです。

/etc/rc.localが実行可能であり、rootが所有していることを確認してください。

2
dr_