我需要确保一个进程一次只在一个实例中执行。在 Windows 上,您可以使用命名互斥锁。但我不知道在 Linux 上使用什么。
我想我已经看到一种方法是应用程序创建一个独占文件,但我再也找不到它了。您是否使用常规文件功能,忙循环?
我需要导出一个变量,FOO=stringhere以便系统进程可以使用它。我想做的地方是 Upstart 工作。
不幸的是,我尝试按照 Upstart 手册做env FOO=stringhere http://upstart.ubuntu.com/cookbook/#environment-variables
但是系统启动后,echo $FOO什么都不返回。
我是在尝试做一些不可能的事情,还是有什么我应该知道的问题?
我需要$FOO在系统上有一个包含所有用户都可以使用的字符串的变量,但我不知道如何创建一个。
Upstart 的工作显然不是从这个线程开始的解决方案 -是否可以通过 Upstart 导出 env 变量?
但是我不知道我还应该去哪里寻找,因为我已经做了很长一段时间的 Windows 开发人员。
我想为我的 Linux 系统创建一个小脚本,它可以在 PC 启动时做一些简单的事情。脚本很可能是 Python,但也许我会求助于 C 或 shell。
问题是我是 Windows 开发人员,网上的教程看起来很可疑。
其中一些关闭所有文件描述符,一些不关闭,一些实现重启,强制重启,一些不。后来的那些似乎违反了规范。然后是整个 gid 事情,这让我感到困惑。
所以基本上,我不知道我可以将哪个脚本库用于稳定的守护进程,哪些是在我的机器上运行的,所以它是正确的类型。
然后我偶然发现了http://manpages.ubuntu.com/manpages/hardy/man1/daemon.1.html,这似乎是一个安全的创建守护进程的官方过程。但话又说回来,如果我理解正确的话,它是 init.d 中的脚本进行启动,而不是现有进程。
然后是“nice”,它应该用于长时间运行的任务,如果我做对了,可能还有其他一些问题。
所以我在这里迷路了。任何人都可以给我一些警告,不要给我一些警告,也许可以知道在哪里可以在线查找信息?
PS 我要调用的脚本必须调用进程,这是否意味着守护进程会为每个进程分叉?