我一直在创建一个安装脚本,该脚本将仅用于在 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/user/:
[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 服务以运行图形程序。
如果您可以确定开始超时,您可以创建服务文件,在第一个脚本结束时创建/启用它,然后在第二个脚本结束时禁用/删除它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句