PIDでプロセスを再起動しますか? [閉鎖]

PIDでプロセスを再起動しますか? [閉鎖]

私はPIDを持っていて、再起動したいと思います。プロセスはメインから始まり、新しいPIDを取得します。

pidバイナリパスを使用せずにバイナリパスのみを使用してexecこれを行うにはどうすればよいですか?

ベストアンサー1

記載されているようにここ、再起動信号がありません。そのプロセスをやり直す必要があります。これが一般的な場合は、このプログラムをサービスに入れるか、単純なループスクリプトに入れて、この問題をより有機的に処理できるようにする必要があります。

しかし、別の不安定なbashパイプラインが必要な場合はここにあります。これにより、セキュリティコンテキストなしで実行ユーザーとしてプログラムが再起動されます(したがって、信頼できないエントリではこのメソッドを呼び出さないでください)。

restart_pid() {
  # First we need to find the program's arguments
  SAVED_COMMAND="$(while IFS= read -r -d $'\0' f; do printf '%q ' "$f"; done < /proc/$1/cmdline)"
  # Then we need to cd into its directory so that we stay as true to the intial conditions as possible
  cd /proc/$1/cwd
  # Now kill the process
  kill $1
  # Now we can restart the process
  eval $SAVED_COMMAND
}

このコマンドを実行した後、シグナルを送信する権限を持つすべてのオブジェクトをrestart_pid <pid>呼び出すことができます。<pid>

eval $SAVED_COMMAND & disownタスクをバックグラウンドに置くには、最後の行を 。

おすすめ記事