Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash Can';t通过$捕获和回显PID!_Bash_Unix_Tcpdump_Nohup - Fatal编程技术网

Bash Can';t通过$捕获和回显PID!

Bash Can';t通过$捕获和回显PID!,bash,unix,tcpdump,nohup,Bash,Unix,Tcpdump,Nohup,我尝试将tcpdump作为后台进程启动,并获取其PID。该脚本将监视系统的磁盘空间、cpu和内存,如果任何进程超过阈值,则终止tcpdump进程。但是我不能使用$!。输出为空 #!/bin/bash `nohup tcpdump port 389 -i bond0 -s 0 -w /tmp/capture.pcap > nohup2.out 2>&1&` my_pid=$!

我尝试将tcpdump作为后台进程启动,并获取其PID。该脚本将监视系统的磁盘空间、cpu和内存,如果任何进程超过阈值,则终止tcpdump进程。但是我不能使用$!。输出为空

#!/bin/bash
`nohup tcpdump port 389 -i bond0 -s 0 -w /tmp/capture.pcap  > nohup2.out 2>&1&`
my_pid=$!                                                                      
echo $my_pid                                                                   

flag=1                                                                         
exit 1                                                                         
输出是

bash # sh t.sh

bash #     
更改此项:

`nohup tcpdump port 389 -i bond0 -s 0 -w /tmp/capture.pcap  > nohup2.out 2>&1&`
为此:

nohup tcpdump port 389 -i bond0 -s 0 -w /tmp/capture.pcap  > nohup2.out 2>&1 &
反勾号意味着命令应该在子shell中运行,其输出被捕获并替换为新命令。例如,此命令:

`echo foo bar`
foo bar
相当于此命令:

`echo foo bar`
foo bar

因为它运行
echo foo bar
,所以捕获输出
foo bar
,然后运行
foo bar
。在您的情况下,您完全不需要这样做(如果只是因为您将输出重定向到一个文件),所以您可以直接删除它们。

删除反勾号!