【发布时间】:2014-02-06 05:31:14
【问题描述】:
我知道我可以运行此命令来生成后台进程并获取 PID:
PID=`$SCRIPT > /dev/null 2>&1 & echo $!`
并在不同的用户下运行命令:
su - $USER -c "$COMMAND"
我不希望脚本以 root 身份运行,而且我不知道如何将两者结合起来并获得生成进程的 PID。
谢谢!
【问题讨论】:
-
为什么以 root 身份登录,然后以 non-root 用户身份
su来运行进程?为什么首先以 root 身份登录? -
这是用于初始化脚本
-
@t0x13:您的问题是否与
$!引用的过早扩展有关,即它在su执行实际命令之前已扩展?如果我在 CentOS 6.5 上运行以下简单测试,我始终得到非空结果:PID=$(su $USER -c ': & echo ${!}'); echo $PID- 请注意该命令如何由单引号保护以防止过早扩展。在 double 引用的字符串中,使用\$!。