通过shell脚本执行COBOL程序时如何知道我的作业号?
答案1
你能多解释一下你在做什么吗?有几个与您的程序相关的“数字”。
笔记:在我的示例中,美元符号 ( $
) 表示命令提示符,并不意味着作为命令的一部分进行键入。
进程号
当程序在 Unix 中运行时,它会被分配一个进程 ID。假设我有这个程序
sleep
,我运行它 100 秒。$ sleep 10000
然后我可以使用命令找出它的进程 ID
ps
。进程 ID 为9263
,例如:$ ps -eaf|grep sleep saml 9263 5736 0 05:48 pts/1 00:00:00 sleep 10000
后台作业
当程序进入后台时,它可以继续运行,而无需直接连接到执行它的 shell。
$ sleep 10000 & [1] 9370
这里我运行程序
sleep
10000 秒。末尾的与号 (&
) 告诉 shell 将其设置为后台。当作业进入后台时,它们会重新分配一个作业#。在本例中,它被分配了作业#1。这9370
是进程 ID。我们可以使用以下命令找出正在运行的作业
jobs
:$ jobs [1]+ Running sleep 10000 &
我们可以使用 job # 来处理这个进程,要么杀死它,要么将它带回前台。
$ kill %1 $ fg -or- $ fg %1
at 和批处理命令
在职位 # 容量中还有其他地方会出现“数字”。使用命令排队
at
或batch
分配编号的计划任务。$ at -f mycrontest.sh 10pm tomorrow job 14 at Sun Jul 8 22:00:00 2007
计算集群技术
更进一步,如果您的站点正在使用集群技术,例如网格调度器/网格引擎,斯鲁姆, 或者其他的,这些系统也为每个单独的任务分配了作业#。
答案2
#!/bin/bash
cobol_program &
echo "The COBOL program is running in the background with PID: $!"
请参阅“特殊参数”下的man
页面bash