一、Linux系统网络服务脚本解释
一般在/etc/init.d文件夹中,名为S40network。使用cat命令查看脚本文件。
#!/bin/sh
#
# Start the network....
#
# Debian ifupdown needs the /run/network lock directory
mkdir -p /run/network
case "$1" in
start)
printf "Starting network: "
/sbin/ifup -a
[ $? = 0 ] && echo "OK" || echo "FAIL"
;;
stop)
printf "Stopping network: "
/sbin/ifdown -a
[ $? = 0 ] && echo "OK" || echo "FAIL"
;;
restart|reload)
"$0" stop
"$0" start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?
第1行:mkdir -p /run/network
创建 /run/network 目录。-p
参数表示如果父目录不存在就递归创建,如果目录已存在也不会报错。这个目录通常用来存放网络服务运行时的临时文件。
第3行:case "$1" in
开始一个case语句,根据脚本的第一个参数($1)来执行不同的操作。这是shell脚本中常用的多分支选择结构。
第4-7行:start分支
当参数是"start"时执行这个分支。printf "Starting network: "
输出提示信息但不换行。/sbin/ifup -a
启动所有在配置文件中定义的网络接口。[ $? = 0 ]
检查上一个命令的退出状态码,0表示成功。如果成功就输出"OK",否则输出"FAIL"。
第8-11行:stop分支
当参数是"stop"时执行。逻辑与start类似,但使用 /sbin/ifdown -a
来关闭所有网络接口。
第12-15行:restart/reload分支
当参数是"restart"或"reload"时执行。"$0"
表示脚本自身,这里先调用自己的stop功能,然后调用start功能,实现重启网络的效果。
第16-19行:默认分支
当参数不匹配前面任何选项时执行。输出使用说明,告诉用户正确的参数选项,然后以退出码1退出(表示错误)。
第21行:exit $?
脚本以最后一个命令的退出状态码退出。$?
保存了前一个命令的退出状态。
二、出场系统设置静态IP地址
1.关闭connman相关服务
在/etc/init.d/目录下创建一个自启动脚本文件S99z_ip,关闭连接管理进程和开启网络服务进程,并设置DNS。脚本代码为
source /etc/profile
case "$1" in
start)
echo "stop S45connman..."
echo "restart network"
echo "set dns"
echo "nameserver 8.8.8.8">>/etc/resolv.conf
;;
stop)
echo "do nothing..."
;;
*)
echo "Usage: $0 {start|stop}"
esac
exit 0
编辑好代码之后,要设置这个文件为可执行文件
chmod a+x S99z_ip
编辑并设置完之后,查看权限
2.配置/etc/network/interfaces
interfaces文件代码解释:
auto lo
iface lo inet loopback
第1行:auto lo
这行指定 lo
接口应该在系统启动时自动启用。auto
关键字告诉系统在执行 ifup -a
命令时(比如系统启动或网络服务启动时),要自动配置这个接口。lo
是 loopback(回环)接口的标准名称。
第2行:iface lo inet loopback
这行定义了接口 lo
的具体配置。iface
是 interface 的缩写,表示开始定义一个网络接口。lo
是接口名称。inet
表示这是IPv4配置(相对于 inet6
表示IPv6)。loopback
指定这是一个回环接口类型。
回环接口是一个特殊的虚拟网络接口,它的作用是让计算机能够与自己通信。它通常分配IP地址 127.0.0.1(localhost),这个地址总是指向本机。当程序需要通过网络协议与同一台机器上的其他程序通信时,就会使用这个接口。
这个配置告诉系统在启动时自动配置回环接口,这对于许多网络服务和应用程序的正常运行是必需的。几乎所有的Linux系统都会有这样的配置。
修改interfaces文件:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.222
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.1.1
在设置之前,需要使用ifconfig检查自己设备所处的网段,我的设备处于192.168.1.223,可以按照这个修改,实际需要视自己情况而定。
注意:不能有多余的空格,不同接口之间需要空一行。
同步之后,执行/etc/init.d/S40network start,可以看到被修改。如果没有成功,使用reboot重启开发板