我正在考虑编写自己的init.d
脚本来控制服务器上运行的多个服务Linux
。我在网上看到一个例子,其中包含:
nohup $EXEC_SCRIPT 0<&- &> $LOG_FILE & echo $! > $PID_FILE
据我了解:
nohup
捕获hangup
信号$EXEC_SCRIPT
是一个包含要运行的命令的变量0<&- &>
以前没有遇到过这个$LOG_FILE
类似于$EXEC_SCRIPT
但包含日志文件路径&
$LOG_FILE
开始在后台登录?$!
是最后一条后台命令的PID>
$!
将结果写入$PID_FILE
我可以用这些知识来解决它,但这0<&- &>
完全让我失望。我不喜欢包含我首先不至少部分理解的内容。
答案1
这些是重定向。
0<&-
关闭文件描述符 0(标准输入)。&>
重定向 stdout 和 stderr(在本例中重定向到日志文件)
echo
你确定之前没有吗$!
?$!
将被解释为命令,并且很可能导致
-bash: 18552: command not found
答案2
&<- 关闭文件描述符。但更根本的是,在 Google 上搜索那些小“&”原子可能会很痛苦!看这个网站关于 bash 重定向以获取背景信息。