我在/etc/init.d目录 甲骨文关机脚本的“停止”命令,它的作用:在超过指定时间的bash中杀死进程?
su oracle -c "lsnrctl stop >/dev/null"
su oracle -c "sqlplus sys/passwd as sysdba @/usr/local/PLATEX/scripts/orastop.sql >/dev/null"
.. 问题是,当LSNRCTL或sqlplus的是反应迟钝 - 在这种情况下,该“停止”脚本永远不会结束,服务器无法关闭。唯一的方法 - 就是“杀死-9”。
我想重写脚本,以便5分钟后(例如)如果命令没有完成 - 它应该被终止。
我该如何做到这一点?你能举个例子吗? 我在Linux RHEL 5.1 + bash下。
我不会写在bash;我会寻找一个能为你做到的程序。我们有一个内部工具(不幸的是,这是封闭的源代码)。 – JesperE
Bash难以做到吗?你为什么喜欢你自己的工具? 我可以写一个perl,java工具,但我认为在bash中做更多的本地和简单? – zmische
嗯,在你可以直接访问'waitpid'的地方做某事,它实际上支持超时值。不过,Bash也很好,过去我已经使用它(字面意思就是为了这个目的)。 (前雇主,没有继续访问脚本,自那时起我已经睡了足够多的时间,我不太可能记得那些域特定和有用的)。 –