現在実行中のcrontabタスクを表示/停止するにはどうすればよいですか?


20
  1. 進行中のcrontabタスクを表示するにはどうすればよいですか?
  2. 進行中のcrontabタスクを手動で停止するにはどうすればよいですか?

現在実行中のcronプロセスを確認することに関する[この]質問はありますか?

はい

プロセスを手動で強制終了する方法の1つは、pkillを使用することです

私はpkill / killallについて考えていましたが、crontabファイルの私のコマンドのいくつかはそれぞれです!つまり、コマンドが終了すると、次のコマンドが開始されます!例えば:

sudo crontab -e
00 10 * * * /usr/bin/wget LINK ; shutdown -h now

だから、私が殺すwgetと、コンピュータの電源が切れます!!! -> cronタスクの一部ではなく、完全に終了したい!

次のpkill問題:スクリプトはどうですか?(いくつかのbashスクリプトをにインポートしましたcrontab -e)->sudo pkill ???


現在実行中のcronプロセスの表示に関する質問はありますか?またはcronジョブのリスト?これについてより明確になるように質問を編集してください。実行中のcronジョブ行くを停止するには(askubuntu.com/q/272419/66980
モハマドEtemaddar

編集済み; 1.はい、現在実行中のcronプロセスを監視していますか?(プロセスをフォアグラウンドにしたい); 2.次に、手動で停止しますか?!(crontabスケジュールからではありません)
ミニ

質問に追加情報を追加する最良の方法は、編集ボタンを使用して質問を編集することです。その方がわかりやすく、コメントは主に二次的な一時的な目的のためのものです。コメントはさまざまな状況で削除されます。あなたの質問にとって重要なことは、質問自体の中にあるべきです。
ガントベルト

回答:


42

まず、crontabで1行につき1つのコマンドのみを使用します。このcrontab行を変更します。

00 10 * * * /usr/bin/wget LINK ; shutdown -h now

次のようになります:

00 10 * * * /path/to/my/crontab/script1.sh

/path/to/my/crontab/script1.shこのコンテンツで作成します:

#!/bin/bash
/usr/bin/wget LINK
shutdown -h now

もちろん、実行許可を与えることを忘れないでください:

chmod +x /path/to/my/crontab/script1.sh

第二に、次の出力で、便利で読みやすい形式で、実行中のcrontabタスクを確認できます。

ps -o pid,sess,cmd afx | egrep -A20 "( |/)cron( -f)?$"

これらは、次のような最初の行に表示されます。

1108  1108 cron
4288  1108 \_ CRON
4289  4289     \_ /bin/sh -c /path/to/my/crontab/script1.sh
4290  4289         \_ /bin/bash /path/to/my/crontab/script1.sh
4295  4289             \_ /usr/bin/wget LINK

最初の列はPID、2番目はセッションID、3番目はcronによって開始されたコマンドです。セッションIDを使用して、特定のcronタスクに関連するすべてのプロセスを強制終了できます。したがって、上記の例では、セッションID 4289を強制終了する必要があります。

pkill -s 4289

1
「crontabのタスクを実行する」コマンドを実行しているとき、私はこれを取得:sh ps: cmd: keyword not found ps: illegal argument: afx
AlecRust

だからcronは彼のプロセスを表示するための「便利な」方法を提供していませんか?
-Cirelli94

@alecrust:これを試してくださいps -o pid,sess,cmd -afx | egrep "( |/)cron( -f)?$"
-Bulrush

0

プロセスを手動で強制終了するには、1つの方法を使用しますpkill。pkillは、名前に次のパターンがあるすべてのプロセスを停止します。たとえば、すべてのwgetプロセスを停止するには、次を使用します。

sudo pkill wget

私はpkill / killallについて考えていましたが、crontabファイルの私のコマンドのいくつかはそれぞれです!つまり、コマンドが終了すると、次のコマンドが開始されます!例:sudo crontab -e=> 00 10 * * * /usr/bin/wget LINK ; shutdown -h now=>したがって、wgetを強制終了すると、コンピューターの電源がオフになります!!! -> cronタスクの一部ではなく、完全に終了したい!次のスキルの問題:スクリプトはどうですか?(bashスクリプトをにインポートしましたcrontab -e)->sudo pkill ???
ミニ

0

cronjobをこのように変更します

00 10 * * * /usr/bin/wget LINK && shutdown -h now

これは機能するはずです。なぜなら、&&最初のコマンドが正常に終了したとき(コンソール/システムにステータス0を返す)、2番目のコマンドが実行されるだけだからです。別の値を返してから0)を返すべきです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.