linuxshell非阻塞命令

fiy 其他 163

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Linux Shell中有很多非阻塞命令可以使用。非阻塞命令是指在执行时不会阻塞命令行终端,可以继续输入其他命令。

    1. 后台运行命令:在命令的结尾加上”&”符号,该命令将以后台进程的方式运行,可以继续输入其他命令。

    示例:`./my_script.sh &`

    2. 前台与后台切换命令:通过Ctrl+Z将当前正在执行的命令放到后台,并暂停执行,然后使用`bg`命令将其恢复到后台继续执行。

    示例:`ctrl + z`暂停命令,然后`bg`恢复命令到后台继续执行。

    3. nohup命令:使用nohup可以在退出终端后继续执行命令。

    示例:`nohup ./my_script.sh &`

    4. screen命令:screen是一个终端复用工具,可以在一个终端窗口中运行多个命令,并在之间切换。

    示例:`screen`

    5. disown命令:将一个正在运行的命令与终端断开关联,使其继续在后台运行。

    示例:`disown`

    这些非阻塞命令在执行过程中不会阻塞终端,可以在命令行继续输入其他命令,提高了效率和使用体验。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Linux Shell中,有许多非阻塞命令可以使用。这些命令允许用户在执行命令时继续进行其他操作,而不必等待命令完成。非阻塞命令在shell脚本编写、远程连接和控制台管理等情况下非常有用。以下是一些常用的非阻塞命令及其用法。

    1. `nohup`命令:`nohup`命令用于在后台执行命令,即使关闭终端或注销用户仍然可以继续运行。使用`nohup`命令的基本语法如下:
    “`
    nohup command &
    “`
    例如,要在后台运行一个长时间运行的脚本文件,可以使用以下命令:
    “`
    nohup ./script.sh &
    “`

    2. `&`符号:在执行命令时,可以使用`&`符号将其放到后台执行。例如,要在后台运行一个命令,可以使用以下命令:
    “`
    command &
    “`
    例如,要在后台运行一个长时间运行的程序,可以使用以下命令:
    “`
    ./program &
    “`

    3. `screen`命令:`screen`命令可以创建多个虚拟终端,并在这些终端间切换。这对于需要同时运行多个命令或程序的情况非常有用。使用`screen`命令的基本语法如下:
    “`
    screen
    “`
    然后,可以在新的终端中执行命令,按下`Ctrl+A`然后按下`d`键可以将当前终端放到后台,回到原始终端。

    4. `bg`命令:`bg`命令用于将一个在前台运行的命令放到后台运行。使用`bg`命令的基本语法如下:
    “`
    bg %
    “`
    其中`%`是前台作业的标识符。要查看当前正在运行的前台作业的标识符,可以使用`jobs`命令。

    5. `disown`命令:`disown`命令用于从当前shell会话中断开一个正在运行的命令或作业,使其在后台继续运行而不受当前shell会话的影响。使用`disown`命令的基本语法如下:
    “`
    disown -h %job_id
    “`
    其中`%job_id`是要断开的作业的标识符。要查看当前正在运行的作业的标识符,可以使用`jobs`命令。

    这些是一些常见的Linux Shell中可用的非阻塞命令。通过使用这些命令,用户可以在执行命令时继续进行其他操作,提高工作效率。对于需要长时间运行的命令和程序,非阻塞命令也确保了任务可以在后台进行而不会中断。

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

    在Linux Shell中,非阻塞命令可以使命令在后台执行,而不会阻止Shell继续运行其他命令。这对于需要等待较长时间的命令或需要同时执行多个命令的情况非常有用。本文将讨论如何使用非阻塞命令。

    ## 使用符号&
    在Shell中,可以使用符号&将命令放在后台执行。例如,下面的命令将启动一个长时间运行的脚本,而不会阻止Shell继续输入其他命令:

    “`shell
    $ long_running_script.sh &
    “`

    该命令将立即返回一个进程ID,并在后台启动脚本。您可以继续在Shell中输入其他命令,而脚本将在后台继续执行。

    ## 使用nohup命令
    nohup是一个特殊的命令,可以使命令在后台运行,同时忽略对Hangup(挂断)信号的响应。这意味着即使关闭终端或断开SSH连接,命令也将继续运行。

    “`shell
    $ nohup long_running_script.sh &
    “`

    使用nohup命令时,命令的输出默认将重定向到nohup.out文件。您可以使用重定向运算符来将输出发送到其他文件中:

    “`shell
    $ nohup long_running_script.sh > output.txt &
    “`

    ## 使用screen命令
    screen是一个非常强大的工具,可以创建多个虚拟终端,进而在每个虚拟终端中执行不同的命令。这对于需要长时间运行的命令或需要在断开SSH连接后保持命令运行的情况非常有用。

    首先,我们需要安装screen:

    “`shell
    $ sudo apt-get install screen
    “`

    安装完成后,您可以使用以下命令启动一个新的screen会话:

    “`shell
    $ screen
    “`

    在screen会话中,您可以执行任何命令,并将其放在后台运行。要离开screen会话并将命令在后台继续运行,按下Ctrl + A,然后按下D。

    要重新连接到以前的screen会话,使用以下命令:

    “`shell
    $ screen -r
    “`

    ## 使用disown命令
    disown命令用于从Shell的作业列表中删除给定的作业,并将其标记为不受Shell会话控制的后台作业。这意味着即使关闭终端或断开SSH连接,该作业仍将继续运行。

    首先,使用jobs命令查看当前作业列表:

    “`shell
    $ jobs
    [1]+ Running long_running_script.sh
    “`

    然后,使用disown命令将作业标记为后台作业:

    “`shell
    $ disown %1
    “`

    该命令将从作业列表中删除编号为1的作业,并将其标记为后台作业。作业将继续在后台运行,即使关闭了终端或断开了SSH连接。

    ## 小结
    在Linux Shell中,有多种方法可以执行非阻塞命令。使用符号&将命令放在后台执行是最简单的方法,但是在关闭Shell会话时,命令会被终止。使用nohup命令可以使命令在后台运行,并在关闭Shell会话后继续运行。screen命令可以创建多个虚拟终端,以便在每个虚拟终端中执行不同的命令。使用disown命令可以将命令标记为不受Shell会话控制的后台作业,以使其在关闭Shell会话后继续运行。根据具体需求可以选择适合的方法来执行非阻塞命令。

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

400-800-1024

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

分享本页
返回顶部