我需要监视文件夹及其子文件夹中的更改,为此我正在使用Watcher 。到目前为止没有问题。但是,我想让 Watcher 守护进程在重新启动时运行。对于陈述者,我尝试了以下方法。
/etc/init.d
我在这里创建了以下简单脚本
#! /bin/bash
watcher.py start
watcher.py
位于/usr/local/bin
文件夹中。然后我从该/etc/rc2.d
文件夹创建了一个符号链接ln -s /etc/init.d/watcher /etc/rc2.d/S99watcher
并重新启动。
检查watcher.py status
报告它没有运行。所以我修改了我的init.d
脚本如下
#! /bin/bash
/usr/bin/python /usr/local/bin/watcher.py start
并重新启动。这次watcher.py status
正确地报告了 Watcher 正在运行。
眼前的问题可能会解决,但我仍然不明白为什么。为什么在交互式 shell 提示符下我可以简单地键入watcher.py start
以启动 Watcher 守护程序,而在启动时我需要明确告诉 Python 运行该脚本?
我通常是通过不放弃而不是深入了解这些东西是如何工作的来让我的 shell 和启动脚本工作的。我希望这里有人能够提供更明智的见解。
$PATH 什么时候设置?
关于
/etc/profile
:我们可以在这里读到:
和:
这意味着
$PATH
(对于所有用户)实际上是由 中的脚本设置的/etc/profile.d
,我们也可以在这里得出结论。查看我的系统,并非所有内容都与此处描述的完全相同,但信息已得到确认。
快速(文本)搜索
/etc
字符串:/usr/local/bin
,我知道它在我的(全局)$PATH
中,生成文件/etc/environment
,其中包含以下行:这些正是我的目录
$PATH
(本地目录除外)。最重要的是,
$PATH
它不是在运行脚本之前/etc/init.d
设置的,而是由脚本实际设置的etc/init.d
该怎么办?
这里的答案建议
$PATH
在脚本顶部设置变量。(再次)查看我的系统,这正是我的/etc/init.d/saned
脚本所做的:当然,像您一样使用绝对路径也可以。