前言
????????最近,遇到了个问题,在LIUNX下如何自启应用程序。这个简单。之前我弄jupyter的时候其实也弄过。不过那个是普通用户。这个程序需要用到串口权限什么的,还有打日志也需要权限。
????????折腾了好久,只想说,LIUNX的权限系统真的繁琐。
开始动手
先把相关的文件准备到位:.serivce服务和.sh脚本
创建xxxx.service文件:sudo vim /etc/systemd/system/xxxx.service,在文件中复制如下内容。‘#’及之后注释内容必须删除,否则运行会报错
[Unit]
Description=xxxx
[Service]
Type=simple
User=fs # 需要更换为自己的用户名
ExecStart=/home/fs/Desktop/xxxx.sh # 更换为自己的路径
[Install]
WantedBy=default.target
接下来就是到上面这个路径下创建这个xxxx.sh脚本文件,具体创建脚本过程此处省略了吧,可以用vim或者可视化或者其他方法,随意。此处重点是.sh内容:
#!/bin/bash
echo "123456"|sudo su #此处echo后面应改为用户自己的管理员密码
cd /home/fs/Desktop/xxxx/build #此处cd指令跳转到 目标文件的路径
sudo ./xxxx #此处是以管理员权限运行目标文件
exit 0
‘#’及之后注释内容记得删除。
.serivce服务文件启动
这部分就和当初配置jupyter的时候一样了。
sudo systemctl enable xxxx.serivce
sudo systemctl start xxxx.serivce
?.serivce服务文件关闭自启动
sudo systemctl stop xxxx.serivce
sudo systemctl disable xxxx.serivce
简评
? ? ? ? 根据笔者的使用经验,在一个终端下,使用过一次sudo并且键入密码后,之后的sudo开头的指令都可以不用再输入密码运行。因此,在.sh文件中,第二排直接切换成root权限,第四排sudo运行的时候就可以不用再echo一次了。经过笔者的测试,在这个脚本下,如果第四排不加sudo,仍然会是普通用户权限,这跟自己开个终端的运行结果不太一样(自己开终端的话,sudo su后就一直是root用户了)。
|