Bash init - 在特定用户下启动服务

Dav*_*der 11 linux bash ubuntu init

我正在尝试在bash(Ubuntu)中创建一个init脚本,该脚本在特定用户下启动服务.

除此之外还有更好的方法吗?

su - <user>  -c "bash -c  'cd $DIR ;<service name>'"
Run Code Online (Sandbox Code Playgroud)

Car*_*arl 20

Ubuntu使用start-stop-daemon已经支持此功能的.

使用/etc/init.d中的框架文件:

sudo cp /etc/init.d/skeleton /etc/init.d/mynewservice

适当地编辑我的新服务.

将以下参数添加到调用start-stop-daemon的行中:

--chuid username:group

例:

更改

start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \

start-stop-daemon --start --quiet --chuid someuser:somegroup --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \

最后,注册您的服务并启动它:

update-rc.d mynewservice defaults 99 && service mynewservice start

有关start-stop-daemon的更多信息,请点击此处


Man*_*y D 4

或者,您可以使用文件daemon中定义的函数/etc/init.d/functions

daemon --user=<user> $DIR/program
Run Code Online (Sandbox Code Playgroud)

如果你研究一下它的语法,你可以做其他事情,比如定义 PID 文件位置、设置良好级别等等。否则,它对于将服务作为守护进程启动非常有用。使用 启动的服务daemon可以很容易地被另一个函数 function 终止killproc