Linux Shell 编程基础详解——吐血整理,墙裂推荐! (2)

cron是系统的调度进程,可在无人干预的情况下运行作业,通过crontab的命令允许用户提交,编辑或者删除相应的作业。
每个用户都可以有一个crontab文件来保存调度信息,通过该命令运行任意一个shell脚本或者命令
在大的系统中,系统管理员可以通过cron.deny和cron.allow这两个文件来禁止或允许用户拥有自己的crontab文件

crontab的域
第1列 分钟0~59
第2列 小时0~23(0表示子夜)
第3列 日1~31
第4列 月1~12
第5列 星期0~6(0表示星期天)
第6列 要运行的命令

crontab格式: 分<>时<>日<>月<>星期<>要运行的命令
<>表示空格

note:如果要表示范围的话,如周一到周五,可以用1-5表示
如果要列举某些值,如周一、周五,可以用1,5表示

例1:

30 21 * * * /apps/bin/cleanup.sh

例2:

0,30 18-23 * * * /apps/bin/dbcheck.sh

crontab的命令选项
格式:crontab [ -u user ] -e -l -r
其中

-u 用户名,如果使用自己的名字登陆,就不用使用-u选项

-e 编辑crontab文件

-l 列出crontab文件中的内容

-r 删除crontab文件

创建一个新的crontab文件

1 创建一个文件,建议名为cron,例shifengcron,在文件中假如如下内容:

0,10,20,30,40,50 * * * * /bin/echo "hello boy"

保存退出
2 提交刚刚创建的cron文件shifengcron

$ crontab shifengcron $ ls /var/spool/cron/ 是否生成文件shifengcron 列出crontab文件 $ crontab –l $ crontab –l > $HOME/mycron 可以通过这种方法对crontab进行备份 编辑crontab文件 $ crontab -e

修改后保存退出,cron会对其进行必要的完整性检查

删除crontab文件 $ crontab –r crontab文件的恢复

如果误删了crontab文件,假设在$HOME目录下还有备份,可以将这个备份文件拷贝到/var/spool/cron/ username是用户名,如果由于权限问题无法拷贝,可以使用

$ crontab <filename>

note:filename是备份的crontab文件的名字

2.22 at

at命令允许用户向cron守护进程提交作业,使其在稍后的时间运行,这个时间可以是10min以后,也可能是几天以后,但如果时间比较长,建议还是使用crontab
格式:at [ -f script ] [ -m -l -r ] [ time ] [ date ]

-f script 是要提交的脚本或命令

-m 作业完成后给用户发邮件

-r 清除某个作业,需要提供作业标识id

time 作业执行的时间格式可以为:HH. MM ,HH:MM

H代表小时,M代表分钟

date 日期格式可以是月份数或日期数,而且at命令可以识别诸如today,tomorrow这样的词

可以通过命令行方式或者at命令提示符方式来提交作业,一般来讲,如果提交多个命令,可以使用at命令提示符;如果提交的是shell脚本,可以使用命令行方式
例:提示符方式:

$ at 01:15 at > echo “hello” at > echo “boy” >/home/wuxh/at.log at > <EOT>

note:EOT是Ctrl+D,任务执行后,会给当前用户发送邮件,通过mail命令可以查看相关信息,也可以将信息重定向到文件

例:提交shell脚本方式

$ at 3:00pm tomorrow –f /home/wuxh/hello.sh

note:该脚本将在明天下午3点运行,使用脚本方式,要加参数-f

列出at任务,格式:at -l
例:

$ at -l 5 2021-01-17 11:20 a root

note: 第一个是作业标识id;第二个是日期;第三个是时间;a代表at;第四个代表创建任务的用户
清除at任务
格式:at -r

$ at –r [ job no]

例:$ at -r 5

note:不接job no将清除所有未执行的任务,接具体job id将清楚对应的任务

2.23 &

当在前台运行某个作业时,终端被该作业占据;而当它在后台运行时,它不会占据终端
可以借助&命令把作业放到后台执行
格式: 命令 &

注:
1 .需要用户交互的命令不要放在后台执行,否则机器一直等待
2 .后台程序在执行时,执行结果仍然会输出到屏幕,干扰我们的工作,建议将这样的信息重定向到某个文件
即:command > out.file 2>&1 &
将标准输入错误输出都定向到一个out.file的文件中
例:$ find /etc/ -name "hello" -print >find.dt 2>&1 &

2.3 引号 "" 双引号
`   反引号  
''   单引号  
\   反斜线  
2.31 双引号

可引用除字符$,`,\外的任意字符或者字符串,对$,`,\敏感

例1:

$ echo "hello" hello

例2:

$ echo "$$" 8311 ///想输出字符$$ 结果看到的是数值8311 $ echo "\$$" //对特殊字符需要反斜线屏蔽其特殊含义 $$ //得到想要的结果

例3:

$ echo "`V_V`" //想输出`V_V`字样 结果得到错误信息 $ echo "\`V_V\`" //得到`V_V`输出 2.32 单引号

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydzpj.html