天九歌 2019-07-09 15:18 采纳率: 0%
浏览 559

Linux systemd 自启动脚本无法正常运行(求助分析方向)

在RHEL8.0上,通过systemd service用以下脚本来实现登录后自动切换壁纸。

服务为test.service, bash脚本为test.sh

单独运行Set_background.sh 没有问题,但是当通过test.service去调用的时候,只能设置一次。
设置壁纸的命令成功,但是重置的命令失败。
考虑是因为通过test.service去调用test.sh时,线程出现问题。
请高手指教从哪里去分析。

test.service内容如下:

[Unit]
Description=Change Desktop background

[Service]
ExecStart=/home/test/Desktop/Set_background.sh
After=gdm.service

[Install]
WantedBy=graphical.target

Set_background.sh内容如下:

#!/bin/bash
while true
do
    /usr/bin/gsettings set org.gnome.desktop.background picture-uri 'file:///home/test/Desktop/8-dark.xml' 
    sleep 3
    /usr/bin/gsettings reset org.gnome.desktop.background picture-uri
    sleep 3

done

  • 写回答

1条回答 默认 最新

  • six2me 2024-03-26 08:37
    关注

    systemd是一个服务,是用来执行简单的指令,进行配置,在systemd中,服务应该以非交互的方式运行,并且应该由systemd来监控和管理服务的生命周期。所以systemd调用的脚本不宜使用while true ,你可以使用for执行有数个循环试验下。
    systemd 调用的脚本应该是一个非交互式的,不会无限循环执行的

    评论

报告相同问题?

悬赏问题

  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站