gpt4 book ai didi

linux - 启动终端并在重启后从 systemd 执行脚本

转载 作者:太空宇宙 更新时间:2023-11-04 12:17:10 25 4
gpt4 key购买 nike

我一直在创建一个安装脚本,仅用于在 Ubuntu Xenial 桌面上安装代理和开发配置。

我有 2 个脚本,它们都是交互式的,需要用户输入,我的挑战是每个脚本在安装后都需要重新启动,然后需要自动打开另一个控制台并与下一个脚本交互。

这是流程图:

  script_1.sh  >  reboot  >  script_2.sh 
V V
usr input usr input
required required

我已完成所有脚本并正常工作,我的挑战是尝试配置 Systemd,以便在重新启动后它将打开控制台并开始下一个脚本。

我是新手,但我使用 rc.local 构建了一些东西,然后阅读了很多帖子说将它用于此类安装不是好的做法,我开始使用 upstart 然后我发现它已被弃用并且我我需要使用 Systemd。

显然,我会构建这些脚本,然后将它们复制进去,然后在过程中完成后删除它们,这是早些时候的一次尝试,任何关于如何做到这一点的帮助都会很棒,因为我已经失去了 2 天。

上次尝试:

description     "install script"

start on local-filesystems or runlevel [2345]
stop on runlevel [!2345]

pre-start script
# prepare environment
touch /var/logs/DID.log
exec echo DID installation started `date` >> /var/log/DID.log
end script

script
# do some stuff
exec ~/Documents/script_2.sh
console output
end script

post-stop script
# clean up
exec echo DID stage 2 installation finished `date` >> /var/log/DID.log
end script

提前为您提供的任何帮助干杯。

最佳答案

您可以创建用户 systemd 脚本来帮助您解决问题 (https://wiki.archlinux.org/index.php/Systemd/User)。

这是一个简短的示例,说明如何从 systemd(目前不在 Ubuntu 上,因此不确定这是否适用于路径)在终端中启动脚本,该脚本位于您的 systemd 用户文件夹中,可能是/etc/systemd/用户/:

[Unit]
Description=Start Script in terminal

[Service]
ExecStart=/usr/bin/xterm -hold -e /path/to/your/script.sh

[Install]
WantedBy=graphical.target

这将在我的系统 (Arch) 上运行 systemctl --user start servicename.service

诀窍是在你拥有完整的图形环境后启动它(使用我提供的脚本,如果你运行 systemctl --user enable servicename.service 它几乎肯定会在之前启动你的窗口管理器,因为我不在 Ubuntu 中,所以我无法测试)。这可能有帮助(最后回复):https://superuser.com/questions/759759/writing-a-service-that-depends-on-xorg .他们是 Ubuntu 用户,在登录后获得了 systemd 服务来运行图形程序。

如果您知道开始超时,您可以创建服务文件,在第一个脚本结束时创建/启用它,然后在第二个脚本结束时禁用/删除它。

关于linux - 启动终端并在重启后从 systemd 执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47122380/

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