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

时间:2013-05-29 08:37:48

标签: linux shell centos nohup

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

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

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

5 个答案:

答案 0 :(得分:79)

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

METHOD1:使用jobs

prayagupd@prayagupd:/home/vmfest# jobs -l
[1]+ 11129 Running                 nohup ~/bin/storm/bin/storm dev-zookeeper &

方法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] 

包含? =>的TTY列nohup正在运行的程序。

<强>描述

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

<强>参考

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

答案 1 :(得分:23)

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

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

开始第一个屏幕会话或接管最新的分离会话:

screen -Rd 

要从当前会话分离: Ctrl + A Ctrl + D

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

答案 2 :(得分:11)

如果您将标准输出重定向到“nohup.out”,只需查看谁使用此文件

lsof | grep nohup.out

答案 3 :(得分:4)

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

答案 4 :(得分:3)

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

$ top

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

$ top -U [user ID]

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