Linux中后台执行任务
2023-03-07 09:41:52 时间
执行时, 可以在命令最后添加 & 使其后台执行, 但是其输出依然会显示, 而且其运行是和当前shell绑定的
如果脚本已经运行, 可以使用Ctrl-Z暂停, 然后使用 bg 让其转入后台, 再 disown 解除关联, 例如:
^Z [1]+ Stopped make -j2 [tomcat@n00 master]$ bg [1]+ make -j2 &
# 注意: disown之后, 此任务将不出现于jobs, 也不能再转回前台, 但是输出依然是和当前shell绑定的 [tomcat@n00 master]$ disown [tomcat@n00 master]$ exit
查看在后台运行的任务
jobs -l # -l: 用于显示任务的 process id
将后台任务转回前台
%process-id # or fg process-id
如果要在屏显的同时记录日志, 通过tee命令
$ make -j2 | tee output.log
对于需要在关闭shell后还需要继续执行的任务, 需要使用nohup, 例如
nohup make -j1 TARGET_DEVICES=y1 > ~/openwrt/logs/20170115.log 2>&1 & # 其中执行的命令是"make -j1 TARGET_DEVICES=y1"
上面的命令会将输入记录到log文件. 对于上面的命令的解释:
bash 中 0, 1, 2 三个数字分别代表 STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO, 即标准输入(一般是键盘), 标准输出(一般是用户终端控制台), 标准错误(出错信息输出)
0 标准输入 (一般是键盘) 1 标准输出 (一般是用户终端控制台) 2 标准错误 (出错信息输出)
输入重定向, 例如 cat < test.c 将 test.c 重定向为 cat 命令的输入源.
输出重定向, 用其他输出目标替换标准输出, 例如 ls > 1.txt 将 ls 的结果从标准输出重定向为 1.txt 文本. 有时候会看到如 ls >> 1.txt这类的写法, >> 的区别在于 > 用于新建而 >> 用于追加, 即 ls > 1.txt 会新建一个 1.txt 文件并且将 ls 的内容输出到新建的 1.txt 中, 而 ls >> 1.txt 则用在 1.txt 已经存在而我们只是想将 ls 的内容追加到 1.txt 文本中的时候
相关文章
- 百年名企申请仲裁gnp.com被拒绝,原因竟然是对该域名没有垄断权?
- Spring源码 – bean创建的生命周期之实例化-createBeanInstance(Spring Framework 5.3.7-SNAPSHO)
- 为什么香港主机还要备案域名
- 在启用.co域名几个月后,我们还是选择升级为.com域名。
- cn域名香港主机用不用备案吗
- 用户:TrueName指纹域名是搜索引擎排名的关键
- 香港主机的域名需要备案吗
- Donuts8月域名趋势报告,.Live域名拔得头筹
- 第一次如何快速了解服务器
- 香港主机可以绑多少域名
- 香港域名一年多少钱
- 虚拟服务器可以绑定多少个域名
- 学生购买域名要多少钱
- 使用ecs搭建blog项目
- 怎么导入文件到云服务器
- 阿里云七天试用体验
- 云服务器怎么加个d盘
- SEO没有秘籍,不要期待会有一劳永逸的方法
- Vi和Vim的关系
- 声母是什么意思