1.&和nohup和2>&1的定义:
& 放在命令到结尾,表示后台运行,防止终端一直被某个进程占用,这样终端可以执行别到任务
nohup放在命令的开头,表示不挂起(no hang up),也即,关闭终端或者退出某个账号,进程也继续保持运行状态
0 表示stdin标准输入
1 表示stdout标准输出
2 表示stderr标准错误
2>&1 也就表示将错误重定向到标准输出上
2.&测试
现编写一个简单的pyhton程序,每隔3秒输出一个’done’
然后编写一个简单的shell脚本:
在每个执行语句后面加个&表示后台运行
wait表示上述程序执行完毕才继续执行后面的程序
可以看到终端的输出:每隔三秒钟,连续输出两个’done’
3.nohup和2>&1 &连用测试
现在我们来测试一下,故意写一个错误的python程序
使用nohup sh test.sh >myout.log 2>&1 &
查看myout.log文件
发现确实输入了错误信息
怎么关闭nohup挂起的程序
通过ps命令查看进程号PID,然后执行 kill %PID