linux利用信号与运行在系统中的进程进行通信。linux系统和应用程序可以生成超过30个信号。常用的有如下几个。
信号 值 描述
1 SIGHUP 挂起进程
2 SIGINT 终止进程
3 SIGQUIT 停止进程
9 SIGKILL 无条件终止进程
15 SIGTERM 尽可能终止进程
17 SIGTOP 无条件停止进程,但不是终止进程
18 SIGTSTP 停止或暂停进程,但不是终止进程
19 SIGCCONT 继续运行停止的进程
bash shell允许用键盘生成两种基本的linux信号。CTRL +C,生成 SIGINT 终止进程,并将其发给当前在shell中运行的所有进程。sleep 9,CTRL +C提前终止。CTRL +Z生成 SIGTSTP 停止或暂停进程,但不是终止进程,可以暂停进程。
· 捕获信号,脚本收到trap命令中列出的信号,该信号不再由shell处理,而是有本地处理。
trap conmamds signals。shell脚本退出时也可以进行捕获,需要在trap后面的信号值是EXIT信号就行。
后台运行脚本需要在命令后加个&符号就行了,命令作为系统中的一个独立的后台进程运行,会显示shell分配给后台进程的作业号和进程ID(pid)。后台运行时仍然会使用终端显示器来显示STDOUT和STDERR消息。
nohub命令,终端会话中启动shell脚本,然后让脚本一直以后台模式运行到结束,即使你退出了终端会话。 nohub ./test.sh & 。r如果关闭会话脚本会忽略终端会话发送来的SIGHUB信号。
jobs可以查看正在处理的作业。jobs -l可以查看PID号。输出带加号的是默认作业。
bg命令加上作业号,可以重启停止的作业。默认额作业不需要加作业号。
调度优先级是内核分配给进程的cpu时间,在linux系统中,由shell启动的所有进程的调度优先级都是相同的。调度优先级是整数,从-20(最高)到19(最低),默认都是以0来启动所有进程。nice命令允许设置命令启动时的优先级。 nice -3 ./ipaddress.sh,但是提高优先级会出错,linux阻止普通用户来提高优先级。renice可以允许改变已经运行命令的优先级。
at命令。at命令会将作业提交到队列,at的守护进程atd会以后台模式运行,检查队列来运行作业。at的守护进程atd检查系统上的/var/spool/at来获取用at命令已提交的作业,ard每60秒检查这个目录。at -f filename time。atq可以列出哪些命令在等待,atrm+作业号删除等待的作业。
cron可以定期执行作业。Linux crontab定时任务详细分解 文章中有详细介绍,就不阐述了。
anacron可以执行在关机期间的作业,不会错过。anacron只会处理位于cron目录的程序,他用时间戳来决定是否在正确的计划间隔内运行了。每个cron目录都一个时间戳文件,位于/var/spool/anacron。anacron不会处理执行时间需求小于一天的脚本,不会执行cron.hourly,
网友评论