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 #删除账号,包括该账号的家目录