为什么退出linux服务器就暂停了

fiy 其他 47

回复

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

    退出Linux服务器并不会导致服务器暂停,服务器会继续运行。可能是你在退出服务器之前运行了一些命令或操作,导致服务器的某些进程被暂停或终止。

    1. 暂停进程:在退出服务器之前,你可能运行了一些命令来启动某个进程(如Web服务器或其他应用程序)。当你退出服务器时,这个进程将被暂停,因为它是由你的会话启动的。如果你希望进程继续在后台运行,可以使用nohup命令在启动进程时将其放入后台运行。

    2. SSH会话断开:如果你是通过SSH连接到服务器的,当你退出SSH会话时,服务器上的当前会话将被终止。但是,这并不意味着服务器将停止运行,其他正在运行的进程仍将继续。

    3. 进程守护程序:有些进程可能是由守护程序启动并监控的,这些守护程序会在退出服务器时继续运行。它们通常在系统启动时启动,并且会独立于用户会话而运行。

    为了保持服务器运行,你可以使用以下方法:

    1. 使用nohup命令:将启动的进程放入后台运行,并且不会受到终端会话的影响。例如,使用以下命令启动一个进程:nohup ./myprogram &。

    2. 使用终端复用:你可以使用终端复用工具(如tmux或screen)来创建一个持久的终端会话,即使断开SSH连接也能保持会话运行。

    3. 使用系统级的进程守护程序:可以将进程配置为在系统启动时自动启动,并且会在后台运行,与用户会话无关。例如,在Ubuntu上可以使用systemd或init.d来设置守护进程。

    总结起来,退出Linux服务器并不会导致服务器暂停,服务器上的进程可能会受到影响,但可以通过使用nohup命令、终端复用或者系统级的进程守护程序来保持服务器的持续运行。

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

    退出 Linux 服务器后,程序会继续运行,但默认情况下在终端启动的程序会被暂停。这是因为终端会话的终止会导致所关联的进程组和会话组接收到 SIGHUP(终止信号),从而触发默认的行为,即挂起。以下是退出 Linux 服务器导致程序暂停的几个常见原因:

    1. 终端会话的生命周期:在 Linux 中,用户登录服务器后会启动一个终端会话,该终端会话和用户身份(用户在登录时使用的用户名)相关联。当用户退出终端或者关闭 SSH 连接时,终端会话也会被关闭。由于在终端会话上运行的程序通常从父进程继承了 SIGHUP 信号的处理方式,因此会收到 SIGHUP 信号并暂停。

    2. 前台进程组:终端会话启动时,默认情况下创建了一个前台进程组。当用户退出终端时,输入到该终端的信号也会被发送到前台进程组中的进程。由于 SIGHUP 是终止信号之一,因此接收到该信号的进程默认会被暂停。

    3. 作业控制:Linux 下的作业控制允许用户将进程放入前台或后台运行,并且可以通过控制信号和命令控制作业的状态。当一个进程被放入前台运行,并且用户退出终端后,该进程会接收到 SIGHUP 信号并暂停。

    4. nohup 命令:nohup 是 Linux 命令的一部分,它可以在运行命令时忽略 SIGHUP 信号,从而防止程序在退出终端后暂停。使用 nohup 命令运行程序,或者将程序放入后台运行,可以避免程序在退出终端时暂停。

    5. disown 命令:disown 命令可以将一个正在运行的程序与终端会话分离,使其不再与终端会话相关联。当程序与终端会话分离后,即使用户退出终端,该程序也会继续运行。

    总结:要防止在退出 Linux 服务器时程序暂停,可以使用 nohup 命令在后台运行程序,或者使用 disown 命令将程序与终端会话分离。这样可以确保程序在终止终端会话时继续运行。

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

    当从终端窗口退出Linux服务器时,执行在服务器上运行的任务通常会暂停或终止。这是因为终端窗口退出后,Shell会向正在运行的进程发送SIGHUP(Hangup)信号,这是终端关闭时的默认行为。

    这种行为是有好处的,因为它确保了用户不再登录时,服务器上的进程不会继续无目的地运行,浪费资源。但有时,我们可能希望退出终端窗口时不会影响服务器上正在运行的进程。下面将介绍几种解决方法。

    1. 使用nohup命令

    nohup命令可以在退出终端窗口后继续运行程序,不会受到SIGHUP信号的影响。具体操作步骤如下:

    1. 打开终端窗口,并登录到服务器;
    2. 输入要运行的命令,并在命令前添加"nohup",例如:nohup ./my_script.sh &;
    3. 按下Enter键运行命令;
    4. 输入exit命令退出终端窗口。

    这样,my_script.sh脚本会继续在服务器上运行,即使你退出了终端窗口。

    1. 使用screen命令

    Screen是一个终端多路复用程序,它允许在单个SSH会话中同时运行多个终端窗口。使用screen命令可以在终端窗口退出后继续运行进程。

    具体操作步骤如下:

    1. 打开终端窗口,并登录到服务器;
    2. 输入screen命令启动一个新的Screen会话;
    3. 在新的Screen会话中运行命令,例如:./my_script.sh;
    4. 按下Ctrl + A,然后按下D键(即Ctrl + A + D),退出Screen会话,回到终端窗口;
    5. 输入exit命令退出终端窗口。

    这样,my_script.sh脚本会继续在服务器上运行,即使你退出了终端窗口。下次你登录到服务器时,可以通过重新连接到screen会话来查看或再次操作正在运行的进程。

    1. 使用tmux命令

    Tmux是另一个终端多路复用程序,它与Screen类似,可以在终端窗口退出后继续运行进程。

    具体操作步骤如下:

    1. 打开终端窗口,并登录到服务器;
    2. 输入tmux命令启动一个新的Tmux会话;
    3. 在新的Tmux会话中运行命令,例如:./my_script.sh;
    4. 按下Ctrl + B,然后按下D键(即Ctrl + B + D),退出Tmux会话,回到终端窗口;
    5. 输入exit命令退出终端窗口。

    这样,my_script.sh脚本会继续在服务器上运行,即使你退出了终端窗口。下次你登录到服务器时,可以通过重新连接到Tmux会话来查看或再次操作正在运行的进程。

    总结:

    通过使用nohup命令、screen命令或tmux命令,我们可以在退出终端窗口后继续运行Linux服务器上的进程。具体使用哪种方法取决于个人偏好和实际需求。

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

400-800-1024

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

分享本页
返回顶部