【发布时间】:2018-04-17 18:09:06
【问题描述】:
我一直在创建一个安装脚本,仅用于在 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 天的时间。
之前的尝试:
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
为您提供的任何帮助提前欢呼。
【问题讨论】:
-
您已经在重新启动,为什么您的脚本需要进一步重新启动??
-
are all interactive and require input from the user,我不认为这是做事的写方式。相反,您应该使用配置文件并使这些启动脚本非交互式.. -
第一个脚本正在配置内部代理和域凭据的设置,在使用它之后,我发现确保它能够恢复的最简单方法是重新启动系统。我可以结合最后 2 个脚本,这将使它更容易,并且不需要第二次重新启动,我越想它就越有信心重新启动。
-
我已经尽我所能做到了,但所需的输入是域凭据和团队隶属关系以及其他我无权从其他系统中提取并自动进入的点点滴滴脚本,此时,并非所有开发人员都将使用 Linux。
标签: linux bash scripting systemd upstart