您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux百科

linux任务后台执行

时间:2022-06-20 11:37:14  来源:  作者:节操下溢笨狐狸

背景

有时我们运行某个任务,需要保证任务不占据终端影响其他作业,或者保证当前session退出后,任务依然可以继续运行。

方案

  • command &
  • nohup command &
  • CTRL+Z;bg %n; disown %n
  • setsid command

使用方法

command &

该方法可以使任务放在后台执行,从而不影响当前终端其他作业,但是如果当前终端退出,也会导致后台任务接收到SIGHUP信号并退出。

-rwx------. 1 Appmanager devops 69 Jun 19 06:07 findBigFiles.bash
[appmanager@localhost toutiao]$ cat findBigFiles.bash 
#! /bin/bash

sleep 1m
find $HOME -size +10M | xargs ls -l --block-size=M
[appmanager@localhost toutiao]$ ./findBigFiles.bash > output.log &
[1] 2644

## 退出当前终端,新开终端并查看进程
[appmanager@localhost ~]$ ps -fu appmanager
UID          PID    PPID  C STIME TTY          TIME CMD
appmana+    2769    2768  0 06:08 pts/0    00:00:00 -bash
appmana+    2818    2769  0 06:08 pts/0    00:00:00 ps -fu appmanager
 
## 重新后台执行程序
[appmanager@localhost toutiao]$ ps -fu appmanager                 
UID          PID    PPID  C STIME TTY          TIME CMD
appmana+    2769    2768  0 06:08 pts/0    00:00:00 -bash
appmana+    2889    2769  0 06:11 pts/0    00:00:00 /bin/bash ./findBigFiles.bash
appmana+    2890    2889  0 06:11 pts/0    00:00:00 sleep 1m
appmana+    2891    2769  0 06:12 pts/0    00:00:00 ps -fu appmanager

[appmanager@localhost toutiao]$ ps -fu appmanager     
UID          PID    PPID  C STIME TTY          TIME CMD
appmana+    2769    2768  0 06:08 pts/0    00:00:00 -bash
appmana+    2906    2769  0 06:13 pts/0    00:00:00 ps -fu appmanager
[1]+  Done                    ./findBigFiles.bash > output.log
[appmanager@localhost toutiao]$ cat output.log 
-rw-------. 1 appmanager devops 35M May 28 19:06 /home/appmanager/.cache/pip/http/d/6/1/f/e/d61fe4b09676f0692c240e67193e3af065d7b9e72f8577595151e51f
-rw-r--r--. 1 appmanager devops 11M May 16 08:49 /home/appmanager/mnt/ansible/roles/Tomcat/files/Apache-tomcat-8.5.79.tar.gz

nohup command &

nohup可以使shell命令忽略SIGHUP信号,避免父进程退出时,子进程也退出。&使任务后台执行。

[appmanager@localhost toutiao]$ nohup $HOME/tmp/toutiao/findBigFiles.bash > output.log 2>&1 &
## 退出当前终端,新开终端并查看进程
[appmanager@localhost ~]$ psfu 
UID          PID    PPID  C STIME TTY          TIME CMD
appmana+    3045       1  0 06:20 ?        00:00:00 /bin/bash /home/appmanager/tmp/toutiao/findBigFiles.bash
appmana+    3046    3045  0 06:20 ?        00:00:00 sleep 1m
appmana+    3102    3101  1 06:21 pts/0    00:00:00 -bash
appmana+    3134    3102  0 06:21 pts/0    00:00:00 ps -fu appmanager

[appmanager@localhost ~]$ psfu 
UID          PID    PPID  C STIME TTY          TIME CMD
appmana+    3102    3101  0 06:21 pts/0    00:00:00 -bash
appmana+    3154    3102  0 06:22 pts/0    00:00:00 ps -fu appmanager
[appmanager@localhost ~]$ cat tmp/toutiao/output.log 
nohup: ignoring input
-rw-------. 1 appmanager devops 35M May 28 19:06 /home/appmanager/.cache/pip/http/d/6/1/f/e/d61fe4b09676f0692c240e67193e3af065d7b9e72f8577595151e51f
-rw-r--r--. 1 appmanager devops 11M May 16 08:49 /home/appmanager/mnt/ansible/roles/tomcat/files/apache-tomcat-8.5.79.tar.gz

CTRL+Z;bg %n; disown %n

使用disown可以忽略执行jobs id接收到的SIGHUP信号,避免父进程的退出而导致子进程的退出。

## CTRL + 会暂停当前执行的程序
[appmanager@localhost toutiao]$ bash -x ./findBigFiles.bash > output.log 2>&1
^Z
[1]+  Stopped                 bash -x ./findBigFiles.bash > output.log 2>&1
[appmanager@localhost toutiao]$ bg %1
[1]+ bash -x ./findBigFiles.bash > output.log 2>&1 &
[appmanager@localhost toutiao]$ disown %1

## 退出当前终端,新开终端并查看进程
+ sleep 1m
+ xargs ls -l --block-size=M
+ find /home/appmanager -size +10M
-rw-------. 1 appmanager devops 35M May 28 19:06 /home/appmanager/.cache/pip/http/d/6/1/f/e/d61fe4b09676f0692c240e67193e3af065d7b9e72f8577595151e51f
-rw-r--r--. 1 appmanager devops 11M May 16 08:49 /home/appmanager/mnt/ansible/roles/tomcat/files/apache-tomcat-8.5.79.tar.gz

setsid command

setsid指定当前进程的父进程为1,不受当前session的退出的影响,但是前提是需要在命令执行时就设置。

[appmanager@localhost toutiao]$ setsid ./findBigFiles.bash > output.log 2>&1 &
[1] 3823
[appmanager@localhost toutiao]$ psfu 
UID          PID    PPID  C STIME TTY          TIME CMD
appmana+    3729    3728  0 06:43 pts/0    00:00:00 -bash
appmana+    3824       1  0 06:49 ?        00:00:00 /bin/bash ./findBigFiles.bash
appmana+    3825    3824  0 06:49 ?        00:00:00 sleep 1m
appmana+    3826    3729  0 06:49 pts/0    00:00:00 ps -fu appmanager
[1]+  Done                    setsid ./findBigFiles.bash > output.log 2>&1

## 退出当前终端,新开终端并查看进程
[appmanager@localhost toutiao]$ psfu 
UID          PID    PPID  C STIME TTY          TIME CMD
appmana+    3729    3728  0 06:43 pts/0    00:00:00 -bash
appmana+    3824       1  0 06:49 ?        00:00:00 /bin/bash ./findBigFiles.bash
appmana+    3825    3824  0 06:49 ?        00:00:00 sleep 1m
appmana+    3827    3729  0 06:49 pts/0    00:00:00 ps -fu appmanager
[appmanager@localhost toutiao]$ ll
total 4
-rwx------. 1 appmanager devops 74 Jun 19 06:11 findBigFiles.bash
-rw-r--r--. 1 appmanager devops  0 Jun 19 06:49 output.log
[appmanager@localhost toutiao]$ cat /opt/
cat: /opt/: Is a directory
[appmanager@localhost toutiao]$ cat output.log 
-rw-------. 1 appmanager devops 35M May 28 19:06 /home/appmanager/.cache/pip/http/d/6/1/f/e/d61fe4b09676f0692c240e67193e3af065d7b9e72f8577595151e51f
-rw-r--r--. 1 appmanager devops 11M May 16 08:49 /home/appmanager/mnt/ansible/roles/tomcat/files/apache-tomcat-8.5.79.tar.gz


Tags:linux   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Linux获取Redis 性能指标方法
一、监控指标Ø 性能指标:PerformanceØ 内存指标: MemoryØ 基本活动指标:Basic activityØ 持久性指标: PersistenceØ 错误指标:Error二、监...【详细内容】
2024-04-11  Search: linux  点击:(10)  评论:(0)  加入收藏
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08  Search: linux  点击:(10)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  Search: linux  点击:(25)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  Search: linux  点击:(18)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25  Search: linux  点击:(16)  评论:(0)  加入收藏
Linux发行版 Ubuntu 迎更新 界面设计灵感来自 Windows 11
近日,一位第三方开发者推出了一款名为“Wubuntu”的特殊Linux发行版。这款系统源自主流的Ubuntu版本,但在界面设计上却借鉴了微软最新的Windows 11风格,甚至在其中融入了微软标...【详细内容】
2024-02-27  Search: linux  点击:(52)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27  Search: linux  点击:(54)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  Search: linux  点击:(60)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01  Search: linux  点击:(86)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  Search: linux  点击:(73)  评论:(0)  加入收藏
▌简易百科推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08    IT之家  Tags:Linux   点击:(10)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  凡夫编程  微信公众号  Tags:Linux安全   点击:(25)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  编程技术汇  微信公众号  Tags:Linux   点击:(18)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25    IT之家  Tags:Linux   点击:(16)  评论:(0)  加入收藏
轻松实现Centos系统的软件包安装管理:yum指令实战详解
yum 是一种用于在 CentOS、Red Hat Enterprise Linux (RHEL) 等基于 RPM 的 Linux 发行版上安装、更新和管理软件包的命令行工具。它可以自动解决软件包依赖关系,自动下载并...【详细内容】
2024-02-27  凡夫贬夫  微信公众号  Tags:Centos   点击:(60)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27    IT之家  Tags:Ubuntu   点击:(54)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  王建立    Tags:Linux   点击:(60)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01    简易百科  Tags:Linux   点击:(86)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  松鼠宝贝    Tags:Linux内核   点击:(73)  评论:(0)  加入收藏
如何确保Linux进程稳定与持久
在Linux系统中,进程的稳定性与持久性对于维持系统的持续运行至关重要。然而,由于各种原因,进程可能会面临崩溃或系统重启的情况。为了确保关键进程能够持续运行,我们必须采取一...【详细内容】
2024-01-19  松鼠宝贝    Tags:Linux进程   点击:(94)  评论:(0)  加入收藏
站内最新
站内热门
站内头条