Centos6.5 永久修改DNS地址的方法
1、配置ip地址文件 /etc/sysconfig/network-scripts/ifcfg-eth0
添加一行
DNS1=8.8.8.8 #手动添加一个dns地址;
DNS配置文件/etc/resolv.conf 的地址会自动匹配手动添加的地址;重启网卡后不会清除;
2、手动添加dns地址 DNS配置文件 /etc/resolv.conf
nameserver 8.8.8.8
配置ip地址文件 /etc/sysconfig/network-scripts/ifcfg-eth0
添加
PEERDNS=no #添加后不会去打扰 /etc/resolv.conf 文件
DHCP环境下,在/etc/resolv.conf 手动添加dns地址后,重启网卡,会自动清除;添加到/etc/sysconfig/network-scripts/ifcfg-eth0的dns地址不会清除;
静态配置IP的环境下,/etc/resolv.conf 手动添加dns地址,重启后不会清除;
CentOS6自定义服务脚本
创建脚本
CentOS6的服务脚本都是存放在/etc/init.d这个目录中,只有在这个目录下面,脚本才可以被service和chkconfig控制,以sshd服务脚本为例,我们就在这个目录创建testsrv脚本吧
1.自定义脚本格式
vi /etc/init.d/sshd
#!/bin/bash #shebang机制 # # sshd Start up the OpenSSH server daemon # # chkconfig: 2345 55 25 # description: SSH is a protocol for secure remote shell access. \ # This service starts up the OpenSSH server daemon.说明:
(1).定义脚本必须定义的行是shebang机制,chkconfig和description这三行
(2).chkconfig中2345
chkconfig是一个管理开机启动程序
代表在使用chkconfig –add sshd加入chkconfig列表时候,对应启动模式开机时候是否自动启动(linux对应6个状态模式),如果将2345改为-,则代表所有这些模式都不开机启动。
我们可以看一下sshd服务在不同状态模式下是否设为开机启动,如下,我们发现2345模式下是on,[root@CentOS6 ~]# chkconfig --list sshd
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off#发现对应2345模式是on状态
(3).chkconfig中的55和25
系统在启动时候,是有一定的启动顺序的,关机时候也是有顺序的。那么为什么会要求有顺序呢?系统的服务是有依赖的,比如说sshd服务,需要网络服务,如果在网络服务还没有启动起来的时候就启动sshd服务,那肯定会导致sshd服务启动不起来,同样,在关机时候如果先关掉网络服务,sshd将会因为网络的中断而导致未知错误,因此要定义服务启动顺序。
我们来查看3模式下,服务启动的脚本
发现里面都是软连接,分为K和S系列的,查看一下软连接的指向,发现都是指向的是init.d中的服务脚本,如下:
[root@CentOS6 ~]# ls -l /etc/rc.d/rc3.d/S55sshd lrwxrwxrwx. 1 root root 14 May 17 14:10 /etc/rc.d/rc3.d/S55sshd -> ../init.d/sshd让我来告诉你为什么吧。
是因为服务开机时候,如果进入的是3多用户模式,按照字符顺序执行此/etc/rc.d/rc3.d/中软连接,开机执行的是S(start)开头的软连接,关机执行的是K(kill)的软连接,那么排列在前面的软连接自然要先执行,这样就可以控制服务的启动顺序了。
因此我们在自定义脚本时候,尽量将第一个数写大,第二个数写小,这样在保证所有其他服务开启后,启动我们自定义的脚本,关机时候我们自定义的服务先关掉后再关掉其他服务。有没有觉得设计的很奇妙。现在回到55和25。在加入chkconfig管理时候,55则代表开机启动时候生成S55sshd的软连接,25代表生成K25sshd的软连接。
(4).description行,顾名思义,是描述信息。在centos4,5中,必须写,在centos6中,可以不需要定义
2.自定义脚本示例
创建一个简单的脚本,功能实现不是太完整,还有bug,但是我们的目的是为了演示是否成功,如果在企业内,就需要严谨起来了,此处我们创建一个testsrv服务脚本
vi /etc/init.d/testsrv#!/bin/bash #chkconfig: - 99 01 ## #description: this is a test custom script! case $1 in start) ping 127.0.1 echo testsrv is running... ;; stop) kill `pidof ping` echo testsrv is stoped ;; *) echo Usage:`basename $0` start|stop|restart esac我们在定义脚本时候,chkconfig第一个参数尽量写大,第二个参数尽量写小
[root@CentOS6 ~]# chkconfig --add testsrv
[root@CentOS6 ~]# chkconfig --list testsrv
testsrv 0:off 1:off 2:off 3:off 4:off 5:off 6:off测试
加入开机启动
1.先赋予脚本执行权限
2.加入chkconfig管理列表chkconfig --add testsrv
3.检查是否在对应状态下生成软连接
由于定义的在所有模式下都不是开机启动的,因此不会生成S开头的脚本
那么我们设定在3模式下开机启动[root@CentOS6 ~]# chkconfig --level 3 testsrv on
[root@CentOS6 ~]# chkconfig --list testsrv
testsrv 0:off 1:off 2:off 3:on 4:off 5:off 6:off
[root@CentOS6 ~]# ls /etc/rc.d/rc3.d/S99testsrv
/etc/rc.d/rc3.d/S99testsrvservice控制
发现已经成功,只不过最后面显示running,是因为ping有标准输出,而echo又在ping的后面,所以结束后会显示这一行字符。
CentOS 7 下,如何设置DNS服务器
在CentOS 7下,手工设置 /etc/resolv.conf 里的DNS,过了一会,发现被系统重新覆盖或者清除了。和CentOS 6下的设置DNS方法不同,有几种方式: 1、使用全新的命令行工具 nmcli 来设置
#显示当前网络连接 #nmcli connection show NAME UUID TYPE DEVICE eno1 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802-3-ethernet eno1 #修改当前网络连接对应的DNS服务器,这里的网络连接可以用名称或者UUID来标识 #nmcli con mod eno1 ipv4.dns "114.114.114.114 8.8.8.8" #将dns配置生效 #nmcli con up eno1
2、使用传统方法,手工修改 /etc/resolv.conf
- 修改 /etc/NetworkManager/NetworkManager.conf 文件,在main部分添加 “dns=none” 选项:
[main] plugins=ifcfg-rh dns=none
- NetworkManager重新装载上面修改的配置
# systemctl restart NetworkManager.service
- 手工修改 /etc/resolv.conf
nameserver 114.114.114.114 nameserver 8.8.8.8
CentOS7利用systemctl添加自定义系统服务
CentOS7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,存在系统服务里,即:/usr/lib/systemd/system目录下.
CentOS7的每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install]
1
|
[Unit]部分主要是对这个服务的说明,内容包括Description和After,Description 用于描述服务,After用于描述服务类别 |
1
2
3
4
5
6
7
8
9
10
|
[Service]部分是服务的关键,是服务的一些具体运行参数的设置. Type=forking是后台运行的形式, User=users是设置服务运行的用户, Group=users是设置服务运行的用户组, PIDFile为存放PID的文件路径, ExecStart为服务的具体运行命令, ExecReload为重启命令, ExecStop为停止命令, PrivateTmp=True表示给服务分配独立的临时空间 注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错! |
1
|
[Install]部分是服务安装的相关设置,可设置为多用户的 |
首先,使用systemctl start [ 服务名(也是文件名) ] 可测试服务是否可以成功运行,如果不能运行则可以使用systemctl status [ 服务名(也是文件名) ]查看错误信息和其他服务信息,然后根据报错进行修改,直到可以start,如果不放心还可以测试restart和stop命令。
接着,只要使用systemctl enable xxxxx就可以将所编写的服务添加至开机启动即可。
实例:服务用于开机运行tomcat项目:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#vim /usr/lib/systemd/system/tomcat.service [Unit] Description=java tomcat project After=tomcat.service [Service] Type=forking User=users Group=users PIDFile=/usr/local/tomcat/tomcat.pid ExecStart=/usr/local/tomcat/bin/startup.sh ExecReload= ExecStop=/usr/local/tomcat/bin/shutdown.sh PrivateTmp= true [Install] WantedBy=multi-user.target |
添加可执行权限:
1
|
chmod 754 /usr/lib/systemd/system/tomcat.service |
设置为开机自启动:
1
|
#systemctl enable tomcat.service |
常用指令(以tomcat服务为例):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
启动某服务 systemctl start tomcat.service 停止某服务 systemctl stop tomcat.service 重启某服务 service tomcat restart systemctl restart tomcat.service 使某服务自动启动(如tomcat服务) systemctl enable tomcat.service 使某服务不自动启动 systemctl disable tomcat.service 检查服务状态 systemctl status tomcat.service (服务详细信息) systemctl is -active tomcat.service(仅显示是否Active) 显示所有已启动的服务 systemctl list-units --type=service |
Comments | NOTHING