Bash 检查分叉进程的状态?

Bash 检查分叉进程的状态?,bash,fork,ps,nohup,Bash,Fork,Ps,Nohup,乐观地说,我正在运行一个过程,需要几个小时,最坏的情况下可能需要几天 我试过几次运行它,但它似乎从来没有完成(我应该补充一点,我没有编写程序,它只是一个大数据集)。我知道我的命令语法是正确的,因为我一直在使用它来处理较小的数据,而且它工作正常(我将不告诉您细节,因为它对SO来说是模糊的,我认为这与问题无关) 因此,我想让程序作为一个fork以&无人值守的方式运行。 现在,我不能完全确定这个过程是刚刚停止还是正在运行,但所花的时间比预期的要长得多 除了ps和top+1(检查CPU使用情况)之外,是

乐观地说,我正在运行一个过程,需要几个小时,最坏的情况下可能需要几天

我试过几次运行它,但它似乎从来没有完成(我应该补充一点,我没有编写程序,它只是一个大数据集)。我知道我的命令语法是正确的,因为我一直在使用它来处理较小的数据,而且它工作正常(我将不告诉您细节,因为它对SO来说是模糊的,我认为这与问题无关)

因此,我想让程序作为一个fork以
&
无人值守的方式运行。 现在,我不能完全确定这个过程是刚刚停止还是正在运行,但所花的时间比预期的要长得多

除了
ps
top
+
1
(检查CPU使用情况)之外,是否有其他方法检查进程的进度

我唯一的另一个想法是让进程输出一个日志文件,并定期检查日志文件的大小/内容是否增加


作为侧边栏,是否还需要将
nohup
与forked命令一起使用?

为此,我将使用
screen
。有关更多参考信息,请参阅 简要总结如何使用:

screen-S some_session_name
-启动名为
session_name

Ctrl
+
a
+
d
-分离会话


screen-r some_session_name
返回您的会话

您的意思是什么检查进度,程序应该如何知道完成的距离?如果它有任何输出,你可以检查在给定的时间有多少输出。它可能会给您一些关于运行程序和监视其状态的其他想法。正如
123
所说,我们需要更多地了解正在产生的输出。另外,根据您下面的评论,您正在OSx上运行。为此添加一个标记,因为它会影响可用的解决方案。祝你好运。举个例子,我知道一些程序可以设置成生成进度条,但在这个特殊的例子中,它运行在几个大文件中,每次完成一个文件时都会有输出。打开和读取进程可能仍在写入的文件时是否存在任何问题?显然,我可以通过
ls
检查它的大小,而不会“干扰”文件,但这并不能告诉我它是否抛出了错误或什么…@Shelleter我在OSx上,但我运行所有命令的服务器正在使用iTerm连接到你的ubuntu机器。启动屏幕,在该窗口中运行程序。发出屏幕分离命令。关闭您的iTerm。回家,启动一个新的终端连接(iTerm、putty、许多ohters),然后重新连接正在运行的
屏幕
进程,从而监视仍在运行的程序。祝你好运。这是否等同于在iTerm中启动第二个shell实例?好主意,但请在分离之前提醒O.P.启动他的程序;-)!祝大家好运。我从来没有使用过iTerm,所以我不能告诉任何关于它的事情。使用iTerm,您可以选择拆分您当前的shell。如果你在两个shell中
ssh
进入同一个服务器,你会得到两个不同的
tty
数字,因此我猜shell的两个实例会这样做。screen会做同样的事情吗?每个屏幕都有不同的进程和不同的(伪)tty,是的。