linux终端关闭进程消失解决

内容目录
cd  /8t/cloudreve_3.8.3/&&nohup ./cloudreve   >/dev/null 2>&1 &

当你在终端中使用 nohup 命令并将输出重定向到 /dev/null 后,进程依然会在终端关闭时结束。这可能是因为进程仍然依赖于终端会话。为了确保进程在终端关闭后仍然运行,可以尝试以下几种方法:

方法一:使用 nohup 并且不重定向输出

cd /8t/cloudreve_3.8.3/ && nohup ./cloudreve &

在这种情况下,nohup 会自动将输出重定向到 nohup.out 文件中,你可以检查这个文件来查看输出日志。

方法二:使用 screentmux

screentmux 是两个常用的终端多路复用器,能够在终端会话关闭后保持会话活动。

使用 screen

  1. 启动一个新的 screen 会话:

    screen -S mysession
  2. 在 screen 会话中运行你的命令:

    cd /8t/cloudreve_3.8.3/ && ./cloudreve
  3. 退出 screen 会话(注意,不是关闭):
    Ctrl-a,然后按 d 键,这样会将你从会话中分离出来。

  4. 要重新连接到 screen 会话:

    screen -r mysession

使用 tmux

  1. 启动一个新的 tmux 会话:

    tmux new -s mysession
  2. 在 tmux 会话中运行你的命令:

    cd /8t/cloudreve_3.8.3/ && ./cloudreve
  3. 分离 tmux 会话:
    Ctrl-b,然后按 d 键。

  4. 要重新连接到 tmux 会话:

    tmux attach -t mysession

方法三:使用 systemd 创建服务

如果希望程序作为系统服务来运行,可以创建一个 systemd 服务单元文件。以下是一个示例:

  1. 创建一个服务单元文件:

    sudo nano /etc/systemd/system/cloudreve.service
  2. 添加以下内容:

    [Unit]
    Description=Cloudreve Service
    After=network.target
    
    [Service]
    ExecStart=/8t/cloudreve_3.8.3/cloudreve
    WorkingDirectory=/8t/cloudreve_3.8.3
    Restart=always
    User=yourusername
    Group=yourgroupname
    
    [Install]
    WantedBy=multi-user.target
  3. 重新加载 systemd,启动并启用服务:

    sudo systemctl daemon-reload
    sudo systemctl start cloudreve
    sudo systemctl enable cloudreve

这样一来,你的程序就会作为一个系统服务运行,即使关闭终端,程序也会继续运行。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注