我一直在创建一个安装脚本,仅用于在Ubuntu Xenial Desktop上安装代理和开发配置。
我有2个脚本都是交互式的,需要用户输入,我的挑战是每个脚本在安装后需要重新启动,然后需要自动打开另一个控制台并与下一个脚本交互。
这是一个流程图:
script_1.sh > reboot > script_2.sh
V V
usr input usr input
required required
我已完成所有脚本并正常工作,因为我们的挑战是尝试配置Systemd,因此在重新启动后它将打开一个控制台并开始下一个脚本。
我是新手,但是我使用rc.local构建了一些东西,然后阅读帖子的大小,说这不适合用于这些类型的安装,我开始使用upstart然后我发现它已被弃用了我我需要使用Systemd。
显然,我会建立这些脚本并将其复制并在此过程中完成后将其删除,这是先前的尝试,如果这样做的任何帮助都会很棒,因为我已经失去了2天。< / p>
之前的尝试:
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
提前为您提供任何帮助而欢呼。
答案 0 :(得分:0)
您可以创建可能帮助您的用户系统脚本(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服务。
如果您可以计算开始超时,您可以创建服务文件,在第一个脚本的末尾创建/启用它,然后在第二个脚本结束时禁用/删除它。