Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 具有shell交互的autostart脚本_Linux_Bash_Shell - Fatal编程技术网

Linux 具有shell交互的autostart脚本

Linux 具有shell交互的autostart脚本,linux,bash,shell,Linux,Bash,Shell,我想在ubuntu中安装一个脚本,当系统重新启动时自动运行 我已尝试从/etc/rc运行它。问题是: 我的脚本调用一个c程序,该程序在shell中抛出一些Gtk弹出窗口和一些printf,并等待scanf输入。当我将它放在rc.local中并重新启动时,系统似乎没有执行,但实际上它是在引导shell后台运行的(我在/var/log/syslog中看到了这一点),因此无法显示gtk弹出窗口,也无法显示printf/scanf交互 然后我寻找其他方法来获得它,我找到了~/.config/autost

我想在ubuntu中安装一个脚本,当系统重新启动时自动运行

我已尝试从/etc/rc运行它。问题是: 我的脚本调用一个c程序,该程序在shell中抛出一些Gtk弹出窗口和一些printf,并等待scanf输入。当我将它放在rc.local中并重新启动时,系统似乎没有执行,但实际上它是在引导shell后台运行的(我在/var/log/syslog中看到了这一点),因此无法显示gtk弹出窗口,也无法显示printf/scanf交互

然后我寻找其他方法来获得它,我找到了~/.config/autostart/ 这里我放置了一个file.desktop,其中包含以下内容:

 [Desktop Entry] 
Name=backup Exec=/path/myScript.sh  
Type=Application  
Hidden=false 
NoDisplay=false
X-GNOME-Autostart-enabled=true
在myScript中,我执行make和以下操作:

 [Desktop Entry] 
Name=backup Exec=/path/myScript.sh  
Type=Application  
Hidden=false 
NoDisplay=false
X-GNOME-Autostart-enabled=true
gnome终端-e“bash -c\“/path/myprogram;exec bash \“&

最后,这是工作,这是运行时重新启动,但现在的问题是,我的程序正在运行2次一个在q新的外壳(这正是我所寻找的),另一个在启动背景下,因为它发生在rc.local方法。
我该怎么办?

如果您可以使用systemd服务自动启动脚本,效果会更好。最新版本的ubuntu使用systemd服务来调度脚本。您可以从/lib/systemd/system目录中找到一些参考。

您可以粘贴您创建的服务文件吗?backup.service:[Unit]Description=backup service DefaultDependencies=no[service]Type=oneshot ExecStart=/home/jorge/Documentos/scripts/overwatchSaver/backups/script.sh[安装]WantedBy=multi-user.target您必须使用
systemctl enable backup.service
systemctl start enable.service
启用和启动服务,然后您可以检查服务文件的状态
systemctl status enable.service
。这可能会给出一些失败的线索。还可以尝试将Exec start更改为
ExecStart=/bin/bash-c'路径到yourscript.sh'