Linuxジョブスケジューリングメカニズム(10)

1つ:コマンドでのLinuxスケジュールタスク

1.1:アプリケーションシナリオで

将来の特定の時点特定のタスク実行ます

エンタープライズ管理で、後で実行するタスクがある場合は、atコマンドを使用して、タスクの実行時間と実行するタスクを設定します。

タスクがより複雑な場合は、コマンドをスクリプトに記述して、atコマンドで呼び出すことができます。

ワンタイムスケジュールタスク:at(一時スケジュールタスク)

1.2:サービスでのインストール

[root@huazai007 ~]# yum -y install at
[root@huazai007 ~]# systemctl start atd
[root@huazai007 ~]# systemctl status atd

1.3:atコマンドオプションの解釈

1.3.1:コマンド形式で

at 时间   回车
at>命令(临时要执行的任务!)
at>Ctrl+D结束

指定された時間は複数の形式をサポートします。

绝对时间:HH:MM       DD.MM.YY    MM/DD/YY

相对时间:now+3minutes   tomorrow +3days   
单位:minutes hours days weeks

模糊时间:noon(中午12点)  teatime(下午四点) midnight(午夜0点)
[root@huazai007 ~]# at 15:35
at> touch /tmp/1535.txt
at> <EOT>
job 2 at Sat Oct 24 15:35:00 2020

[root@huazai007 ~]# at 25.10.2020
at> touch /tmp/1024.txt
at> <EOT>
job 3 at Sun Oct 25 15:30:00 2020

[root@huazai007 ~]# at 10/25/2020
at> touch /tmp/aa.txt
at> <EOT>
job 4 at Sun Oct 25 15:31:00 2020

[root@huazai007 ~]# at now+10minutes
at> touch /tmp/bb.txt
at> <EOT>
job 5 at Sat Oct 24 15:42:00 2020

1.3.2:ジョブリストで表示

命令:at -l或atq
作业号  执行时间   队列(将不同作业放入不同队列分类) 用户
[root@huazai007 ~]# at -l
2	Sat Oct 24 15:35:00 2020 a root
3	Sun Oct 25 15:30:00 2020 a root
4	Sun Oct 25 15:31:00 2020 a root
5	Sat Oct 24 15:42:00 2020 a root
[root@huazai007 ~]# atq
2	Sat Oct 24 15:35:00 2020 a root
3	Sun Oct 25 15:30:00 2020 a root
4	Sun Oct 25 15:31:00 2020 a root
5	Sat Oct 24 15:42:00 2020 a root

1.3.2:スケジュールされたタスクの詳細コンテンツを表示する

 at -c 工作号

1.3.3:ジョブで削除

命令:at -d或atrm 作业号
例:at -d 2

2:Linuxスケジュールタスクcrontabコマンド

2.1:crontabのアプリケーションシナリオ

crondとcrontabは切り離せません。

crontabは、定期的に実行される命令を設定するために使用されるコマンドです。このコマンドは、標準の入力デバイスから命令を読み取り、後で読み取って実行できるように「crontab」ファイルに保存します。

crondはcrontabのデーモンです。

サービスを開始します。

systemctl start crond

2.2:crontabのスケジュールされたタスクの書き込み形式

cronスケジュールタスクを作成するための形式

格式:分  时  天  月  周 用户  任务

2.2.1:時間のワイルドカード(*)

*:对应的所有有效取值

3  * *   *   *     每小时的第3分钟
3  * *   *   7     每个周日的每小时的第3分钟
3  12 *   *   *     每天的12点3分
3  12 *   *   5     每周五的12点3分
3  12 6   *   *     每月6号的12点3分
3  12 6   7   *     每年7月6号的12点3分

2.2.2:個別の時点の値(、)

10 ,40  * * * * 每小时的第10分钟和第40分钟
10 ,40  * * * 2,5 每周二和周五的每小时的第10分钟和第40分钟

2.2.3:連続時点(-)

10  02  *  *  *  1-5  每周一到五的2点10分

2.2.4:頻度(/)

/:对应取值范围每多久一次
*/3  *  *  *  *      每3分钟

2.3:crontabアプリケーション管理

编辑
crontab –e
查看  
crontab -l     
移除所有(移除一条:编辑中修改)
crontab –r
管理其他用户的计划任务
crontab -u username

2.4:crondアプリケーションの例

59 23 * * * /etc/init.d/httpd restart 
表示每晚的23:59重启apache

45 4 1 * * /etc/init.d/httpd restart  
表示每月1日的4:45分重启apache

45 4 1,10,22 * * /etc/init.d/httpd restart  
表示每月1、10、22日的4 : 45重启apache

10 1 * * 6,0 /usr/local/apache/bin/apachectl restart  
表示每周六、周日的1 : 10重启apache

0,30 18-23 * * * /usr/local/apache/bin/apachectl restart  
表示在每天18 : 00至23 : 00之间每隔30分钟重启apache

* */1 * * * /usr/local/apache/bin/apachectl restart  
每一小时重启apache

* 23-7/1 * * * /usr/local/apache/bin/apachectl restart  
晚上11点到早上7点之间,每隔一小时重启apache

3:Linuxプロセス制御(信号)

3.1:信号の概念の解釈

シグナルは、特定の条件に応答してLinuxシステムによって生成されるイベントです。

プロセスは、信号を受信した後、対応するアクションを実行する必要があります。

シグナルは、プロセス間で情報を渡す方法です。

システム信号の表示:

kill -l

Linuxシステムの一般的な信号:

信号 説明
SIGHUP ユーザーが端末からログオフすると、開始されたすべてのプロセスがプロセスを受け取ります。システムのデフォルト状態でのこの信号の処理は、プロセスを終了することです。
シギント プログラム終了信号。プログラムの実行中にCtrl + Cを押すと、この信号が生成されます。
SIGQUIT プログラム終了信号。プログラムの実行中にCtrl + \を押すと、この信号が生成されます。
SIGBUSとSIGSEGV プロセスが不正なアドレスにアクセスしました。
SIGFPE ゼロによる除算、データオーバーフローなど、操作中に致命的なエラーが発生しました。
SIGKILL ユーザーはプロセス実行信号を終了します。シェルでkill-9を実行して、信号を送信します。
SIGTERM プロセス信号を終了します。この信号を送信するには、シェルでkill processpidを実行します。
SIGALRM タイマー信号。
SIGCLD 子プロセスは信号を終了します。親プロセスが信号を無視しないか、信号を処理しない場合、子プロセスは終了後にゾンビプロセスを形成します。
USR1 構成ファイルをリロードするようにアプリケーションに指示するために使用されます
INT(快速关闭)

TERM(快速关闭)
是请求彻底终止某项执行操作,它期望接收进程清除自给的状态并退出。

HUP(平滑启动)重新加载配置文件。

QUIT:从容关闭。

3.2:信号を生成する

3.2.1:プロセスを中断する

ctrl + cキーの組み合わせを使用してSIGINT信号を生成します

用sleep命令测试 
[root@wzp ~]# sleep 100 
如果不使用ctrl+c组合键,那么控制台就无法进行输入了,一直运行该sleep程序,通过这方法可以终止进程。 

3.2.2:プロセスを一時停止します

一部のプロセスは、終了するのではなく一時停止する必要があります。(プロセスを一時停止してバックグラウンドに置きます)
ctrl + zキーの組み合わせを使用して、SIGTSTP信号を生成できます。

[root@wzp ~]# sleep 100 
[1]+  Stopped                 sleep 100 

プロセスが一時停止されているかどうかを確認すると、停止を示すログメッセージが表示されます。上記のように、括弧内にはシェルによって割り当てられたジョブ番号である値1があります。

最初に開始されたプロセスにはジョブ番号1が割り当てられ、
2番目に開始されたプロセスにはジョブ番号2が割り当てられ
ます。シェルセッションで停止したジョブがある場合、シェルを終了するときに警告信号が発行されます。

3.3:フォアグラウンドプロセスとバックグラウンドプロセス

フォアグラウンドプロセスはフォアグラウンドによって制御される必要があるため、プロセスが終了したときにのみコマンドプロンプト状態に戻ることができます。

バックグラウンドはフォアグラウンド制御を必要とせず、コマンドプロンプト状態に戻って、起動後に他のプロセスの実行を続行できます。たとえば、Linuxの多くのデーモン、および一部のサービスプロセス。

&コマンドを使用して、ジョブをバックグラウンドで実行します

格式
命令  &

例:

vim   /etc/passwd  &

用cat命令查看/etc/passwd 文件

3.4:Linuxプロセス制御

システムで実行されているプロセスに関する詳細情報を表示します

ps -aux


システム内のプロセスの実行停止するkillコマンド

格式
kill   进程号
示例: kill  213

システム内のプロセスの実行を強制的に停止します

格式
kill -9  进程号	
示例: kill -9  2135

バックグラウンドジョブを終了する

格式
kill %作业号
示例:kill %2

4:Linuxジョブスケジューリング

4.1:ジョブコマンド

バックグラウンドで現在実行されているコマンドの数を確認する

[root@huazai007 ~]# jobs 
[1]-  已停止               sleep 100
[2]+  已停止               vim /etc/passwd

4.2:fg

実行を継続するには、バックグラウンドのコマンドをフォアグラウンドに転送します

fg 2
将后台作业号为2的作业调至前台继续运行

4.3:bg

バックグラウンドで中断されたコマンドを継続実行に変える

[root@huazai007 ~]# tailf /var/log/messages 
Oct 24 21:38:56 huazai007 chronyd[733]: Selected source 185.19.184.35

ctrl + zを実行して、プロセスを一時停止します(バックグラウンド、一時停止)

[root@huazai007 ~]# jobs 
[1]+  已停止               tailf /var/log/messages

[root@huazai007 ~]# bg 1
[1]+ tailf /var/log/messages &
[root@huazai007 ~]# jobs 
[1]+  运行中               tailf /var/log/messages &

将后台暂停的作业变成后台继续执行

4.4:nohup

プロセスが実行中であり、アカウントを終了(終了)してもプロセスが終了しない場合は、nohupコマンドを使用できます。このコマンドは、アカウントからログアウトした後も、対応するプロセスを実行し続けることができます。nohupは、電話を切らないことを意味します。

格式
nohup command &

インスタンス


nohup sleep 300 &

おすすめ

転載: blog.csdn.net/zhangshaohuas/article/details/109146256