shellNote
day10
-
$$变量
$$变量来显示linux系统分配给该脚本的PID;
-
查看作业–jobs
jobs命令可以查看分配给shell的作业;
jobs命令输出有加号和减号;
带加号被当做默认作业,在使用作业控制命令时,没有指明作业号会默认操作此作业;
带减号被当做下一个默认作业;
- 参数
参数 | 描述 |
---|---|
-l | 列出进行的PID以及作业号 |
-n | 只列出上次shell发出的通知后改变了状态的作业 |
-p | 只列出作业的PID |
-r | 只列出运行中的作业 |
-s | 只列出已停止的作业 |
-
重启停止的作业
Ctrl+z组合键,可以暂停命令;
-
在后台模式重启一个作业–bg命令
bg命令加上作业号,在后台模式重启作业;
-
在前台模式重启作业–fg命令
fg命令加上作业号,在前台模式重启作业,注意:会接管此时的终端会话;
-
-
调度优先级
内核分配给进程的CPU时间,默认情况下,shell启动的进程的优先级相同,优先级值为0;
调度优先级,从-20到+19,值越低优先级越高;
-
启动设置优先级–nice命令
nice命令可以在启动命令时设置优先级;
-n选项来指定优先级的值,直接-优先级的值也可以;
nice -n 10 ./test.sh &
nice -10 ./test.sh &
nice命令要和启动命令放在同一行
一旦nice命令以低优先级运行了脚本,就不能提高其优先级,只能通过管理员root来进行优先级提高
-
调整运行命令优先级–renice命令
renice命令可以在命令运行时调整优先级;
允许指定运行的PID来改变优先级;
renice -n 10 -p 5055
-
只能对属于你的进程执行renice;
-
只能通过renice降低优先级;
-
root用户可以通过renice随意调整进程的优先级;
-
-
-
计划执行作业–at命令
at [-f filename] time
-f参数来指定用于读取命令的文件名,就是脚本文件;
time参数指定了何时运行该作业;
如果当天时间错过,会在第二天那个时候运行;
-
守护进程–atd
at进行的守护进程atd,检查作业列队来运行作业,atd检查系统特殊目录/var/spoon/at,来获取at命令提交的作业;
默认情况下,每60s检查一次;
-
作业队列优先级
存在26个作业队列,通常用字母a-z来指代,字母排序越高,优先级越低;
可以使用-q参数来指定队列字母;
-
at命令运行的作业的输出
默认情况下,会将输出发送到用户的电子邮箱;
当然这样是不方便的,建议在使用at命令时,对STDOUT和STDERR进行重定向,或者-M参数来屏蔽作业产生输出信息;
-
列出等待的作业–atq
作业列表中显示了作业号、系统运行该作业的日期和时间及其所在的作业队列;
-
删除等待作业–atrm
atrm 18
–18为作业号;只能删除自己提交的作业;
-
-
定期执行脚本
-
cron时间表
min hour dayofmonth month dayofweek command
允许用特定值,取值范围(比如1-5),通配符来指定条目;
每天10:15运行命令:
15 10 * * * command
每个月每周一10:15运行命令:
15 10 * * 1 command
可以用三字符文本(mon,tue,wed,thu,fri,sat,sun)或数值(0周日,6周六);
每个月最后一天指定:
00 12 * * * if [
date +%d -d tomorrow= 01 ] ; then ; command
– 使用date命令来检查是不是当月最后一天;注意:命令列表必须指定脚本的全部路径;
-
构建cron时间表–crontab
-
-l参数
crontab -l
列出已有的crontab时间表;
-
-e参数
crontab -e
打开一个文本编辑器,在其中编辑时间表;
-
-
cron目录
有4个基本cron目录:hourly,daily,monthly,weekly;
如果不是对时间精度很高,可以将脚本存放在cron目录中;
目录位置见:
ls /etc/cron.*ly
-
anacron程序
当cron程序,在安排时间时,系统处于关机状态,可以使用anacron来运行错过的作业;
anacron使用自己的时间表来检查作业目录,/etc/anacrontab;
anacron不会处理执行时间需求小于一天的脚本;
-
-
.bashrc文件
每次启动一个新的shell时,都会运行.bashrc文件;