1、root下,vi /etc/sudoers :
[root@guanz etc]# vi /etc/sudoers[root@guanz etc]# # 添加如下内容:guanz ALL=(ALL) ALL示例:#### Allow root to run any commands anywhereroot ALL=(ALL) ALLguanz ALL=(ALL) ALL## Allows members of the 'sys' group to run networking, software,
2、切换至普通用户guanz,并测试命令:
2.1 方式一:【echo ‘passwd’ | sudo -S java -jar ****】
[root@guanz etc]# su guanz[guanz@guanz etc]$ # 进入jar包所在目录下:[guanz@guanz dell]$ cd app/[guanz@guanz app]$ lltotal 599948-rw-rw-r--. 1 guanz guanz59162 Jul 1 11:09 log-210701-01.txt-rwxrwxr-x. 1 guanz guanz 307142072 Jul 1 14:36 test-1.0.jar# 查看当前在运行的窗口程序[guanz@guanz app]$ screen -lsNo Sockets found in /var/run/screen/S-guanz.# 创建窗口,并进入,直接执行java -jar启动,会提示你输入密码:[guanz@guanz app]$ screen -S jar[guanz@guanz app]$ sudo java -jar test-1.0.jar > log-01.txt[sudo] password for guanz: # 通过【echo 'passwd' | sudo -S java -jar ****】再次执行,会直接启动,无需再输入密码。[guanz@guanz app]$ echo '123456' | sudo -S java -jar test-1.0.jar > log-01.txt[sudo] password for guanz: # 查看当前在运行的窗口[guanz@guanz app]$ screen -lsThere is a screen on:17362.jar(Detached)1 Socket in /var/run/screen/S-guanz.[guanz@guanz app]$ # 查看日志文件,发现文件已启动:-07-01 15:01:02.531 INFO 17548 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8890 (http) with context path ''-07-01 15:01:02.534 INFO 17548 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 29.065 seconds (JVM running for 30.46)至此,此命令有效。
2.2 方式二:【EOF】文本块方式
sudo -S java -jar test-1.0.jar > log-01.txt << EOF > passwd> EOF
# 通过【EOF】文本块的方式,再次执行,会直接启动,无需再输入密码。[guanz@guanz app]$ sudo -S java -jar test-1.0.jar > log-01.txt << EOF> 123456> EOF# 查看日志文件,发现文件已启动:-07-01 15:04:39.160 INFO 17848 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8890 (http) with context path ''-07-01 15:04:39.162 INFO 17848 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 29.111 seconds (JVM running for 30.618)至此,此命令有效。
3、自启动.sh脚本文件:
#!/bin/bash#cd ~/app#sudo java -jar test-1.0.jar > log.txtscreen_name=$"jar"screen -dmS $screen_namecmd1=$"cd /home/app";screen -x -S $screen_name -p 0 -X stuff "$cmd1"screen -x -S $screen_name -p 0 -X stuff $'\n'cmd3=$"echo '123456' | sudo -S java -jar test-1.0.jar > log-01.txt";screen -x -S $screen_name -p 0 -X stuff "$cmd3"screen -x -S $screen_name -p 0 -X stuff $'\n'cmd4=$"screen -d jar";screen -x -S $screen_name -p 0 -X stuff "$cmd4"screen -x -S $screen_name -p 0 -X stuff $'\n'