我是linux的新手,其任务是编写脚本以使某些工作自动化
目前,我有一个脚本(runme.csh),其内容是这样的
#!/bin/csh -f
read some settings from a file>
while (some condition)
< do some work >
sleep 600
end
现在我需要在同一shell [tcsh]上多次运行脚本副本(将脚本复制到新文件名并运行)
示例
[aruna>] runme1.csh&
[aruna>] runme2.csh&
[aruna>] runme3.csh&
现在,如果我想终止一次运行,则可以执行ps,并通过其名称找到相应脚本的PID并终止。但是我无法找到脚本执行的sleep命令的pid。
有没有一种方法可以给睡眠过程起个名字,以便我可以看到哪个睡眠过程是由哪个脚本执行的?
谢谢:)
答案 0 :(得分:0)
您似乎无法单独使用bash
来完成此操作,因为使用exec -a foo sleep 100
时sleep
仍显示为ps
:
[~ ]$ ps -u corion
PID TTY TIME CMD
...
101468 pts/8 00:00:00 bash
101494 pts/8 00:00:00 sleep
但是使用Perl,您可以轻松更改进程的名称,因为Perl支持
分配给$0
(进程的名称,在Perl中):
perl -wle '$0=shift;sleep shift' sleeper 100
[~ ]$ ps -u corion
PID TTY TIME CMD
...
100740 pts/8 00:00:00 bash
104067 pts/8 00:00:00 sleeper
上面的oneliner将名称更改为给定的第一个参数,然后休眠与给定的第二个参数一样多的时间。