一:Linux计划任务at命令
1.1:at应用场景
在未来的某个时间点执行一次某个任务。
如果在企业管理中,有一个任务要在以后的一个时间里运行一次,那就使用at命令设置任务执行时间与执行的任务便可。
如果任务比较复杂,可将命令写成脚本并在at命令中调用。
一次性计划任务:at(临时的计划任务)
1.2:at服务的安装
[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>命令(临时要执行的任务!)
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作业列表
命令: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作业
命令:at -d或atrm 作业号
例:at -d 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:craontab应用管理
编辑
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
三:Linux进程控制(信号)
3.1:信号的概念解读
信号是linux系统为了响应某些状况而产生的事件。
进程收到信号后应该采取相应的动作 。
信号是进程之间传递信息的方式。
查看系统信号:
kill -l
Linux系统中常用信号:
信号 | 描述 |
---|---|
SIGHUP | 用户从终端注销,所有已启动进程都将收到该进程。系统缺省状态下对该信号的处理是终止进程。 |
SIGINT | 程序终止信号。程序运行过程中,按Ctrl+C键将产生该信号。 |
SIGQUIT | 程序退出信号。程序运行过程中,按Ctrl+\键将产生该信号。 |
SIGBUS和SIGSEGV | 进程访问非法地址。 |
SIGFPE | 运算中出现致命错误,如除零操作、数据溢出等。 |
SIGKILL | 用户终止进程执行信号。shell下执行kill -9发送该信号。 |
SIGTERM | 结束进程信号。shell下执行kill 进程pid发送该信号。 |
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
看到没有,如果是暂停进程会有log信息显示stopped的。 如上可以看到中括号里面有一个1数值就是shell分配的作业编号.
第一个启动的进程分配作业编号1
第二个启动的进程分配作业编号2
依此类推,如果shell会话中存在停止的作业,退出shell时会发出警告信号的.
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
四:Linux作业调度
4.1:jobs命令
查看当前有多少在后台运行的命令
[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
如果正在运行一个进程,而且在退出帐户时(exit)该进程还不会结束,那么可以使用nohup命令。该命令可以在退出帐户之后继续运行相应的进程。 nohup就是不挂起的意思( no hang up)。
格式
nohup command &
实例
nohup sleep 300 &