whileループシェルスクリプト[閉じる]

whileループシェルスクリプト[閉じる]

私はwhileループを使用し、sleepコマンドを保持して60秒ごとにスクリプトを実行し、出力を別のファイルにリダイレクトするLinux(bash)シェルスクリプトを作成しました。数時間後にスクリプトを停止しましたが、実行は停止しませんでした。まだ実行中のスクリプトを削除し、出力ファイルが60秒ごとに更新されました。 Linuxで実行されているプロセスでsleepコマンドを表示できます。 kill -9 PIDコマンドを使用して休止PIDを終了してみました。役に立たない。私は本番サーバーにいます。誰でも助けることができますか?スクリプトの実行をどのように停止するのですか?

答え1

このsleepコマンドはスクリプトによって呼び出されます。コマンドが終了すると、sleepスクリプトは次のコマンドに進みます。たとえば、コマンドの親pid(PPID)を確認する必要がありますsleepps次に、その親PID(PPID)を見つけて、そのPIDに属するプロセスを終了します。

ps -ef |(head -1; grep sleep)
UID        PID  PPID  C STIME TTY          TIME CMD
lambert   4062  4041  0 08:47 pts/3    00:00:00 sleep 5

ps -p 4041
  PID TTY          TIME CMD
 4041 pts/3    00:00:00 myscript.sh

kill 4041

答え2

バックグラウンドで実行している可能性があります。

       $ jobs
       [1]+  Running                 sleep 100 &

       $ kill %1
       [1]+  Terminated              sleep 100

pkill と pgrep も使用できます。

すべてのインスタンスを停止するには killall を使用します。

答え3

'ps -ef |あなたのスクリプト名'タスクのpidを見つけます。次に「kill -9」を使用します。あなたのプロセス番号'プロセスを終了します。

関連情報