Bash Can';t通过$捕获和回显PID!
我尝试将tcpdump作为后台进程启动,并获取其PID。该脚本将监视系统的磁盘空间、cpu和内存,如果任何进程超过阈值,则终止tcpdump进程。但是我不能使用$!。输出为空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=$!
#!/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
。在您的情况下,您完全不需要这样做(如果只是因为您将输出重定向到一个文件),所以您可以直接删除它们。删除反勾号!