作业管理
Linux的作业控制
前台作业:通过终端启动,且启动后一直占据终端
后台作业:可通过终端启动,但启动后即转入后台运行
让作业运行于后台
(1)运行中的作业: Ctrl+z
(2)尚未启动的作业: command &后台执行
后台作业虽然被送往后台运行,但其依然于终端相关;退出终端,将关闭后台作业。
将后台作业送往后台运行,剥离于终端的关系
nohup command &> /dev/null &
screen; command
查看当前终端所有作业:jobs编号
作业控制:
fg[后台编号]:把指定的后台作业调回前台
bg[后台编号]:让送往后台的作业在后台继续运行
kill[后台编号]:终止指定的作业
并行运行:同时运行多个进程,提高效率
方式1:将多条命令写进脚本并在命令尾部加&,运行脚本
方式2:(command1 &);(command2 &);(command3 &)
方式3:{command1 & command2 & command3 &}
执行长时间任务时防止网络中断造成操作中断
方法1:剥离命令与终端的联系,终端中断后进程将转移至1进程上,再恢复
nohup COMMAND &>/dev/null &
方法2:开启一个screen会话,重新进入后screen -r即可恢复
screen;COMMAND;screen -r 恢复
—————————————————————————————————————————-
同步服务器时间
ContOS6
/tec/ntp .conf #时间同步配置文件
server IP iburst #配置文件里添加同步IP服务器
ntpdate IP #和服务器时间同步
service ntpd start #开启同步时间服务
chkconfig ntpd on #开机自动启动
ContOS7
/etc/chrony.conf #时间同步配置文件
server IP iburst #配置文件里添加同步IP服务器
ntpdate IP #和服务器时间同步
systemctl start chronyd #开启同步时间服务
systemctl enalbe chronyd #开机自动启动
—————————————————————————————————————————-
任务计划
Linux任务计划,周期性任务执行
未来的某时间点执行一次任务:at,batch(系统自行选择空闲时间去执行此处指定的任务)
systemctl status atd #ContOS7查看任务是否开启
周期性运行某任务:cron
cronie包:主程序包
cronie-anacron包:cronie的补充程序,用于监控cronie任务执行状况,如果cronie中的任务在过去该运行时间点未能正常运行,则anacron会随后启动一次
croutabs包:包含CentOS提供系统维护任务
systemctl status crond #ContOS7开启计划任务服务
service crond status #ContOS6开启计划任务服务
at命令:未来的某时间点执行一次任务
语法:at [option] time
常用选项
-V: 显示版本信息
-l: 列出指定对垒中等待运行的作业;相当于atq
-d: 删除指定的作业
-c: 查看具体作业任务
-f /path/from/somefile: 从指定的文件中读取任务
time: 定义什么时候进行at 这项任务的时间
-m: 当任务被完成之后,强制给用户发送邮件,即使没有标准输出
/etc/at.deny #计划黑名单
/etc/at.allow #计划白名单(默认不存在)
/var/spool/at #计划任务存放目录
小结
作业执行命令的结果中的标准输出和错误以邮件通知给相关用户
尽量计划任务不要带有标准输出信息,以免过多产生垃圾内存
如果没有白名单的时候 除了黑名单的用户都能执行计划任务
如果白名单存在,只有白名单用户才能执行计划任务
如果黑名单里的用户和白名单重复,以白名单为基准
如果两个文件都不存在,只有root可以执行 at 命令
/etc/crontab:系统维护作业
计划任务的格式
# * * * * * user-name command to be executed
分钟 小时 日 月 周 身份 命令
时间格式
@reboot 重启时执行
@yearly 0011*
@annually 0011*
@monthly 001**
@weekly 00**0
@daily 00***
@hourly *****
cronteab命令:用户cron任务
计划任务的格式
# * * * * * command to be executed
分钟 小时 日 月 周 命令
语法:crontab []
参数
-l 列出所有任务
-e: 编辑任务
-r: 移除所有任务
-i: 同-r一同使用,以交互式模式移除指定任务
-u user 仅root可运行,指定用户管理cron任务
控制用户执行计划任务:/etc/cron.{allow,deny}#黑名单,白名单与at相同
日志目录:/var/log/cron
run-parts [路径]:指定路径下所有脚本都会运行
anacron系统
运行计算机关机时cron不运行的任务,CentOS6以后版本取消anacron服务,由crond服务管理
对笔记本电脑、台式机、工作站、偶尔要关机的服务器及其它不一直开机的系统很重要对很有用
配置文件:/etc/anacrontab,负责执行/etc/ cron.daily /etc/cron.weekly /etc/cron.monthly中系统任务。
字段1:如果在这些日子里没有运行这些任务……
字段2:在重新引导后等待这么多分钟后运行它
字段3:任务识别器,在日志文件中标识
字段4:要执行的任务
由/etc/cron.hourly/0anacron执行
当执行任务时,更新/var/spool/anacron/cron.daily 文件的时间戳
sleep命令:休眠
语法:sleep NUMBER[SUFFIX]…
SUFFIX:
s: 秒, 默认
m: 分
h: 小时
d: 天
主要用于写在脚本里每多长时间执行一次命令,或等待前面运行程序过程
总结
一次性作业使用at,重复性作业使用crontab
没有被重定向的输出会被邮寄给用户
根用户能够修改其他用户的作业
对于cron任务来说,%有特殊用途;如果在命令中要使用%,需要转义或使用单引号括起来
系统计划任务写在配置文件里只能cat /etc/crontab 查看
cronteab -l命令只能查看使用-e 选项创建的计划任务
相当于cat /var/spool/cron/
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/97617