专栏首页GitHub专栏如何在后台运行Linux命令?

如何在后台运行Linux命令?

通常情况下,在 Linux 终端中运行命令时,我们必须等前一命令执行完成后,在输入并执行后一条命令,称之为在前台或前台进程中运行命令,进程在前台运行时,将占用您的外壳,并且您也可以使用输入设备与其终端进行交互。

当一条命令执行需要很长时间才能完成,并且想同时运行其他命令怎么办呢?

  • 第一:启动新的 Shell 会话并在其中运行命令;
  • 第二:在后台运行命令;

后台进程是从终端启动并在后台运行,无需用户与其终端进行交互的进程及命令;

1、组合键及命令

以 httpd-2.2.17.tar.gz 压缩包为例,比如一个压缩包文件解压需在终端屏幕下解压很长时间,甚至要刷很长一段屏幕才能解压完毕,那么我们可以按下Ctrl+Z组合键,便可以暂停运行并隐藏到后台,将会返回一个停止序号,此时进程时暂停的,并不会继续运行。

输入bg命令即可继续将该任务在后台执行。

输入fg + 序号命令即可让进程返回到前台执行。

执行过程中,可以输入jobs命令来查看所有的后台任务了。

# tar -zxf httpd-2.2.17.tar.gz                             ## 解压 httpd 压缩包
^Z                                                         ## 按下 Ctrl+Z 组合键暂停
[1]+  Stopped                 tar -zxf httpd-2.2.17.tar.gz

# bg                                                       ## 输入 bg 命令,继续在后台运行
[1]+ tar -zxf httpd-2.2.17.tar.gz &

# jobs                                                     ## 查看所有的后台任务
[1]+  Done                    tar -zxf httpd-2.2.17.tar.gz

2、&

在执行命令后加&,使其在终端后台运行。

# ./yum_install.sh &

执行完如上命令,yum脚本便在后台运行,虽然在后台运行了,但输出的内容还是会在终端上进行显示的,那么我们可以采用将执行后的命令输出结果重定向到文件中。

# ./yum_install.sh >> 202001141411out.txt 2>&1 &

将执行的结果重定向到202001141411out.txt文件中,2>&1将标准错误重定向到标准输出,判断yum脚本文件执行成功没成功,我们只需查看202001141411out.txt文件即可;

如果出现脚本文件执行了一段时间,卡死,无法继续运行了,可以通过第一种方法:jobs命令

# jobs -l

或者使用ps命令

# ps -aux | grep yum_install.sh

3、nohup

&:可以使命令在后台运行,当关闭控制台时,进程也将会被杀死,如果希望关闭控制台后,进程依旧运行,这时则需要使用nohup。

nohup:no hang up,不挂起的意思。

在执行命令最前面使用nohup,当关闭控制台时,进程依旧会在后台继续运行。

# nohup ./yum_install.sh &

如上nohup执行方式,当判断该脚本是否执行完毕,可执行命令ps -aux | grep yum_install.sh查看;

除此之外,我们可以将运行结果输出到nohup.log文件中,当没有指定输出重定向时,日志文件会默认输出到nohup.out文件;

# nohup ./yum_install.sh > nohup.log 2>&1 &

如果觉得这篇文章对你有所帮助,麻烦点个在看留言转发,支持一波,感谢! PS:对了,公众号最近新上线了一个赞赏自动回复的新功能,开个赞赏体验一下,赞赏之后你将会收到一条回复消息,来试试看!

本文分享自微信公众号 - 杰哥的IT之旅(Jake_Internet),作者:JackTian

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux 进程总结

    进程,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。它的执行需要系统分配资源创建实体之后,才能进行。...

    杰哥的IT之旅
  • 50 种不同编程语言的“Hello World”,你知道多少?

    历经 70 年,不断出现的编程语言为开发者解决了哪些难题?其存在又有怎样的特性?本文将以「Hello World」为例,花样呈现 50 种编程语言。

    杰哥的IT之旅
  • 如何快速回忆起遗忘的 Linux 命令?

    在 Linux 操作系统下,因命令太多记不住还感到困扰。不过没关系,记住全部的 Linux 命令是不太可能的,也没什么必要,未必在今后的工作中都会运用得到。甚至...

    杰哥的IT之旅
  • WiFi-Passview:一款基于Batch脚本的开源WiFi密码查看器

    WiFi Passview是一款基于Batch脚本实现的开源程序,它可以帮助我们在几秒钟之内轻松恢复WiFi密码。目前,该工具仅支持Windows操作系统。本质...

    FB客服
  • 带你走进飞思卡尔Flashloader(3)

    学习完协议篇,今天我们来学习飞思卡尔Flashloader之命令API。 获取属性命令 获取属性命令用来查询Flashloader的各种属性和设置,每一个支...

    用户1605515
  • 数字营销时代,如何切入客户生命周期的每一个营销点

    客户作为品牌的重要资源,是具有价值和生命周期的。因此,了解客户生命周期以及不同生命周期客户的价值,对于企业市场营销活动和运营管理是非常重要的。

    数商云市场营销总监
  • Linux命令

    ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令。

    py3study
  • Pug条件、分支条件

    听着music睡
  • Java后端技术栈,到底如何深入学习?

    很多人做Java开发4,5年后,都会感觉自己遇到瓶颈。什么都会又什么都不会,如何改变困境,为什么很多人写了7,8年还是一个码农,工作中太多被动是因为不懂底层原理...

    JAVA高级架构开发
  • “瓶盖挑战”火遍网络,MIT:我们的机器人比人类会玩!

    像MIT计算机科学与人工智能实验室(CSAIL)这样的即年轻,又超级聪明的学生在繁忙的课业和研究之余会干点啥呢?事实证明,与世界各地的同龄人一样,他们也喜欢把时...

    新智元

扫码关注云+社区

领取腾讯云代金券