第16章 控制脚本

在这里插入图片描述
在这里插入图片描述
Ctrl+C组合键会发送SIGINT信号,停止shell中当前运行的进程。
Ctrl+Z组合键会生成一个SIGTSTP信号,停止shell中运行的任何进程。停止进程会让程序继续保留在内存中,并能从上次停止的位置继续运行。
方括号中的数字是shell分配的作业号( job number)。 shell将shell中运行的每个进程称为作业,并为每个作业分配唯一的作业号。它会给第一个作业分配作业号1,第二个作业号2,以此类推。
如果你的shell会话中有一个已停止的作业,在退出shell时, bash会提醒你。
可以用ps命令来查看已停止的作业。

在S列中(进程状态), ps命令将已停止作业的状态为显示为T。这说明命令要么被跟踪,要么被停止了。
kill命令来发送一个SIGKILL信号来终止它。

也可以删除已设置好的捕获。只需要在trap命令与希望恢复默认行为的信号列表之间加上两个破折号就行了。

&符放到命令后时,它会将命令和bash shell分离开来,将命令作为系统中的一个独立的后台进程运行。
方括号中的数字是shell分配给后台进程的作业号。下一个数是Linux系统分配给进程的进程ID( PID)。 Linux系统上运行的每个进程都必须有一个唯一的PID。

jobs命令允许查看shell当前正在处理的作业
在这里插入图片描述
带加号的作业会被当做默认作业。当前的默认作业完成处理后,带减号的作业成为下一个默认作业。任何时候都只有一个带加号的作业和一个带减号的作业。
可用带有作业号的fg命令以前台模式重启作业.

调度优先级是个整数值,从+20(最高优先级)到+19(最低优先级)。默认情况下, bash shell以优先级0来启动所有进程。

nice命令允许你设置命令启动时的调度优先级。要让命令以更低的优先级运行,只要用nice
的-n命令行来指定新的优先级级别。

renice命令可以改变系统上已运行命令的优先级。它允许你指定运行进程的PID来改变它的优先级。
 只能对属于你的进程执行renice;
 只能通过renice降低进程的优先级;
 root用户可以通过renice来任意调整进程的优先级。
如果想完全控制运行进程,必须以root账户身份登录或使用sudo命令。

在预选时间运行脚本

Linux系统提供了多个在预选时间运行脚本的方法: at命令和cron表。

at [-f filename] time

默认情况下, at命令会将STDIN的输入放到队列中。你可以用-f参数来指定用于读取命令(脚本文件)的文件名。
time参数指定了Linux系统何时运行该作业。如果你指定的时间已经错过, at命令会在第二
天的那个时间运行指定的作业。

在这里插入图片描述
at命令会显示分配给作业的作业号以及为作业安排的运行时间。 -f选项指明使用哪个脚本
文件, now指示at命令立刻执行该脚本。
atq命令可以查看系统中有哪些作业在等待。
atrm命令来删除等待中的作业。

cron时间表

min hour dayofmonth month dayofweek command
15 10 * * * command

在dayofmonth、 month以及dayofweek字段中使用了通配符,表明cron会在每个月每天的10:15执行该命令。
15 16 * * 1 command 在每周一4:15 PM运行的命令。
可以用三字符的文本值( mon、 tue、 wed、 thu、 fri、 sat、 sun)或数值( 0为周日, 6为周六)来指定dayofweek表项。
设置一个在每个月的最后一天执行的命令。
常用的方法是加一条使用date命令的if-then语句来检查明天的日期是不是01:

00 12 * * * if [`date +%d -d tomorrow` = 01 ] ; then ; command

它会在每天中午12点来检查是不是当月的最后一天,如果是, cron将会运行该命令。 命令列表必须指定要运行的命令或脚本的全路径名。

如果你创建的脚本对精确的执行时间要求不高,用预配置的cron脚本目录会更方便。有4个
基本目录: hourly、 daily、 monthly和weekly。
如果脚本需要每天运行一次,只要将脚本复制到daily目录, cron就会每天执行它。
如果anacron知道某个作业错过了执行时间,它会尽快运行该作业。这意味着如果Linux系统
关机了几天,当它再次开机时,原定在关机期间运行的作业会自动运行。
常用于进行常规日志维护的脚本。如果系统在脚本应该运行的时间刚好关机,
日志文件就不会被整理,可能会变很大。通过anacron,至少可以保证系统每次启动时整理日志文件。

anacron时间表的基本格式和cron时间表略有不同:

period delay identifier command

注意, anacron不会运行位于/etc/cron.hourly的脚本。这是因为anacron程序不会处理执行时间需求小于一天的脚本。

猜你喜欢

转载自blog.csdn.net/qq_44710568/article/details/131916877