我想在bash脚本中获取ftp的pid ...在solaris上运行
这是我的剧本:
#!/usr/bin/bash
...
ftp -inv $FTPDEST <<EOF
user $USER $PASS
put $file
EOF
我想得到ftp命令的pid,以便我可以检查它是否挂起并将其杀死.. 我有服务器崩溃,因为当ftp切断连接时,大约有200 ftp进程打开..由于某种原因,ftp进程保持打开状态。
谢谢你 马里奥答案 0 :(得分:0)
这就是您所描述的内容,但可能并不是您所需要的。这是一种黑客......
#!/usr/bin/bash
trap 'exit 0' SIGUSR1 # this is the normal successful exit point
# trigger the trap if ftp in a background process completes before 10 seconds
(ftp -inv $FTPDEST <<-EOF 2>>logfile
user $USER $PASS
put $file
EOF
kill -s SIGUSR1 $PPID ) & # last line here shuts process down. and exits with success
childpid=$! # get the pid of the child running in background
sleep 10 # let it run 10 seconds
kill $childpid # kill off the ftp command, hope we get killed of first
wait
exit 1 # error exit ftp got hung up
父母等待10秒,而ftp孩子在不到10秒的时间内完成以便成功退出 成功意味着孩子向父母发送SIGUSR1信号,然后通过陷阱退出。
如果孩子花了太长时间,父母就会杀死缓慢的ftp孩子并退出并出错。