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   vihan_z  阅读(178)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示