shell拓展
针对带有while的shell脚本,我们希望它能一直运行,可上述情况下,脚本会占用我们的窗口(称为在前台执行),我们希望把脚本放至后台执行
将脚本放至后台执行
普通做法
sh 脚本名称.sh &
shell脚本虽然以转至后台运行,但仍然影响正常使用该窗口
窗口关闭后,进程终止
解决方法
nohup sh 脚本名称.sh &
窗口关闭,进程还在
后台脚本输出信息默认存储在nohup.out中
关闭后台进程
标准输出(1)、标准错误输出(2)、重定向(>或者>>)
标准输出
可以使用文件描述符1表示
标准错误输出
可以使用文件描述符2表示
针对以上两种输出,我们可以使用重定向操作把输出信息保存到文件中
把标准输出保存到文件中
命令 1>文件名
把ll执行结果存储到a.txt文件中
右箭头会覆盖文件只带的内容
想要往文件中追加内容,需使用两个右箭头
命令 1>>文件名
标准输出存储中1可省略
把标准错误输出保存到文件中
案例
nohup 执行操作 脚本名称.sh >/dev/null 2>&1&
/dev/null为Linux中的“黑洞”,任何信息放进去都找不到
应用场景
需要脚本一直位于后台运行且对输出没有保留的需求
Linux中的定时器crontab
针对周期性,需要被执行的命令,可以选择使用定时器定时调度执行
* * * * *user-name command
- 第一个*:分钟(0~59)
- 第二个*:小时(0~23)
- 第三个*:月中的第几天(1~31)
- 第四个*:月份(1~12)
- 第五个*:星期中的第几天(0~6)
- user-name:用户名
- command:需要执行的命令
使用crontab前需要先确定crontab是否能够正常运行
查看crontab服务状态
systemctl status crond
默认情况下,该服务属于开启状态
启动/停止crontab服务
systemctl start/stop crond
添加定时任务
vi /etc/crontab
新添需运行的脚本
要想获取执行脚本信息,需要使用重定向
保存,查看showtime.txt信息
如果我们执行文件中没有输出信息怎么办呢??
查看crontab执行日志
tail -f /var/log/cron
crontab命令每一次执行,都会往/var/log/cron中写入日志,由此我们可以通过查看日志的方法检查crontab是否顺利执行
取消crontab任务
直接在/etc/crontab中注释掉执行命令即可
注意
如果设置任务每七分钟执行一次,那么任务分别会在每个小时的0分,7分,14分,21分等时间点执行,而不是通过编辑完成时间往后延迟七分钟完成