Linux中的shell---2

154 阅读2分钟

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分等时间点执行,而不是通过编辑完成时间往后延迟七分钟完成