gpt4 book ai didi

service - 无法启动 systemd 服务

转载 作者:行者123 更新时间:2023-12-04 19:41:38 27 4
gpt4 key购买 nike

我正在尝试创建一个运行控制台的服务,以便将来将我的所有 crontab 命令转换为 systemd,但我总是收到这个错误,我尝试了不同的教程和同样的问题。

# systemctl status hello-world.service
● hello-world.service - Hello World Service
Loaded: loaded (/usr/lib/systemd/system/hello-world.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since mié 2019-10-09 10:06:59 CEST; 4s ago
Process: 26080 ExecStart=/usr/share/nginx/html/scripts-systemd/hello-world.sh (code=exited, status=203/EXEC)
Main PID: 26080 (code=exited, status=203/EXEC)

oct 09 10:06:59 ns37 systemd[1]: Started Hello World Service.
oct 09 10:06:59 ns37 systemd[1]: hello-world.service: main process exited, code=exited, status=203/EXEC
oct 09 10:06:59 ns37 systemd[1]: Unit hello-world.service entered failed state.
oct 09 10:06:59 ns37 systemd[1]: hello-world.service failed.


hello-world.sh 文件
#!/bin/bash

while $(sleep 30);
do
echo "hello world"
done

hello-world.service 文件
[Unit]
Description=Hello World Service
After=systend-user-sessions.service

[Service]
Type=simple
ExecStart=/usr/share/nginx/html/scripts-systemd/hello-world.sh

[Install]
WantedBy=multi-user.target

我正在使用 Centos 7

编辑:
由于 crontab 的问题,我需要做的是每天在特定时间执行控制台命令。
我正在使用这个例子来检查一切是否正常,一旦工作就改变命令。
以下是 crontab 命令的示例:
*/10 * * * * cd /usr/share/nginx/html/mywebsite.com; php wp-cron.php >/dev/null 2>&1
0 0 */3 * * date=date -I; zip -r /root/copias/copia-archivos-html-webs$date.zip /usr/share/nginx/html`
15 15 * * * wget -q -O /dev/null https://mywebsite.com/?run_plugin=key_0_0

编辑2:完成!我已经设法做到了并且现在可以工作,我将代码留在这里,以便对其他人有用

hello-world.sh 文件
#!/usr/bin/env bash
/usr/bin/mysqldump -user -pass db_name >/root/copias/backupname.sql

Hello World 服务
[Unit]
Description=CopiaSql

[Service]
Type=oneshot
ExecStart=/bin/bash /usr/share/nginx/html/scripts-systemd/hello-world.sh

[Install]
WantedBy=multi-user.target

hello-world.timer
[Unit]
Description=Runs every 2 minutes test.sh

[Timer]
OnCalendar=*:0/2
Unit=hello-world.service

[Install]
WantedBy=timers.target

感谢大家的帮助!

最佳答案

我有一个显示在控制台上的首次启动安装服务,它看起来像:

[Unit]
After=multi-user.target
# tty getty service login promts for tty1 & tty6
# will not be seen until this install completes.
Before=getty@tty1.service getty@tty6.service

[Service]
Type=oneshot
ExecStart=/bin/bash -c "export TERM=vt100;/var/ssi/firstboot_install.sh"
StandardOutput=tty
StandardInput=tty

[Install]
WantedBy=multi-user.target

我运行的脚本也有这个代码来启动
#---------------------------------------------------------------------
# Switch to tty6 so input is allowed from installation questions
# Change back to tty1 at end of this script to show normal booting
# messages from systemd.
#---------------------------------------------------------------------
exec < /dev/tty6 > /dev/tty6
chvt 6

在这个脚本的最后我把它改回来
# Now that the system has been registered and has a few channels added,
# I can have the installation go back to the main Anaconda output screen
# on tty1
chvt 1
exec < /dev/tty1 > /dev/tty1

exit 0

这可能不是您想要的,但您可以根据自己的需要进行调整。这里的目标是在引导序列期间启动的控制台上显示一些内容。我的脚本询问了一些安装问题,其中不允许在 tty1(控制台)上输入,这就是为什么我更改为 tty6,因此在第一次引导安装期间允许输入。

您的脚本尝试:
#!/bin/bash

exec < /dev/tty6 > /dev/tty6
chvt 6

while $(sleep 30);
do
echo "hello world"
done

chvt 1
exec < /dev/tty1 > /dev/tty1

这对于您尝试做的事情可能有点过头了,但如果您需要输入
从控制台,你应该对 tty6 做同样的事情

关于service - 无法启动 systemd 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58299725/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com