- 主题:请教linux下建立服务的问题,头痛,求高人指教,谢谢
服务器是亚马逊的Red Hat Enterprise Linux with High Availability,安装的东西非常少。
想在上面建立一个服务,没成功。于是我试着建立一个最简单的服务。
在ec2-user的用户目录下建立了一个名为fakeservice.sh的脚本文件:
#!/bin/sh
echo "fake service started."
sleep 90
echo "after sleep"
在命令行可以正常执行。
进入/etc/systemd/system,sudo vi Myfakeservice.service:
[Unit]
Description= My fake service
After=network.target network-online.target syslog.target
Wants=network.target network-online.target
[Service]
User=ec2-user
Type=simple
ExecStart=/home/ec2-user/fakeservice.sh
[Install]
WantedBy=multi-user.target
保存退出, 然后sudo systemctl daemon-reload
sudo systemctl start Myfakeservice
sudo systemctl status Myfakeservice
[ec2-user@ip-172-31-2-189 system]$ sudo systemctl status Myfakeservice
● Myfakeservice.service - My fake service
Loaded: loaded (/etc/systemd/system/Myfakeservice.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2022-10-17 21:36:17 CST; 44s ago
Process: 1530 ExecStart=/home/ec2-user/fakeservice.sh (code=exited, status=203/EXEC)
Main PID: 1530 (code=exited, status=203/EXEC)
Oct 17 21:36:17 ip-172-31-2-189.us-east-2.compute.internal systemd[1]: Started My fake service.
Oct 17 21:36:17 ip-172-31-2-189.us-east-2.compute.internal systemd[1]: Myfakeservice.service: Main process exited, code=exited, status=203/EXEC
Oct 17 21:36:17 ip-172-31-2-189.us-east-2.compute.internal systemd[1]: Myfakeservice.service: Failed with result 'exit-code'.
这个问题我怎么百度也解决不了。求高人指教。
--
FROM 123.119.235.*
【 在 optimism 的大作中提到: 】
: 服务器是亚马逊的Red Hat Enterprise Linux with High Availability,安装的东西非常少。
: 想在上面建立一个服务,没成功。于是我试着建立一个最简单的服务。
: 在ec2-user的用户目录下建立了一个名为fakeservice.sh的脚本文件:
: #!/bin/sh
: echo "fake service started."
: sleep 90
: echo "after sleep"
: 在命令行可以正常执行。
你这里的执行方式
: 进入/etc/systemd/system,sudo vi Myfakeservice.service:
: [Unit]
: Description= My fake service
: After=network.target network-online.target syslog.target
: Wants=network.target network-online.target
: [Service]
: User=ec2-user
: Type=simple
: ExecStart=/home/ec2-user/fakeservice.sh
和这里不一样吧
: [Install]
: WantedBy=multi-user.target
: 保存退出, 然后sudo systemctl daemon-reload
: sudo systemctl start Myfakeservice
: sudo systemctl status Myfakeservice
: [ec2-user@ip-172-31-2-189 system]$ sudo systemctl status Myfakeservice
: ● Myfakeservice.service - My fake service
: Loaded: loaded (/etc/systemd/system/Myfakeservice.service; disabled; vendor preset: disabled)
: Active: failed (Result: exit-code) since Mon 2022-10-17 21:36:17 CST; 44s ago
: Process: 1530 ExecStart=/home/ec2-user/fakeservice.sh (code=exited, status=203/EXEC)
: Main PID: 1530 (code=exited, status=203/EXEC)
: Oct 17 21:36:17 ip-172-31-2-189.us-east-2.compute.internal systemd[1]: Started My fake service.
: Oct 17 21:36:17 ip-172-31-2-189.us-east-2.compute.internal systemd[1]: Myfakeservice.service: Main process exited, code=exited, status=203/EXEC
journalctl -u Myfakeservice查看一下,应该是权限问题
文件没+x
: Oct 17 21:36:17 ip-172-31-2-189.us-east-2.compute.internal systemd[1]: Myfakeservice.service: Failed with result 'exit-code'.
: 这个问题我怎么百度也解决不了。求高人指教。
--
FROM 222.71.112.*
执行方式是一样的。如下:
[ec2-user@ip-172-31-2-189 system]$ /home/ec2-user/fakeservice.sh
fake service started.
查看的结果。
[ec2-user@ip-172-31-2-189 system]$ journalctl -u Myfakeservice
-- Logs begin at Tue 2022-10-18 11:36:52 CST, end at Tue 2022-10-18 11:38:45 CST. --
Oct 18 11:38:26 ip-172-31-2-189.us-east-2.compute.internal systemd[1]: Started My fake service.
Oct 18 11:38:26 ip-172-31-2-189.us-east-2.compute.internal systemd[1]: Myfakeservice.service: Main process exited, code=exited, status=203>
Oct 18 11:38:26 ip-172-31-2-189.us-east-2.compute.internal systemd[1]: Myfakeservice.service: Failed with result 'exit-code'.
X权限加了,列表显示的结果。
[ec2-user@ip-172-31-2-189 system]$ ls /home/ec2-user/ -l
total 68
-rwxr-xr-x. 1 ec2-user ec2-user 27263 Oct 15 20:45 brook.sh
-rwxrwxr-x. 1 ec2-user ec2-user 67 Oct 17 12:49 fakeservice.sh
【 在 JulyClyde 的大作中提到: 】
: 你这里的执行方式
: 和这里不一样吧
: journalctl -u Myfakeservice查看一下,应该是权限问题
: ...................
--
FROM 123.119.235.*
直接 nohup 不行么 搞这么麻烦
--
FROM 120.236.32.*
关闭SELinux试试?
【 在 optimism 的大作中提到: 】
: 执行方式是一样的。如下:
: [ec2-user@ip-172-31-2-189 system]$ /home/ec2-user/fakeservice.sh
: fake service started.
: ...................
--
FROM 222.71.112.*
这是一种错的不能再错的做法
【 在 xest 的大作中提到: 】
: 直接 nohup 不行么 搞这么麻烦
--
FROM 222.71.112.*
错在哪了请指教
【 在 JulyClyde 的大作中提到: 】
: 这是一种错的不能再错的做法
--
FROM 120.236.32.*
1 从shell启动后台服务,环境被用户设置污染,影响程序的具体行为
2 虽然nohup了,但是在将来的systemd版本中,默认lingering关闭,用户退出之后程序
依然会被kill掉,和古代版本行为不同
3 输出被转向nohup.out 无法正确切分,也可能导致巨型日志文件
4 cgroup被计入user slice
5 不支持故障重启功能
【 在 xest 的大作中提到: 】
: 错在哪了请指教
--
FROM 222.71.112.*
我现在是希望这台云主机启动后自动运行一个服务。
我就不用每次启动主机后,还远程登上去,输入启动服务的命令。
【 在 xest 的大作中提到: 】
: 直接 nohup 不行么 搞这么麻烦
--
FROM 123.119.235.*
你是大神!!!谢谢!!!
【 在 JulyClyde 的大作中提到: 】
: 关闭SELinux试试?
--
FROM 123.119.235.*