ubuntu添加开机自动启动程序方法


一、开机启动时自动运行程序


1、Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程


etc目录有多个rc目录如下:


   rc0.d/    rc2.d/    rc4.d/    rc6.d/    rcS.d/
   rc1.d/    rc3.d/    rc5.d/    rc.local
   其中以d结尾的目录,里面存放各种软连接文件,基本上都是连接到/etc/init.d/ 里面的可执行程序 比如常用的xinetd reboot ufw 等系统自带的后台服务器进程和安装的进程 nfs-kernel-server ssh 等


  


2、 启动过程是以rc0.d最先启动,最后启动的脚本/etc/rc.d/rc.local 文件


   添加启动程序测试 vim /etc/rc.local  , 在exit 0 前面加入如下测试命令


   echo "test start" > /opt/teststart


 


3、重启系统,待系统完全启动之后,cat /opt/teststart  会看到test start输出;其它的可执行文件同样按照这种方法添加即可。




 


二、 登录时自动运行程序


 


   用户登录时,bash先自动执行系统管理员建立的全局登录script :


     /ect/profile


   然后bash在用户起始目录下按顺序查找三个特殊文件中的一个:


     /.bash_profile、


     /.bash_login、 


     /.profile,


   但只执行最先找到的一个。因此,只需根据实际需要在上述文件中加入命令就可以实


   现用户登录时自动运行某些程序(类似于DOS下的Autoexec.bat)。


 


三、退出登录时自动运行程序


   退出登录时,bash自动执行个人的退出登录脚本


     /.bash_logout。


   例如,在/.bash_logout中加入命令“tar -cvzf c.source.tgz *.c”,则在每次退出


   登录时自动执行 “tar” 命令备份 *.c 文件。  




四、gnome-terminal命令


1、ubuntu 下打开一个终端的默认快捷方式(ctrl+alt+t),对应的命令就是执行gnome-terminal命令



2、gnome-terminal 命令相关描述


直接在su方式下切换到root用户下输入这个命令,拿不到root用户真正的环境变量,会导致创建失败,执行出现异常




3、gnome-terminal  命令参数


A、直接执行gnome-terminal 


    新创建出来的终端是当前终端 的一个子进程,父进程会被阻塞住,(可以用gnome-terminal  & 后台运行查看pid号)




B、gnome-terminal --maximize


打开新的终端之后最大化,脱离当前终端




C、gnome-terminal --full-screen
打开新的终端之后全屏显示,脱离当前终端




D、普通用户打开之后切换到超级用户的脚本命令


sudo gnome-terminal --maximize


E、全屏打开


gnome-terminal --full-screen




F、打开一个终端切换执行一个新的进程


gnome-terminal -e 'bash -c "ls; exec bash"'






五、系统信息查看命令




gnome-system-monitor


 




六、开机添加启动创建一个终端


1、linux启动最后的一个脚本是rc.local,由于这个配置文件是由root用户执行的,如果直接在这个脚本添加创建终端的命令gnome-terminal & 肯定不行




2、开机添加创建终端的命令在普通用户脚本就可以


vim /home/user/.profile 在最后一行


加入gnome-terminal &


重启即可 (注:创建出来的终端是普通用户的权限)


 


 


七、ubuntu开机以root方式登录


1、设置root密码
sudo passwd root


2、切换到root用户
sudo - root

3、想要在登录界面使用root身份登录,可编辑/etc/lightdm/目录下的lightdm.conf文件,如没有此文件,直接创建
vim /etc/lightdm/lightdm.conf
文件内容最终为:
[SeatDefaults]  


autologin-user=root #启动后以root身份自动登录
greeter-session=unity-greeter
user-session=ubuntu


greeter-show-manual-login=true  #手工输入登陆系统的用户名和密码
allow-guest=false #禁用guest用户


4、重新启动,开机直接是以root方式登录
修改完之后执行reboot命令重启Ubuntu生效


 


 


八、最终目标,设置开机自动创建一个终端,同时只能执行一次


1、启动脚本如下  (/home/yue :是我普通用户的目录)


vim /home/yue/start.sh


START_DIR=/tmp/lock
START_FILE=$START_DIR/lockfile.net
if [ "$1" = "rm_file" ]; then
        rm $START_DIR -rf
        echo "rm  start  lock dir"
        exit 0
elif [ "$1" = "start_test" ]; then
        if [ -f "$START_FILE" ]; then
                echo "exist lock file"
                exit 0
        else
                mkdir $START_DIR
                touch $START_FILE
                echo "start test "
        fi
fi

#TAG_DIR=/home/yue
#TAG_SERVER=$TAG_DIR/client
#echo $TAG_SERVER

gnome-terminal -e 'bash -c "/home/yue/test; exec bash"' &



2、编写测试程序  (/home/yue :是我普通用户的目录)



cd /home/yue



vim test.c



 



#include <stdio.h>



int main(void)



{



    printf("hello world\n");



    return 0;



}



gcc test.c -o test



 



3、添加到开机启动选项里面



A、vim /etc/init.d/rcS  (根据前面所说的启动顺序,可以去/etc/ 下查看rc0.d里面的连接脚本的关系知道开机最先启动的脚本是rcS)



/home/yue/start.sh rm_file  #删除上一次运行测试脚本生成的文件锁






B、vim /root/.profile (root 用户启动创建终端并运行测试程序)


/home/yue/start.sh start_test


 


4、开机重新运行OK