我正在通过SSH控制远程Linux机器,我需要能够在运行时知道进程的pid,并在运行后知道它的退出状态
我试图通过SSH发出这个命令
my_cmd&echo $!; 等待$! echo $?;
输出结果如下,正是我所需要的:
焦油recursion与原始文件夹比较
切换用户而不创build中间过程
如何在ImageMagick中使用带标题的stdin
Linux哪个cd工作。 但是cd是bash中的一个内置命令
使用mailx和bash脚本parsing邮件正文
pid ...stdout... exit_status
现在有的时候,显然这个命令太快了,所以我得到了这样的东西:
...stdout... pid exit_status
有没有办法来防止这种行为?
将一个variables列表传递给简单的bash命令
为什么grep在这种情况下不能返回整行?
在bash脚本中引发错误
为什么我的sed命令在使用variables时失败?
bash,找不到命令
当你运行一个后台程序时,它是一个独立的进程,如果需要按照定义的顺序输出,那么就需要做一些同步。 但是通过exec和额外的shell脚本可以很容易地解决这个问题:
第一个脚本,让我们说start :
#!/bin/bash start2 & wait $! echo $?
第二个脚本start2 :
#!/bin/bash echo $$ exec my_cmd
现在第一个脚本启动第二个脚本并等待结果。 第二个脚本打印自己的pid,然后执行与第二个脚本相同的pid运行的程序。
是的,当你使用&你正在调用一个后台进程的输出到标准输出为例…这就是要点。 你的进程执行和stdout打印比pid查询和打印等等发生得更快。所以我推荐你将stdout重定向到/ tmp / tempfile,然后在需要输出的时候打印出来。 …例如:
$ o=/tmp/_o; your_cmd 1>$o 2>$o & echo "pid is $!"; wait $!; r=$?; cat $o; echo "return is $r"; rm -f $o
首先我们将输出变量“o”设置为“/ tmp / _o”临时文件
那么我们运行your_cmd将所有输出(1和2表示stdout和stderr)重定向到$ o(它指向/ tmp / _o)。
然后我们显示该pid
然后我们等待pid
那么我们显示回报
希望这种方式适用于你的情况..希望你不要认为它太复杂。 希望有人回答一个简单的方法来为你做这个解决方法..
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。