17.04(Zesty Zapus)を実行し、スタートアップスクリプトを開始しようとしましたが、実行されていないことに気付きました。その後、/etc/init
にスクリプトがたくさんある場合でも、upstartがインストール済みパッケージとしてリストされていないことに気付きました。どうやら、cronにタイプミスを導入しても起動に影響しないため、実行されていません。
Upstartスクリプトを実行するにはどうすればよいですか? upstartをインストールするか、systemd-layerを介して実行しますか? /etc/init
内の他のスクリプトが突然実行されたときにupstartをインストールすると何かが壊れますか?
上記の手順は美しく機能しました。ここで私の答えにいくつかの詳細な手順を作成しました。
私の環境は次のとおりです
まず、foo.serviceファイルを作成する必要があります。
[Unit]
Description=FooServer
[Service]
Restart=on-failure
WorkingDirectory=/path/to/your/working/directory/where the foo lives
ExecStart=/what/process/will call foo eg: in my case I used gunicorn app:app
ExecReload=/bin/kill -HUP $MAINPID
KillSignal=SIGINT
[Install]
WantedBy=multi-user.target
「=」記号の左側にあるすべての単語の意味と(以前の)upstartの同等の用語は、リンクにあります https://wiki.ubuntu.com/SystemdForUpstartUsers
ファイルの準備ができたら、「foo.service」という名前を付けましょう(.service拡張子が重要です)
ファイルを/lib/systemd/system
に配置する必要があります
その後、呼び出してサービスを有効にする必要があります
systemctl enable foo
これにより、すべてのサービスパーティーが存在する一部のルートアクセスベースのフォルダーにシンボリックリンクが作成されるため、ルートパスワードの入力が求められます。
あなたが手間をかけずにここまで到達した場合、あなたは良いです。したがって、サービスが作成されます。呼び出して開始します
Sudo service foo start
systemctl status foo
はステータスを表示しますSudo service foo stop
はサービスを停止します
私は今日一日中Gunicornページにいて、さまざまなオプションをすべて試しましたが、どれも機能せず、最終的にはこのオプションが機能しました。 @Zannaと@Nicklas Karlsson本当にありがとう
/etc/init
にスクリプトが含まれている場合でも、サーバーバージョンOOTBにはupstartは含まれていないようです(少しわかりにくい)。
Upstartスクリプトは、ほとんど pstartユーザー向けのsystemdのUbuntu wikiページ をガイドとしてsystemdユニットファイルとして書き直し、通常の方法で有効にしました。