linux后台执行命令和nohup

worktile 其他 86

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Linux系统中,可以使用后台执行命令和nohup命令来使命令在后台运行。

    后台执行命令使命令在后台运行,不会占用当前终端窗口的控制权。可以使用以下两种方式来实现后台执行命令:

    1. 使用&符号:在命令末尾加上&符号即可将命令放到后台执行,例如:
    “`
    $ command &
    “`

    2. 使用Ctrl+Z和bg命令:先使用Ctrl+Z将当前正在运行的命令暂停,然后使用`bg`命令将命令放到后台运行,例如:
    “`
    $ command
    Ctrl+Z
    $ bg
    “`

    nohup命令可以在命令运行的同时忽略SIGHUP信号,即使终端关闭,命令也会继续运行。nohup命令的使用格式如下:
    “`
    $ nohup command &
    “`
    其中,command表示要在后台运行的命令。nohup命令会将命令的输出重定向到nohup.out文件中,如果需要将输出重定向到其他文件,可以使用重定向符号`>`,例如:
    “`
    $ nohup command > output.txt &
    “`
    另外,可以使用`nohup -p`命令来查看nohup命令的运行进程和进程号。例如:
    “`
    $ nohup -p PID
    “`
    其中,PID表示nohup命令的进程号。

    需要注意的是,后台执行命令和nohup命令都适用于长时间运行的命令,但在一些需要交互或获取输入的命令中可能会有问题。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在Linux中,执行命令可以通过在命令后加上”&”符号将其放到后台运行,也可以使用nohup命令来实现后台运行。这两种方法虽然都可以在终端执行命令后立即返回主提示符,但它们有一些区别和用途。

    1. “&”符号后台运行命令:
    使用”&”符号可以将命令放到后台运行,并立即返回主提示符。例如,要在后台运行一个长时间的脚本或程序,可以执行以下命令:

    $ long_running_script.sh &

    这样,该脚本或程序将在后台运行,而您仍然可以继续使用终端执行其他命令。

    2. nohup命令后台运行命令:
    nohup命令也可以实现后台运行命令,但与使用”&”符号不同,执行命令时还会将输出重定向到一个名为nohup.out的文件中。这个文件将包含命令的输出和错误信息。例如,要在后台运行一个命令,并将输出保存到nohup.out文件中,可以执行以下命令:

    $ nohup long_running_command > nohup.out &

    这样,命令将在后台运行,并且输出将被保存到nohup.out文件中。

    3. nohup的使用场景:
    nohup命令通常用于长时间运行的任务,这些任务需要在会话结束或终端关闭后继续执行。例如,在远程连接到服务器进行文件传输时,如果您的终端关闭,传输过程可能会被中断,但是如果使用nohup命令,传输将在后台继续进行。

    4. nohup命令的其他选项:
    nohup命令还有一些选项可以使用,以更好地控制后台运行的命令。以下是一些常用选项:

    – -p :将nohup命令应用于现有进程。

    – -c :指定要执行的命令。

    – -m:在命令启动时创建一个监控输出文件。

    – -o :将标准输出重定向到指定文件。

    – -e :将标准错误输出重定向到指定文件。

    5. 结束后台运行的命令:
    无论是使用”&”符号还是nohup命令将命令放到后台运行,都可以使用以下命令来结束它们的运行:

    $ jobs:查看当前运行的后台任务列表。

    $ fg :将后台任务激活到前台运行。

    $ bg :将后台任务转为后台运行。

    $ kill :强制终止后台进程。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在Linux中,可以使用后台执行命令的方式来运行长时间运行的任务或程序,以便在命令执行过程中可以继续使用终端。而`nohup`命令是一个特殊的工具,可以在终端退出后继续执行命令,并将输出重定向到指定文件中。本文将介绍如何在Linux中进行后台执行命令和使用`nohup`命令。

    ## 一、后台执行命令

    后台执行命令的方式有多种,下面介绍其中几种常用的方式。

    ### 1. 使用`&`符号

    在命令后面添加`&`符号即可将该命令放到后台执行。

    “`shell
    $ command &
    “`

    例如,运行一个脚本文件`script.sh`:

    “`shell
    $ ./script.sh &
    “`

    ### 2. 使用`bg`命令

    如果在命令已经在前台执行的情况下,可以使用`bg`命令将其转移到后台执行。

    首先,按下`Ctrl+Z`暂停正在执行的命令。然后,使用`bg`命令将其转移到后台执行。

    “`shell
    $ command
    ^Z
    $ bg
    “`

    ### 3. 使用`screen`命令

    `screen`是一个非常强大的终端复用工具,可以创建一个或多个虚拟的终端会话,并在这些会话中执行命令。

    首先,使用`screen`命令创建一个新的会话。

    “`shell
    $ screen
    “`

    然后,在新的会话中执行命令,并按下`Ctrl+A+D`将其转移到后台执行。

    “`shell
    $ command
    ^A+D
    “`

    要重新连接到已经在后台执行的`screen`会话,使用`screen -r`命令。

    “`shell
    $ screen -r
    “`

    ## 二、使用`nohup`命令

    `nohup`命令通过将命令的标准输出和标准错误输出重定向到一个文件中,使得即使终端退出,命令仍然能够继续执行。使用`nohup`命令的格式如下:

    “`shell
    $ nohup command > output.log 2>&1 &
    “`

    其中,`command`是要执行的命令或程序,`output.log`是保存命令输出的文件名。

    例如,运行一个脚本文件`script.sh`并将输出保存到`output.log`文件中:

    “`shell
    $ nohup ./script.sh > output.log 2>&1 &
    “`

    注意:使用`nohup`命令执行命令时,命令的输出将不会显示在终端上,而是保存在指定的文件中。

    使用`nohup`命令后,可以使用`ps`命令来查看后台运行的命令的进程号。

    “`shell
    $ ps -ef | grep command
    “`

    然后,可以使用`kill`命令来终止后台运行的命令。

    “`shell
    $ kill “`

    其中,``是命令的进程号。

    另外,使用`nohup`命令执行的命令将会忽略`HUP`(挂断)信号,因此即使关闭终端,命令仍然会继续执行。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部