0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux操作系统后台:&与nohup的执行命令用法

如意 来源:良许Linux 作者:良许 2020-10-08 11:46 次阅读

大家可能有这样的体验:某个程序运行的时候,会产生大量的log,但实际上我们只想让它跑一下而已,log暂时不需要或者后面才有需要。所以在这样的情况下,我们希望程序能够在后台进行,也就是说,在终端上我们看不到它所打出的log。为了实现这个需求,我们介绍以下几种方法。

我们以下面一个test程序来模拟产生大量log的程序,这个程序每隔1秒就会打印一句“Hello world!”:

Linux操作系统后台:&与nohup的执行命令用法

现在,我们想要一个清静的世界,终端上不要有大量的log出现,我们要求test程序在后台运行。

##&##

这种方法很简单,就是在命令之后加个“&”符号就可以了,如下:

。/test &

这样一来,test程序就在后台运行了。但是,这样处理还不够,因为这样做虽然程序是在后台运行了,但log依然不停的输出到当前终端。因此,要让终端彻底的清静,还应将log重定向到指定的文件:

。/test 》》 out.txt 2》&1 &

2》&1是指将标准错误重定向到标准输出,于是标准错误和标准输出都重定向到指定的out.txt文件中,从此终端彻底清静了。

但是这样做要注意,如果Test程序需要从标准输入接收数据,它就会在那死等,不会再往下运行。所以需要从标准输入接收数据,那这种方法最好不要使用。

那现在程序在后台运行了,我们怎么找到它呢?很简单,有两种方法:

1. jobs命令

jobs命令可以查看当前有多少在后台运行。

jobs -l

此命令可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

2. ps命令

ps aux | grep test

##nohup命令##

在命令的末尾加个&符号后,程序可以在后台运行,但是一旦当前终端关闭(即退出当前帐户),该程序就会停止运行。那假如说我们想要退出当前终端,但又想让程序在后台运行,该如何处理呢?

实际上,这种需求在现实中很常见,比如想远程到服务器编译程序,但网络不稳定,一旦掉线就编译就中止,就需要重新开始编译,很浪费时间。

在这种情况下,我们就可以使用nohup命令。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:

nohup 。/test &

如果仅仅如此使用nohup命令的话,程序的输出会默认重定向到一个nohup.out文件下。如果我们想要输出到指定文件,可另外指定输出文件:

nohup 。/test 》 myout.txt 2》&1 &

这样一来,多管齐下,既使用了nohup命令,也使用了&符号,同时把标准输出/错误重定向到指定目录下。

使用了nohup之后,很多人就这样不管了,其实这样有可能在当前账户非正常退出或者结束的时候,命令还是自己结束了。所以在使用nohup命令后台运行命令之后,需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行。
责编AJX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11239

    浏览量

    209047
  • 操作系统
    +关注

    关注

    37

    文章

    6757

    浏览量

    123229
  • 命令
    +关注

    关注

    5

    文章

    680

    浏览量

    22002
收藏 人收藏

    评论

    相关推荐

    Linux find命令用法

    可以很肯定地说,find 命令Linux 后台开发人员必须熟知的操作之一,除非您使用的是 Windows Server。
    发表于 10-12 11:27 560次阅读

    Linux命令中“!”操作符的用法

    Linux中的'!'符号或操作符可以用作逻辑否定运算符,也可以用于在历史记录中获取命令并进行修改或运行以前执行过的命令
    发表于 07-05 10:07 1439次阅读

    nohup命令后台运行程序的用途和语法

    nohup命令后台运行程序
    发表于 04-19 10:34

    linux的程序后台执行

    1. 执行命令后加 & 符号,缺点客户端关了,也会停止执行 后台执行:php cli.phpadmin/index&
    发表于 07-15 06:34

    远程执行后台程序问题

    大佬们,我linux ssh远程后台执行一个jar 退出终端程序就掉了,使用的命令nohup java路径 -jar jar程序 &
    发表于 11-11 15:59

    了解Android操作系统和Chrome操作系统

    :该工具仅适用于基于MIPS/X86/ARM(高级的设备嵌入式Linux系统上的RISC机器。1、在更新过程中不应关闭模块,否则可能对模块造成很大的损坏。2、在Android操作系统上,您应该在升级华为之前停止ril进程模块。
    发表于 11-04 08:37

    Linux操作系统

    linux的教学内容1 、Linux概述 2 、Linux操作系统安装3、 Linux的内核 4 、Li
    发表于 04-10 16:54 0次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系统</b>

    CAD中如何快速重复执行命令

    快速重复执行命令主要是靠鼠标右键或者是键盘上的空格以及上下方向键。 输入OP命令打开选项对话框,点用户系统配置选项卡自定义右键单击按钮,默认模式下无论是否选定对象,单
    发表于 10-23 17:04 1620次阅读

    LINUX操作系统的安装与Linux常用文件命令

    LINUX操作系统的安装与Linux常用文件命令说明。
    发表于 06-02 17:45 3次下载

    Linux操作系统的CP命令源代码汇总

    Linux操作系统的CP命令源代码汇总
    发表于 08-04 16:08 4次下载

    如何使用nohup命令后台运行进程

    nohup命令用于运行程序或者命令,并忽略所有中断信号SIGHUP。SIGHUP是当前控制终端关闭时发送到进程的信号。
    的头像 发表于 12-05 16:25 1810次阅读

    如何用paramiko登陆服务器并执行命令

    paramiko是用来远程执行命令的模块,
    的头像 发表于 03-03 15:27 997次阅读
    如何用paramiko登陆服务器并<b class='flag-5'>执行命令</b>

    Linux系统维护命令用法

    Linux有很多命令,每个命令基本可以用一篇文章介绍,本文仅简单总结一些常用系统维护命令用法
    的头像 发表于 04-17 14:57 1019次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>系统</b>维护<b class='flag-5'>命令</b>的<b class='flag-5'>用法</b>

    linux常用命令用法

    Linux是一种开源的操作系统,它以稳定、高效和安全的特点受到广大用户的喜爱。掌握Linux的常用命令及其用法对于
    的头像 发表于 11-17 09:47 632次阅读

    总结linux命令行的主要用法

    Linux命令行是一种在Linux操作系统中通过文本界面来执行指令和管理系统的方式。它提供了丰富
    的头像 发表于 11-17 10:19 627次阅读