linux后台执行程序,& nohup
来源:互联网 发布:win10系统网络连不起网 编辑:程序博客网 时间:2024/05/18 03:50
启动后,关闭SSH客户端,启动的程序就停止了。如何解决?网上的解决方法是:在命令后加“ &”引号中间的,前面有空格。
正确方法: nohup solasi.sh &
但是程序会出入日志和错误信息如果解决?
完美解放方案:nohup solasi.sh >console.txt 2>&1 &
对上面命令的解释:
nohup 命令
用途:不挂断地运行命令。
语法:nohup Command [ Arg ... ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
>console.txt 2>&1
>console.txt 将标准输出重定向到console.txt文件中
其实操作系统有三个常用的流:
0:标准输入流 stdin
1:标准输出流 stdout
2:标准错误流 stderr
一般当我们用 > console.txt,实际是 1>console.txt的省略用法;< console.txt ,实际是 0 < console.txt的省略用法。
java的日志类默认是输出到system.err中,所以要想将日志内容重定向到console.txt,需要将stderr重定向到console.txt.
将stderr重定向到console.txt的命令是 2 < console.txt。
不过有个问题,stdout是有缓冲的,而stderr是没有缓冲的,原因很简单,stderr一般是系统发生错误,比如编译一个程序出错,需要立即给出编译错误提示。
所以如果写成 sh auto.sh > console.txt 2 > console.txt就会出现问题。
再来看看 >& 操作符:
重定向操作符描述
>
将命令输出写入到文件或设备(如打印机),而不是命令提示符窗口或句柄。
<
从文件而不是从键盘或句柄读入命令输入。
>>
将命令输出添加到文件末尾而不删除文件中已有的信息。
>&
将一个句柄的输出写入到另一个句柄的输入中。
<&
从一个句柄读取输入并将其写入到另一个句柄输出中。
|
从一个命令中读取输出并将其写入另一个命令的输入中。也称作管道。
而句柄的定义就是:
句柄句柄的数字代号描述
STDIN
0
键盘输入
STDOUT
1
输出到命令提示符窗口
STDERR
2
错误输出到命令提示符窗口
UNDEFINED
3-9
句柄由应用程序单独定义,它们是各个工具特有的
所以 2 >& 1就是把 stderr重定向到stdout 由于stdout被重定向到 console.txt,所以最终stderr,stdout均被重定向到console.txt并且解决了两者缓冲区不一致的问题。
- linux后台执行程序,& nohup
- nohup让程序后台执行
- Linux 后台执行命令,退出 程序不挂起之nohup
- linux后台执行命令--nohup &
- nohup 让程序永远后台执行
- [转]nohup 让程序永远后台执行
- Linux 强大的nohup(进程后台执行)
- Linux 强大的nohup(进程后台执行)
- Linux 强大的nohup(进程后台执行)
- Linux 强大的nohup(进程后台执行)
- Linux 强大的nohup(进程后台执行)
- linux后台执行命令:&和nohup
- linux后台执行命令:&和nohup
- linux下nohup的后台启动程序
- 用Nohup命令让Linux下的程序真正在后台执行(转载)
- 用Nohup命令让Linux下的程序真正在后台执行(转载)
- nohup后台执行
- nohup后台运行程序
- 14个华丽的javascript图表资源和插件
- ::的意义(小知识)VC里::后跟函数什么意思
- C#如何使用数据库
- 地址译码电路设计实验
- oracle TM锁和TX锁
- linux后台执行程序,& nohup
- python re模块用法总结
- work之成员
- sqlpus报错"ORA-01033: ORACLE initialization or shutdown in progress",且数据库状态是"ORA-01507: database not m
- 30年来长篇小说
- jquery ajax调用不刷新页面
- 手机内存RAM/ROM/FLASH说明
- allocator
- 使程序在Linux下后台运行