先写下最终版
nobup java -jar count.jar >> count.txt 2>&1 &
>>是追加输出信息到count.txt
2>&1是将标准错误重定向到标准输出
java -jar命令在退出帐户/关闭终端后退出
用springboot 写了一个定时任务,好不容易测试好了放到服务器上等着一天启动一次,结果过几天再看发现被关闭了。后来想了下不是人为关闭的,是关闭shell的时候这个进程就终止了。所以需要让这个命令后台运行不受退出帐户/关闭终端的影响。
除了java -jar ,还有其他运行中按ctrl +c就会退出的其他命令。可以使用nohup运行
nohup 命令运行由Command参数和任何相关的Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
1. 输入输出重定向
标准输入重定向(STDIN,文件描述符为0):默认从键盘输入,也可从其他文件或命令中输入。
标准输出重定向(STDOUT,文件描述符为1):默认输出到屏幕。
错误输出重定向(STDERR,文件描述符为2):默认输出到屏幕。
- 输入重定向中用到的符号及其作用
符号 | 作用 |
命令 < 文件 | 将文件作为命令的标准输入 |
命令 << 分界符 | 从标准输入中读入,直到遇见分界符才停止 |
命令 < 文件1 > 文件2 | 将文件1作为命令的标准输入并将标准输出到文件2 |
- 输出重定向中用到的符号及其作用
符号 | 作用 |
命令 > 文件 | 将标准输出重定向到一个文件中(清空原有文件的数据) |
命令 2> 文件 | 将错误输出重定向到一个文件中(清空原有文件的数据) |
命令 >> 文件 | 将标准输出重定向到一个文件中(追加到原有内容的后面) |
命令 2>> 文件 | 将错误输出重定向到一个文件中(追加到原有内容的后面) |
命令 >> 文件 2>&1 或命令 &>> 文件 | 将标准输出与错误输出共同写入到文件中(追加到原有内容的后面) |
对于重定向中的标准输出模式,可以省略文件描述符1不写,而错误输出模式的文件描述符2是必须要写的。
如果不加2>&1,命令的错误输出不会放到文件count.txt中,直接打印到控制台。