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