linux - 我如何知道命令 "ps"或 "ps -ef"中的进程是在后台运行还是在前台运行?

标签 linux bash

如何通过命令“ps”或“ps -ef”知道进程是在后台运行还是在前台运行?

我首先想到的是,当我输入 ps -ef 时,有一个名为 TTY 的部分。

当我查看 TTY 列表时,大多数都是“?” (问号)

我想知道这个问号是否意味着进程正在后台运行

我想验证一下我的想法是否正确!

如果没有,我想知道如何知道进程是在后台运行还是前台运行

ps。这里没有使用命令“jobs”

最佳答案

我喜欢这个问题,并且有一个扭曲的解决方案来列出有关后台作业/进程的 ps 信息。

根据作业/后台进程的定义。它们是带有 jobs -l 命令的列表。

  1. 将后台作业 pid 存储在列表中

    echo "$(jobs -l)" | awk '{print $2}' > jobs.lst
    
  2. 将作业列表与当前进程相交

    ps -eo pid,args | grep -f jobs.lst
    

输出是后台作业的 ps -eo pid,args 结果。

为后台作业提供 id 和命令行参数。

附注

我使用ps输出选项-o仅列出pidargs。根据您的喜好更改它,但请确保 pid 存在。

关于linux - 我如何知道命令 "ps"或 "ps -ef"中的进程是在后台运行还是在前台运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56404808/

相关文章:

linux - 在 linux 中使用 sed 就地编辑替换包含特定字符串的行下方的特定行

python - 为什么 pip 在使用 python2.7 创建干净的 virtualenv 时使用全局包?

linux - 试图将特定文件复制到特定文件夹,但有一个问题

python - 如何使用 Python 打开 "~/.bash_profile"

bash - 回车不会删除之前的值

python - 在 Linux 中执行 ping 操作时捕获字符串

android - 从 Android 源 (AOSP) 构建一个工具

php - 为什么在电子邮件中传递 LINUX 命令时我的 catch block 不起作用?

bash - Shell 脚本未通过 crontab 运行,但手动运行良好

linux - 杀死旧进程后启动新进程(如果存在)