用户注销后进程继续运行

用户注销后进程继续运行

我已将以下代码放入我的.profile

ps cax | grep jackd > /dev/null
if [ $? -eq 0 ]; then
    echo "Jack is aready running."
fi

if [ "$SESSION_TYPE" != "remote/ssh" ] && [ "$DISPLAY" ]; then
    ps cax | grep jackd > /dev/null
    if [ $? -eq 0 ]; then
        echo "Jack is aready running."
    else
        jackd --sync -P80 -p128 -dalsa -dhw:UA25 -r48000 -p64 -n3 -Xraw &
        jack_wait -w
        alsaj &
        ~/deployed/syzmo/x86_64-GNU%2fLinux/syzmo_client_studio &
    fi
fi

当我从 KDE 注销并登录 tty1 时,我看到消息“Jack 已在运行”。列出进程时,我看到我已经启动了它,所以我断定 jack 从未停止过。怎么会这样?

以下是我从 tty1 登录时通过 ps -u 看到的内容:

  PID TTY          TIME CMD
 2053 ?        00:32:39 jackd
 2079 ?        00:00:00 alsaj
 2082 ?        00:11:00 alsa_in
10265 tty1     00:00:00 bash
10295 tty1     00:00:00 ps

为什么我仍然能在正在运行的进程中看到jackd和?alsa_in

跟进:

由于注销时进程不会终止,因此必须有一个不以 root 身份运行的相应注销脚本。有没有办法清除由此引起的任何副作用.profile

答案1

由于您没有停止它,因此它仍在运行。您不应该在 .profile 中启动这样的守护进程。正常安装的 jackd 包将设置为在适当的时间通过 upstart 自动启动和停止。

相关内容