【发布时间】:2014-01-14 03:09:54
【问题描述】:
我是 UNIX 新手。我想杀死文件“File_name”的 pid,然后我必须运行“Recycle_All”脚本,该脚本默认采用参数“y”。
#!/bin/ksh
ps -aef | grep "File_name" | awk '{print $2}' | xargs kill -9
/directory>./Recycle y
exit
我无法将“y”作为参数传递。 另外我应该如何验证 pids 是否已被上述命令杀死。
错误是:
用法:kill [ -signo ] pid ... ./soap_rec.ksh[x]: ./Recycle_All: 无法创建【问题讨论】:
-
在传递参数时,它会显示任何错误或警告消息。如果您在脚本中使用
$1来检查第一个参数。 -
我建议您过滤掉 grep 进程本身,例如:
ps -aef | grep "File_name" | grep -v grep | awk ...。您可以使用ps -p PID检查pid 是否存在。 -
查看
killall命令,它可以将进程名称作为参数。比ps | grep简单得多。此外,yes命令可用于将y传送到进程(如果它不支持适当的命令)。 -
为什么会出现这个错误?
-
您的 Unix 发行版上是否安装了
pkill?是的话就去看看吧。
标签: shell unix scripting ksh kill