运行bash脚本,在启动时自动打开终端

时间:2015-09-15 22:16:41

标签: linux bash shell boot upstart

我必须在启动时运行一个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'\'  
  1. 我在testjob.conf内创建了/etc/init/
  2. 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没有给出最新产出。

    1. 我还尝试使用/etc/rc.local更新bash /home/naman/Desktop/test.sh,但在启动时似乎也没有运行test.sh脚本
    2. 我不确定他们是否运行脚本但是无法创建文件夹,或者他们甚至无法在启动时运行脚本。

      注意:我无法使用System -> Preferences -> Startup Applications,因为我没有任何监视器,因此桌面应用程序无法运行。 (我在没有显示器的单板计算机上运行它。)

      有谁知道这里的问题是什么,为什么test.sh脚本在启动时无法正常运行?

      提前致谢。
      纳曼

1 个答案:

答案 0 :(得分:0)

丛马非常接近这一点。 Sysvinit用于系统级守护进程。它对用户不了解。这意味着它没有办法与你的窗口系统(或gnome)进行交互。

此外:没有显示器,你会期望gnome-terminal做什么? gnome-terminal会在显示器上打开一个终端:你看不到它。

你应该注意的是接受你的命令(日期等)并将它们放在/etc/rc.local中,而不是试图将它们插入到不同的终端或任何东西中。只需在那里运行命令。