我正在通过SSH连接访问运行CentOS(Linux发行版)的服务器。 由于我无法始终保持登录状态,因此我使用“nohup [command]&”运行我的程序。
我找不到如何获取我开始使用nohup的所有程序的列表。 “工作”只有在我退出之前才能解决。之后,如果我再次注销,则jobs命令不显示任何内容,但我可以在我的日志文件中看到我的程序仍在运行。
有没有办法获得我开始使用“nohup”的所有程序的列表?
答案 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
正在运行的程序。
<强>描述强>
<强>参考强>
$ 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的作业)