ログアウトした後も実行したい実行可能ファイル(Unityで作成したサーバー)があります。すべてのインターネットでは、nohup
どちらか一方または両方を介してdisown
これを行うことができるはずです。しかし、これはうまくいきません。私は以下が欲しい:
nohup /usr/bin/myexecutable &
disown -h
この時点でプロセスのリストを確認してみると、私のプロセスが実行されているのです。その後、exit
sshで再度ログインしてプロセスリストを再確認しましたが、消えました。フラグを使用または使用せずdisown
、フラグを使用または使用せずに試しましたが、-h
シェルを終了するときにプロセスが消えるのを防ぐことはありません。
screen
orを使用してこれを行うことはできますが、tmux
技術的な知識のない従業員がログインして実行できる簡単な起動スクリプトを設定しようとしています。どんなアイデアがありますか?
(私はUbuntu 16.04.6 LTSを実行しています。)
編集:誰かが提案しました。この問題しかし、@mathsyouthのコメントのようにdisown
私には効果がありません。この質問に対する唯一の答えを書いた@Foxは、「使用中のプログラムがまだ終了し、シェルの終了時に拒否されれば、これは別の問題のようです」と述べました。 (上記のように、彼の使用提案はscreen
私のユースケースには役に立ちませんでした。)
答え1
tmuxやscreenはオプションではないので、systemdを使用することをお勧めします。たとえば、次のようにお気に入りのエディタ(nano、vimなど)を使用してファイル(sudoなど)を作成します。
sudo nano /etc/systemd/system/myexecuteable.service
少なくとも次の内容を含める必要があります。
[Unit]
Description=start my executable after multi-user target
[Service]
Type=simple
ExecStart=/path/to/my/executable
[Install]
WantedBy=multi-user.target
今、2つの可能性があります。
- 実行可能ファイルは、システムの起動時に開始する必要があります。その後、発行する必要があります
sudo systemctl enable myexecutable.service
- 手動で起動しようとしています。その後、発行
sudo systemctl start myexecutable.service
最初のケースでは、「アクティブ化」は「開始」を意味しないため、追加の「systemctl start」コマンドを実行してテストする必要があるかもしれません。
セッションを終了してもサービスは実行されます。実行可能ファイルに出力がある場合(bashファイルで「ロガー」を使用)、いつでも次のものを使用できます。journalctl -u myexecutable.service