[转帖]Linux bg/fg/jobs/disown命令运行后台任务

linux,bg,fg,jobs,disown,命令,运行,后台任务 · 浏览次数 : 0

小编点评

**背景** 执行耗时操作时,需要保持其他任务等待完成才能继续执行其他操作。可以使用 Linux 内置命令或 `jobs` 和 `bg` 等工具来实现并发执行和暂停运行任务。 **步骤** 1. **挂起任务** - 使用 `ctrl+z` 命令挂起当前进程。 - 查看当前进程的 `pid`,并将其存储在 `$PID` 中。 2. **使用 `jobs` 查看任务** - 使用 `jobs` 命令查看当前运行的进程,并查看 `PID`。 - 使用 `jobs -l` 命令查看所有正在运行的任务。 3. **使用 `bg` 后台运行任务** - 使用 `bg %[job_id]` 命令将任务从 `jobs` 中删除,并将其作为后台运行的子进程。 - 监控子进程的运行状态。 4. **使用 `fg` 转到前台运行任务** - 使用 `fg +%[job_id]` 命令将任务从 `bg` 中转到前台运行。 - 等待任务完成。 5. **切断与当前shell联系** - 使用 `disown -h+%[job_id]` 命令切断与当前shell进程的联系。 - 这样即使退出 shell,该任务也会继续执行。 **注意** - `jobs` 和 `bg` 命令只能用于本地运行。 - 使用 `disown` 命令切断与当前shell进程的联系可能导致shell退出失效。 - 切断与当前shell进程的联系可能会影响后台任务的执行顺序。

正文

https://www.jianshu.com/p/4489603124aa

 

背景

我们经常需要服务器上面执行一些耗时操作,比如执行scp命令下载大文件等,但是又不想一直等待完成再做其他事情,所以可以配合linux的相关命令达到目的。

具体步骤

1.执行相关耗时操作命令

:/ scp -r xxx@ip:/mnt/xxx /localpath/xxx

2.按下ctrl+z命令挂起执行程序,暂停运行

:/ ctrl+z

看到如下反馈:

序号(不是pid)       状态                  执行的命令
------------------------------------------------------------------
[1]+               stopped              scp -r xxx@ip:/mnt/xxx /localpath/xxx

3.可以利用jobs命令,查看当前暂停的任务或在后台运行的任务,反馈如下

:/ jobs

看到如下反馈:

序号(不是pid)       状态                  执行的命令
------------------------------------------------------------------
[1]+               stopped              scp -r xxx@ip:/mnt/xxx /localpath/xxx

4.利用bg %[job_id],将该挂起的执行程序转为后台运行

:/ bg %1

看到如下反馈:

序号(不是pid)       状态                  执行的命令
------------------------------------------------------------------
[1]+               running              scp -r xxx@ip:/mnt/xxx /localpath/xxx

5.如果想将该执行程序转到前台来运行,则执行fg+%[job_id]

:/ fg %1

此时程序将转为前台运行

[重要]利用disown -h+%[job_id]命令,忽略该作业的HUP信号

通俗说就是当shell退出或断开后,后台任务继续不中断执行。该命令运行在bg+%[序号]之后

该命令的详细说明,如下:

就是将指定作业序号的作业从作业列表中删除,在shell退出的时候将其作为init的子进程继续执行。
实际的应用中,比如我们在运行一条用时比较长的命令的时候,忽然临时需要登出系统或者关闭shell,而在当时运行这个命令时没有考虑到要提交为作业放到后台运行。可以如下操作:

1.可以先用Ctrl+z来挂起当前进程,使用jobs获得作业号.
2.利用bg %[job_id]后台继续运行该命令.
3.然后再使用disown -h %[job_id]来切断这个命令与当前shell进程的联系.
4.这样就可以避免shell关闭的时候会中断命令的执行.

# 切断与当前shell联系
disown -h %1

# 此时退出命令运行不会中断
exit

与[转帖]Linux bg/fg/jobs/disown命令运行后台任务相似的内容:

[转帖]Linux bg/fg/jobs/disown命令运行后台任务

https://www.jianshu.com/p/4489603124aa 背景 我们经常需要服务器上面执行一些耗时操作,比如执行scp命令下载大文件等,但是又不想一直等待完成再做其他事情,所以可以配合linux的相关命令达到目的。 具体步骤 1.执行相关耗时操作命令 :/ scp -r xxx@

[转帖]前后台切换命令(ctrl+z jobs bg fg &)

当我在终端里面运行某个命令的时候,结果不是很快就能出来的那种,或者是一大堆字在屏幕上狂翻。这个时候,有时ctrl+c也不起作用,那我会用ctrl+z退出来,这个很有效,但是说实话我不知道为什么这个可以退出,以及有什么后果,今天看到一篇博客,内容如下: linux下fg、bg、ctrl + z、job

[转帖]Linux 磁盘I/O 调度算法 说明

2022-08-23 13:031361转载Linux 1 Linux 4.0 IO协议栈框架图 I/O 调度算法在各个进程竞争磁盘I/O的时候担当了裁判的角色。他要求请求的次序和时机做最优化的处理,以求得尽可能最好的整体I/O性能。 Linux 4.0 IO协议栈框架图 I/O调度程序的总结 当向

[转帖]Linux中常见IO调度器

https://www.jianshu.com/p/3c16e39a005a 单队列调度算法多队列调度算法 deadline mqdeadlines cfq bfq noop none kyber 对于磁盘I/O,Linux提供了cfq, deadline和noop三种调度策略 cfq: 这个名字是

[转帖]Linux 平台使用shc 工具加密shell 脚本

2021-08-03 20:4510030原创Linux 本文链接:https://www.cndba.cn/dave/article/4642 1 shc 工具说明 shell 脚本是常用脚本,运维中经常使用,但有时候在shell 脚本中会包含一些敏感的信息,比如密码或者特殊的参数,此时我们就可以

[转帖]Linux系统多网卡环境下的路由配置

https://www.cnblogs.com/connect/p/linux-static-route.html Linux下路由配置命令 1. 添加主机路由 route add -host 192.168.1.11 dev eth0 route add -host 192.168.1.12 gw

[转帖]linux命令行下如何格式化json并进行各种json处理操作

https://blog.csdn.net/penriver/article/details/122016563 有时需要在linux 的命令行下,需要查看json的内容或针对json进行各种操作,本文针对此进行梳理、总结。 在Linux系统下基于python json.tool可以格式化json,

[转帖]Linux grep、egrep使用命令详解

https://segmentfault.com/a/1190000040654123?utm_source=sf-similar-article grep egrep区别 grep 默认不支持扩展 但可以通过-E 选择来支持扩展正则egrep 支持扩展正则 关于正则与扩展正则的区别可以看我另一篇s

[转帖]Linux kill & Java shutdownhook

https://www.jianshu.com/p/8001a66d37c9 shutdown-hook 建议加上shutdown的钩子 如果程序出现了内存溢出crash 则现在代码是没有任何保护措施的 或者说运维不小心关闭了服务器等 或者运维不小心kill了游戏服务器进程等 无法避免kill -9

[转帖]linux 调优篇 :硬件调优(BIOS配置)* 壹

https://blog.csdn.net/tony_vip?type=blog 一. 设置内存刷新频率为Auto二. 开启NUMA三. 设置Stream Write Mode四. 开启CPU预取配置五. 开启SRIOV六. 开启SMMU 通过在BIOS中设置一些高级选项,可以有效提升虚拟化平台性能