我尝试在用户登录后在系统启动时自动运行一堆进程。这是我将用来启动一些进程的 create_processes.py 脚本:
#!/usr/bin/python
import subprocess
def f1():
while True:
time.sleep(2)
print "I'm alive"
if len(sys.argv) < 2:
print "assuming main"
subprocess.Popen([""/usr/bin/python",sys.argv[0],"f1"])
elif sys.argv[1] =="f1":
f1()
如果我直接调用它或者尝试nohup python create_processes.py 2>&1 &
一切正常。
当我尝试通过 /etc/profile.d/ 文件夹中的脚本调用它运行时,问题就出现了。此类脚本仅包含上述命令。使用ps
我无法再找到子项。在这种情况下会发生什么?
感谢您的时间,抱歉我的英语不好。
答案1
中的文件/etc.profile.d/
是在/etc/profile
执行时获取的。
以下是相关内容/etc/profile
:
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
从这一行我们可以看出,只有名称以 结尾的文件.sh
才会被获取。
如果您的自定义文件的名称不以 结尾.sh
,请相应地重命名,否则将无法获取。