linux 脚本 另一个程序,linux – 以另一个用户身份启动脚本

我在/etc/init.d/中创建了一个脚本,它必须从其主目录中运行其他(非root特权)用户的其他几个脚本,就像它们启动它们一样.

我使用以下命令启动这些脚本:sudo -b -u< username> < script_of_a_particular_user>

它有效.但对于每个继续运行的用户脚本(例如一些看门狗),我看到一个相应的父sudo进程,仍处于活动状态并以root身份运行.这会在活动进程列表中造成混乱.

所以我的问题是:我如何从现有的bash脚本中启动(fork)另一个脚本作为另一个用户并将其保留为孤立(独立)进程?

更详细的解释:

我基本上试图通过运行在其主目录中找到的各个子目录(名为.startUp和.shutDown)中找到的可执行文件,向计算机上的其他用户提供在系统启动或系统关闭时运行的方法.

由于我没有找到任何其他方法,我编写了我的bash脚本,它正是这样做的,并且我已经将它配置为/etc/init.d/中的服务脚本(通过遵循骨架示例),所以当它运行时使用start参数从.startUp目录启动所有内容,当它使用stop参数运行时,它会启动所有用户的.shutDown目录中的所有内容.

或者我也有兴趣,如果我可以使用一些现有的解决方案来解决这个问题.

在那里接受的答案,使用:sudo -u用户sh -c“daemon& disown%1”,适合我.但我也试过没有被拒绝%1,它是相同的.所以这就像我预期的那样对我有用:

sudo -u bash -c " &"

我现在的另一个问题是,为什么它没有被取消?对于一些潜在的特殊情况,我是否仍然应该离开不公开电话?

更新2

显然这也有效:

su -c " &"

这个电话和sudo电话之间有什么区别吗?我知道这可能是一个完全不同的问题.但是既然我在这里找到了答案,也许是为了这个话题,有人可以在这里澄清一下.

更新3

使用su或sudo这两种方法现在都会在启动计算机后生成一个新的startpar进程(以root身份运行的单个进程).在进程列表中可见为:

startpar -f --

为什么会产生这个过程?显然我做错了,因为没有其他init.d脚本运行此进程.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值