LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 940|回复: 4

如何把脚本当成一个进程来杀掉?

[复制链接]
发表于 2008-4-9 20:06:11 | 显示全部楼层 |阅读模式
我用C编了一个程序,比如名字为 mypro
我要用它算几个东西,于是写了一个脚本 a
脚本a的内容如下

#-----a-----
mypro  1  > out1

mypro  2  > out2

mypro 3  > out3
#-----------

然后 chmod +x a
./a
提交该任务
然而刚提交后发现有些地方不对,需要终止任务重新来
这时
1.  我用top查看进程,占CPU 100%的是进程 mypro,而不是a
2.  我直接 Ctrl-C 终止,要按三下Ctrl-C 才结束掉
     而且生成了 out1~out3 三个输出文件。

我想可否让系统把整个脚本a当做一个进程,就是说在top里查看
看到的就是a,而不是a里调用的mypro?
这样终止a时也只需一个Ctrl-C就可以了,而且不会生成 out2 和 out3.
发表于 2008-4-9 21:21:12 | 显示全部楼层
你首先要理解到,只有shell内置的命令才会和当前的shell是一个进程(pid),而其他的命令,包括你自己写的应用程序在shell里运行的话都将是shell的子程序。如果你想跟踪子进程的话,就必须适用linux的进程之间同步的机制。
回复 支持 反对

使用道具 举报

发表于 2008-4-9 22:22:25 | 显示全部楼层
当成一个进程不太可能, 不过想要 Ctrl-C 同时关闭脚本和子进程倒是有可能.

去查查 trap 命令吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-9 22:50:07 | 显示全部楼层
我的意思是通过某种方式把脚本a当成一个程序
也就是说系统运行脚本a跟运行一个独立的程序一样,分给a一个单独的进程号。


不知是否有这样的软件,就是把脚本编译成可执行程序的东东,如果有的话,把脚本a编译成可执行程序,那运行时自然就是一个独立的进程了。
回复 支持 反对

使用道具 举报

发表于 2008-4-10 01:25:05 | 显示全部楼层
野蛮一点,killall -9 a
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表