我一直对于bash的这些命令很模糊,在线上运维过程中,也只是每次有需求就去百度一下,没有总结,果然收获不大,现在写个博文总结一下。
bash基础:
- 重定向 >
- 0,1,2分别表示标准输入,标准输出,标准错误
- 守护进程
-
>/dev/null 2>&1 &
- linux中有一类特殊的文件,就像一个无敌洞,重定向到这个文件的数据会消息的无影无踪,因此可以通过这个来丢弃一些不需要的信息。但是慎用,你可能会错过一些有用的日志信息。
- 中间的&表示重定向到标准输出,而不是一个叫1的文件
- 最后的&表示这个bash命令在后台运行
- 结论:bash命令后台运行,将标准输出重定向到标准输出,将标准输出重定向到空,因此这个bash命令的输出在窗口中什么都没有。
-
-daemon
- 参考链接:http://www.ruanyifeng.com/blog/2016/02/linux-daemon.htmll
- 守护进程就是一直在后台运行的进程。
- 第一步:在命令的尾部加上&,使其在后台运行,成为一种服务。
- 不能接受标准输入,标准输出将会同步在终端显示
- 变成后台任务,并一定是守护进程吗?当当前session退出后,后台进程是否会继续执行妈?这取决于shell的huponexit参数
- 该参数默认是关闭的,session退出后,不发送sighup信号给后台任务
- 那如果参数是打开的呢?于是我们可以使用nohup命令
- nohup命令不会将进程变成后台进程,因此需要加上& 例如:nohup server.js &
- nohup将子进程与session分离,关闭标准输入,将标准输出重定向到nohup.out
- 结论:nohup+&变成守护进程
-
2>&1 &
- 结论:后台运行,将标准错误定位到标准输出。