如何获取与nohup一起运行的程序列表

Nil*_*ter 59 linux shell centos nohup

我正在通过SSH连接访问运行CentOS(Linux发行版)的服务器.由于我无法始终保持登录状态,因此我使用"nohup [command]&"来运行我的程序.

我找不到如何获得我开始使用nohup的所有程序的列表."工作"只有在我退出之前才能解决.之后,如果我再次注销,则jobs命令不显示任何内容,但我可以在日志文件中看到我的程序仍在运行.

有没有办法获得我开始使用"nohup"的所有程序的列表?

pra*_*upd 88

当我开始时$ nohup storm dev-zookeper,

方法1:使用jobs,

prayagupd@prayagupd:/home/vmfest# jobs -l
[1]+ 11129 Running                 nohup ~/bin/storm/bin/storm dev-zookeeper &
Run Code Online (Sandbox Code Playgroud)

方法2: 使用ps命令.

$ ps xw
PID  TTY      STAT   TIME COMMAND
1031 tty1     Ss+    0:00 /sbin/getty -8 38400 tty1
10582 ?        S      0:01 [kworker/0:0]
10826 ?        Sl     0:18 java -server -Dstorm.options= -Dstorm.home=/root/bin/storm -Djava.library.path=/usr/local/lib:/opt/local/lib:/usr/lib -Dsto
10853 ?        Ss     0:00 sshd: vmfest [priv] 
Run Code Online (Sandbox Code Playgroud)

带有?=> nohup运行程序的TTY列.

描述

  • TTY列=与进程关联的终端
  • STAT列=进程的状态
    • S =可中断睡眠(等待事件完成)
    • l =是多线程的(使用CLONE_THREAD,就像NPTL pthreads那样)

参考

$ man ps #然后搜索 /PROCESS STATE CODES

  • `$ ps xw` 对我有用。 (3认同)
  • **方法2没有列出以'nohup`**开头的程序.它列出了没有附加到TTY的进程,这是一个完全不同的事情:以'nohup`开头的进程保持附加到它们的父TTY,直到它被关闭; 没有附加到TTY的进程不一定以`nohup`开头.也就是说,方法2在其他*进程中列出*,*使用`nohup`运行的程序中的一些*. (2认同)
  • 作业对我不起作用,仅适用于同一ssh会话,如果我断开连接并再次连接,它将不再列出先前列出的正在运行的nohup进程 (2认同)

mvp*_*mvp 26

而不是nohup,你应该使用screen.它实现了相同的结果 - 您的命令正在运行"分离".但是,您可以恢复屏幕会话并返回其"隐藏"终端,并查看该终端内的最新进展.

screen有很多选择.我经常使用这些:

要开始第一次屏幕会话或接管最近的分离会话:

screen -Rd 
Run Code Online (Sandbox Code Playgroud)

要脱离当前会话: Ctrl+ACtrl+D

您也可以启动多个屏幕 - 阅读文档.

  • 似乎是我的一个很好的选择.我还发现我可以用"ps auwx"找到PID (6认同)
  • 问题清楚地问*是否有办法获得我开始使用"nohup"的所有程序的列表?*,但这个答案甚至没有解决这个问题.为什么接受? (5认同)
  • 因为早在2013年,这是唯一有帮助的答案. (2认同)

小智 17

如果你有标准输出重定向到"nohup.out",只需看看谁使用这个文件

lsof | grep nohup.out
Run Code Online (Sandbox Code Playgroud)

  • 这是一个聪明的方法。但就我而言,这不会返回任何结果。尽管我确信 nohup 命令仍在运行,并且它正在使用 nohup.out 文件。 (2认同)

Old*_*Pro 6

您无法准确获取开始的命令列表,nohup但您可以使用命令查看它们以及其他进程ps x。以 开头的命令nohup将在 TTY 列中有一个问号。

  • “ps x”没有帮助,但我发现“ps auxw”有帮助。 (3认同)

Jcr*_*w06 5

您也可以只使用 top 命令,您的用户 ID 将指示正在运行的作业及其时间。

$ top

(这将显示所有正在运行的作业)

$ top -U [user ID]

(这将显示特定于用户 ID 的作业)