SIGINT(2 ctrl+c 终止)
SIGKILL(9 无条件终止)
SIGTSTP(18 ctrl+z 暂停/停止)
SIGCONT (19 恢复停止的进程)
session 含login shell (单独作为进程组),最多一个前台进程组(含所有前台进程),0或多个后台进程组 (date|grep aa &, date和grep两进程在同一个后台进程组内)
ctrl+c和ctrl+z是给前台进程组内所有进程发信号
shell中运行的进程又称作业,+默认,-下一个默认,jobs显示所有作业,$$代表当前进程(如当前在login shell内)的pid
trap commands signals
trap "echo 'sorry, tom'" SIGINT //引号分隔出命令,引号分隔出echo的参数
trap commands EXIT (捕获退出,运行结束或exit的正常退出,还有ctrl+c导致的退出)
trap -- SIGINT (恢复此信号的默认行为)
&后台模式:前台模式运行命令或脚本都占用命令提示符,后台不占用命令提示符,但是STDOUT和STDERR还是指向显示器,即运行的输出还是显示在屏幕,可考虑重定向
nohup 一般情况,退出终端所有进程终止(前台和后台),nohup阻断(忽略)SIGHUP信号避免进程退出,STDOUT和STDERR重定向到nohup.out
nohup ./test.sh &
fg/bg 前台模式/后台模式重启停止的作业,无作业号则重启默认作业(+) 如fg 1
nice -n 10 ./test.sh
nice -10 ./test.sh //两种方式在启动时调整nice值,普通用户只能降优先级(给正数),不能升
renice -n 10 -p pid //调整已运行进程nice值,只能降,只能操作属于你的进程
at -f filename time(如now) //某时间点运行命令,-f 指定命令脚本或者从STDIN获取
atd守护进程不断检查某个目录(含作业队列),at的命令都进入作业队列(26个a-z,a是默认且优先级最低,-q 可指定到其他队列)
at 作业运行时,进程的STDOUT和STDERR都指向提交作业用户的email
atq 列出等待作业(at提交) atrm 作业号(删除某等待作业,只能删自己提交的)
crontab 运行带周期性命令
function name {
}
name () {
} //两方式定义函数,先定义后使用
函数也有退出状态码(按最后一条命令),return(退出函数并可带退出状态码)
$1 $@ 在函数内代表传递给函数的参数,调用函数: functionName param1 param2
全局变量:可任意位置定义和获取
局部变量:只能函数内定义和获取,local var 或local var=1 ,全局和局部变量重名,在函数内获取的值是局部变量的值,函数外是全局变量的值,两值互不影响
source或点 在当前shell下运行脚本,这个脚本可以设计成函数库文件(只含函数定义)
在命令行上定义函数:单行(命令之间;分隔) 多行(可以在输入{ 后回车,不用加; ),定义完可直接命令行调用函数