我必须在启动时运行一个bash脚本,它会打开几个终端并在每个终端中运行一些命令。
test.sh (我的bash文件)
#!/bin/bash
sleep 10
gnome-terminal --tab-with-profile="Default" -e 'bash -c '\''export TAB=1; mkdir /home/naman/Desktop/test_folder'\'
testjob.conf
内创建了/etc/init/
:testjob.conf (Upstart配置文件)
description "A test job file for experimenting with Upstart"
author "Naman Kumar"
start on runlevel [2345]
exec echo Test Job ran at `date` >> /var/log/testjob.log
exec bash /home/naman/Desktop/test.sh
现在,问题是testjob.conf
无法在启动时运行test.sh
文件(或者它运行它但不创建文件夹test_folder
)。如果我从testjob.conf中删除最后一行:exec bash /home/naman/Desktop/test.sh
,一切正常,当我cat /var/log/testjob.log
时,我得到正确的输出,但如果最后一行在那里,cat /var/log/testjob.log
没有给出最新产出。
/etc/rc.local
更新bash /home/naman/Desktop/test.sh
,但在启动时似乎也没有运行test.sh
脚本我不确定他们是否运行脚本但是无法创建文件夹,或者他们甚至无法在启动时运行脚本。
注意:我无法使用System -> Preferences -> Startup Applications
,因为我没有任何监视器,因此桌面应用程序无法运行。 (我在没有显示器的单板计算机上运行它。)
有谁知道这里的问题是什么,为什么test.sh脚本在启动时无法正常运行?
提前致谢。
纳曼
答案 0 :(得分:0)
丛马非常接近这一点。 Sysvinit用于系统级守护进程。它对用户不了解。这意味着它没有办法与你的窗口系统(或gnome)进行交互。
此外:没有显示器,你会期望gnome-terminal做什么? gnome-terminal会在显示器上打开一个终端:你看不到它。
你应该注意的是接受你的命令(日期等)并将它们放在/etc/rc.local中,而不是试图将它们插入到不同的终端或任何东西中。只需在那里运行命令。