Ubuntuサーバー14からバージョン15にアップグレードしました。アップグレード後にupstartスクリプトを動作させるのに問題があり、systemdが新しいデフォルトであると読みました。私はLinuxの専門家とは程遠いので、簡単に言ってください:-)
これが私の以前のスクリプトです。
description "NZBGet upstart script"
setuid robert
setgid robert
start on runlevel [2345]
stop on runlevel [016]
respawn
expect fork
script
exec nzbget -D
end script
pre-stop script
exec nzbget -Q
end script
systemd wikiページの始まりに基づいて、そこに提供されているテーブルを使用して、新しいsystemdサービスファイルでできる限り密接にマッピングしました。
[Unit]
Description=NZBGet Service
[Service]
Type=forking
ExecStart=/usr/local/bin/nzbget -D
ExecStop=/usr/local/bin/nzbget -Q
Restart=on-failure
このファイルはにあります/home/robert/.config/systemd/user/nzbget.service
。サービスを手動で開始するために、私はやっています:
$ systemctl --user start nzbget
これはうまく機能します。ただし、SSHセッションからログアウトすると、サービスがシャットダウンします。また、起動時またはユーザーログイン時に起動しません。upstartサービスと同じように動作するようにします。起動時に起動し、常に実行し、特定のユーザーとして実行するようにします。
この構成を取得するには何をする必要がありますか?
systemctl enable
コマンドでサービスファイル名への絶対パスを指定する必要がありましたが、これは最初は明らかではありませんでした。また、有効にすると、[Install]
セクションの欠落に関する警告が表示されます。私はそれを無視しましたが、ブート時に起動する機能に影響するかどうかはわかりません。