我正在通过SSH连接访问运行CentOS(Linux发行版)的服务器。由于无法始终保持登录状态,因此我使用“ nohup [command]&”运行程序。
我找不到如何获取使用nohup开始的所有程序的列表。“工作”仅在我注销之前有效。此后,如果我再次登录,jobs命令不会显示任何内容,但是在日志文件中可以看到我的程序仍在运行。
有没有办法获取我使用“ nohup”开始的所有程序的列表?
我正在通过SSH连接访问运行CentOS(Linux发行版)的服务器。由于无法始终保持登录状态,因此我使用“ nohup [command]&”运行程序。
我找不到如何获取使用nohup开始的所有程序的列表。“工作”仅在我注销之前有效。此后,如果我再次登录,jobs命令不会显示任何内容,但是在日志文件中可以看到我的程序仍在运行。
有没有办法获取我使用“ nohup”开始的所有程序的列表?
Answers:
当我开始时$ nohup storm dev-zookeper
,
方法1:使用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
nohup
。它列出了未附加到TTY的进程,这是完全不同的事情:始于进程的进程nohup
始终附加到其父TTY,直到关闭为止;未附加到TTY的进程不一定从开始nohup
。也就是说,方法2除其他进程外,列出了一些使用运行的程序nohup
。
相反nohup
,您应该使用screen
。它达到相同的结果-您的命令正在“分离”运行。但是,您可以恢复屏幕会话并返回其“隐藏”终端,并查看该终端内部的最新进度。
screen
有很多选择。我最经常使用这些:
要开始第一次屏幕会话或接管最近的独立会话:
screen -Rd
要与当前会话分离: Ctrl+ACtrl+D
您还可以启动多个屏幕-阅读文档。
如果您有标准输出重定向到“ nohup.out”,请看看谁使用此文件
lsof | grep nohup.out
man lsof
:“一般而言,线程和任务会继承调用方的文件,但可能会关闭它们并打开其他文件,因此lsof始终报告线程和任务的所有打开文件。” 我在其人中找不到有关nohup的信息,但似乎它使用了两个线程,而不是一个。
您不能完全获得以其开头的命令列表,nohup
但是可以使用该命令将其与其他进程一起查看ps x
。以T开头的命令nohup
在TTY列中将带有问号。