我有很长时间运行的shell脚本(运行超过24小时)。
这是非常简单的脚本。它只是从dir读取xml文件并执行文件内容的sed
操作。目录中有1百万个xml文件。
我的脚本名称类似于runDataManipulation.sh
当我运行以下命令时
ps -ef | grep "runDa*"
然后有时我将我的流程视为
username 34535 1 48 11:42:01 - 224:22 /usr/bin/ksh ./runDataManipulation.sh
但如果我在几秒钟之后运行完全相同的命令,那么我根本看不到上述过程。
由于我的进程一直在运行所以我希望ps
命令始终显示进程。
如果我对我的脚本的进程ID执行grep
,就像..
ps -ef | grep 34535
然后有时候我会看到像
这样的结果username 34535 1 51 11:42:01 - 229:22 [ksh]
有时候我会看到像
这样的结果username 45678 34535 0 14:12:11 - 0:0 [sed]
我的主要问题是......为什么在grep
使用脚本名称进行处理时,我看不到我的进程。我正在使用AIX 6.1
。
答案 0 :(得分:0)
在我看来,一个脚本会在另一个进程中生成脚本。
如果您查看ps命令的结果,第一行显示进程ID为34535,这是主要ID(比如父ID)。
username 34535 1 51 11:42:01 - 229:22 [ksh]
这个过程依次启动另一个进程,这可以在下面看到,注意父进程的id(34535)在下面的行中提到,第一个数字是主进程Id,第二个数字是呼叫过程。
用户名45678 34535
如果您更改了ps命令以包含sed命令,那么如果脚本仍在运行,您应该总能看到一些结果!