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 &