Ubuntu Server 18.04 の起動時にスクリプトをロードしようとしています。.service
スクリプトは にインストールされており/etc/systemd/system
、以下を実行できます。
service my-service start
そして:
service my-service stop
しかし、起動時に実行しようとすると(Web によると、次のように実行する必要があります):
service my-service enable
システムは次のように応答します:
my-service: unrecognised service
Web で検索すると、18.04 には適用されない古いバージョンの Ubuntu で実行する方法しか示されず、答えを見つけるための正しい用語を判断することができません。
スクリプト:
# filename: /etc/systemd/system/my-service.service
[Unit]
Description=My Service
After=network.target
After=mysqld.service
[Service]
User=the-user
WorkingDirectory=/home/the-user/path-to-script
ExecStart=/home/the-user/path-to-script/start.sh
SuccessExitStatus=0
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
私の質問は、何が間違っているのかということです。起動時にこのサービスを開始するにはどうすればよいのでしょうか。
答え1
実際のコマンドは次のようsystemd
になります。
sudo systemctl enable my-service
参考までに、ユニット ファイルを通常のユーザー (自分自身など) に対して実行する場合、ユニット ファイルにメイン システム ディレクトリを使用する必要はありません。次のようなディレクトリに作成できます。
~/.config/systemd/user/
次に、次の操作を実行します。
systemctl --user enable my-service
これにより、sudo
コメントで指摘されているように、ユーザーごとにディレクティブsystemd
のインスタンスを実行する場合は、User
答え2
注記:
同じエラーが発生する他のインスタンスでは、
コマンドservice
は物体初め !
service foo start
のsystemctl
コマンドは逆の動作をします:
systemctl start foo
また、サービスでは「.service」を追加できませんが、systemctl を使用する場合は追加できます。