sudo两个进程的转换方法

有时候业务需要非root账号运行,但是sudo启动后ps -ef|grep myapp是2个进程,不方便维护管理.

添加账号

#指定用户id,不用设置密码,不允许使用shell,这里允许有家目录做以后可能临时中转空间
useradd deploy -u 10000 -s /sbin/nologin  

修改目录权限

chown -R deploy.deploy /data/api/myapp
chown -R root.root /data/api/myapp/config

指定用户运行

#如果是直接 sudo -u deploy  java -jar myapp-api.jar >out.log & 会看到2个进程

方法1

#常规用法
sudo -u deploy sh -c "nohup java -jar ${APP_RFILE} > out.log &"

#如果是允许登录的用户可以用
su zhangsan sh -c  "java -version"

#Jenkins中调用时双引号需要转义
JAR_CMD="sudo -u deploy sh -c \"nohup java -jar ${APP_RFILE} > out.log & \" "

方法2

#start.sh
cd /data/api/myapp
nohup java -jar myapp-api.jar >out.log &

#指定用户启动,用bash去启动脚本,父进程就成1了
sudo -u deploy bash start.sh

#ps -ef|grep myapp-api是看到的就是一个进程,就避免看到2个进程杀错

清理还原

userdel -r deploy #删除账号,包括该账号的家目录

posted on 2022-12-08 11:30  vihan_z  阅读(151)  评论(0编辑  收藏  举报

导航