一)需求
部署多块开发板时候,需要开机设置ip,启动vnc,ntp时钟同步,以及运行一系列daemon,这些都要在开机时候启动,所以引入该需求
二)多种开机自启动的方法
1.配置/etc/rc.local
在文件末尾(exit 0之前) 增加自己配置
不用赘述,缺点是有时候启动不了
2.service
3. chkconfig
chkconfig --add c.sh #加到开机自动启动列表
chkconfig c.sh on #启动后永久生效
有些开发板没有此功能,暂时不赘述
4. 编辑/etc/fstab
Device Mount point filesystem parameters dump check
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/root / ext4 defaults 0 1
/dev/nvme0n1 /home/ac/Share ext4 defaults 0 0
5.crontab
crontab -e 命令会打开编辑器,自己可以在其中编辑需要启动的定时命令等。会在/var/spool/cron/crontabs/下生成对应的当前用户名文件.以下例子是设置开机10s启动脚本。crontab启动的脚本不会使用bah的环境变量等,要手动配置
# m h dom mon dow command
@reboot ( sleep 10 ; sh /home/linda/a.sh )
bashrc中:最后一行增加
eval "$RUN_AFTER_BASHRC"
a.sh:
#!/bin/sh
#vncserver
#bash -c "/usr/bin/vncserver"
#gnome-terminal -x bash -c '/usr/bin/vncserver; exec bash'
#gnome-terminal -x bash -c 'export RUN_AFTER_BASHRC="/usr/bin/vncserver" ;exec bash'
bash -c '/usr/bin/vncserver'
6. 在终端桌面配置:开机桌面启动terminal+bashrc启动方式
Create a terminal.desktop in /etc/xdg/autostart/ .
[Desktop Entry]
Name=LXTerminal
Type=Application
Exec=lxterminal
Terminal=false
这是开机启动LXTerminal的终端
如要在开机之后自动启动vnc的话,还需要编辑bashrc文件,如
cd /home/user/
source /home/linda/user.sh
#! /bin/sh
ps aux|grep Xvnc4|grep -v grep > /dev/null
if [ $? -ne 0 ]
then
echo "start process....."
bash -c "/usr/bin/vncserver"
else
echo ""
fi
三)引申出需求:
1. vnc 启动的时候,自动启动多个终端,然后分别运行不同程序
方法:配置~/.vnc/xstartup
eg:
gnome-terminal -x bash -c "cd /home/linda;. start.sh; bash " &
gnome-terminal -x bash -c 'python manage.py; exec bash'
gnome-terminal -x bash -c 'cd /home/user/my_git; export RUN_AFTER_BASHRC="sh test.sh" ;exec bash'
2.自动配置ip地址
方法一)编辑/etc/rc.local,
存在问题:1)有时候开机配置不上,有待后续查明原因
2)只针对单一有线网卡能识别的情况下配置,多网卡,或者网卡用ifconfig识别不出等情况有待后续
nic=$(ifconfig | grep "Link" | awk '{print $1}'| grep -v 'lo\|wlan0\|inet6')
echo "password" | sudo -S sudo ifconfig $nic 192.168.1.102 netmask 255.255.255.0
exit 0
方法二)对应在界面上用手动配置固定网卡的固定ip
存在问题:1)存在网卡更换需要重新配置的问题