树莓派设置开机执行, 指定用户和用户组

Linux 开机执行有几种方式, 一种是设置成系统服务, 随着系统加载而启动, 另一种是修改 /etc/rc.local 脚本, 在 exit 之前加入需要执行的语句. 后者默认是以 root 用户执行, 非 root 执行可以这么写
su - yourname -c 'command'

yourname 是用户名, command 是想要执行的命令. 但在实际中, 查看后台进程发现多了一个su 进程, 就是上面的命令. 无视它倒也没什么事情, 但完美主义者总觉得不舒服. 咱们还是聊聊系统服务的方式.

systemctl 是一个很好的工具, 管理系统的自启动服务. 看以下的使用方式:
# 以当前用户启动 pulseaudio
systemctl --user start pulseaudio
# 设置当前用户 login 时启动 pulseaudio
systemctl --user enable pulseaudio

# 任意用户 login 时启动 pulseaudio
sudo systemctl --global enable pulseaudio


# 以上都需要账号登录后才启动服务, 还不是真正意义上的开机自启动
# 开机自启动. 必须以 root 执行下面命令
$ sudo systemctl enable pulseaudio
Created symlink /etc/systemd/system/default.target.wants/pulseaudio.service → /lib/systemd/system/pulseaudio.service.
Created symlink /etc/systemd/system/sockets.target.wants/pulseaudio.socket → /lib/systemd/system/pulseaudio.socket.

# 第一次创建服务会生成上面的文件
# 打开 pulseaudio.service 在 [Service] 下面加入指定的用户, 用户组
User=pi
Group=lp
# 修改运行条件
ConditionUser=root

# 重启服务
sudo systemctl restart pulseaudio

# 停止服务
systemctl stop pulesaudio
# 删除当前用户的自启动服务
systemctl --user disable pulseaudio

如果你像上面那样运行 sudo systemctl enable pulseaudio 发现报错, 意思是找不到 pulseaudio.service . 是的, pulseaudio 原本是不能以 root 运行的, 迂回的办法, 先这样执行

systemctl --user enable pulseaudio
然后把生成的 pulseaudio.* 移到 /lib/systemd/system/ 下. 修改好, 然后再次执行 sudo systemctl enable pulseaudio , 没有报错了
 

更多有趣实用的技巧, 关注我的公众号随时为你奉上

 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值