我将此 bash 设置配置为与 Wifi 管理器一起运行,该管理器提供 HOTSPOT、CONNECTING、CONNECTED 等事件
我想根据事件运行脚本并立即返回,而不是等待脚本完成,因为 Wifi 管理器会暂时暂停,直到脚本运行。
#!/bin/bash
Logfile="/home/arjun/Desktop/bash/logfile.txt"
echo "Started" >> $Logfile
if [ "$1" == "CONNECTING" ]; then
echo "args CONNECTING" >> $Logfile
elif [ "$1" == "HOTSPOT" ]; then
echo "args HOTSPOT" >> $Logfile
kill $(< my_sinatra_server.pid)
elif [ "$1" == "CONNECTED" ]; then
echo "args CONNECTED" >> $Logfile
nohup ~/Desktop/ruby/sinatra/api/api.rb >> /log/file 2>&1 &
echo $! > my_sinatra_server.pid
echo "PID is $(< my_sinatra_server.pid)"
else
echo "Invalid args" >> $Logfile
fi
echo "bye:-)" >> $Logfile
我已经运行正常,但我还需要运行其他脚本,以及 Python 和 Nodejs 脚本。
我怎样才能添加这些呢?与nohup
Ruby类似吗?nohup
为每个脚本添加一个新行?这些会导致交还控制权出现延迟吗?
如果我想将其委托给另一个可执行的 bash 文件,是否可以将所有这些nohup
命令复制到新的 bash 文件并立即将控制权返回给 Wifi 管理器?这样会好很多吗?那我该怎么办呢?
答案1
它与 Ruby 的 nohup 类似吗?为每个脚本添加一个新的 nohup 行?这些会导致交还控制权出现延迟吗?
您建立的模式是nohup
您将在后台使用命令&
并将 PID 记录$!
到文件中,这是您将看到用于此类工作的典型模式。
只需继续使用该模式和后台您想要以这种方式启动的所有进程,并将其 PID 记录到文件中即可。
如果我想将此委托给另一个可执行 bash 文件,是否只需将所有这些 nohup 命令复制到新的 bash 文件并立即将控制权返回给 Wifi 管理器即可?这样会好得多吗?那么我该怎么做呢?
是的,您可以将所有这些命令移至另一个脚本,然后只需通过一次调用即可调用它们。很难说这是好还是坏,这完全取决于您想要完成的任务以及您想要如何管理这些事情。
就如何做到这一点而言,您似乎已经知道该怎么做了。将所有内容放入脚本中并从 WiFi 管理器应用程序调用它。
您可能需要将一些参数传递到该脚本中。为此,您可以简单地使用对此脚本的调用,如下所示:
my_sub_cmd.bash $arg1 $arg2
$1
然后在该命令中通过、$2
等传递命令行参数。