1.网络配置
- 位置:/etc/sysconfig/network-scripts/ifcfg-eth0
ifcfg-eth0 、ifcfg-ens32/33
- 配置内容:
DEVICE=eth0 //网卡名称
TYPE=Ethernet
ONBOOT=yes //开机启动
BOOTPROTO=static //模式有:static | dhcp
IPADDR=10.0.0.8 //IP 地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=10.0.0.2 //网关
DNS1=8.8.8.8
DNS2=114.114.114.114
重启网卡: systemctl restart
network
/etc/init.d/network restart
2、主机名配置文件 centos6
- 位置:/etc/sysconfig/network
- 配置内容:
NETWORKING=yes #是否启用网络
HOSTNAME=testhost #主机名
3、主机名配置文件 centos 7.x
- 位置:/etc/hostname
- 配置内容:
testhost #自定义 重启生效
hostnamectl set-hostname 主机名 这个命令相当于修改了/etc/hostname
4、主机hosts文件域名解析
- 位置:/etc/hosts 本地的DNS(ip和域名的绑定)
- 配置内容:
10.0.0.1 www.baidu.com
比较3、4、5:
关于Hosts与network的异同之处:
1、hosts文件,路径:/etc/hosts,此文间是在网络上使用的,用于解析计算机名称和IP地址的映射关系,功能相当于windows下面的c:\windows\system32\drivers\etc\hosts文件,如果想使用计算机名称来访问对方的主机,需要把对方计算机的名称和IP地址写到本机的hosts文件中
2、network文件,路径:/etc/sysconfig/network,此文件是针对本计算机的,是给计算机起的一个名字,是计算机的一个标识。可以使用uname -n 命令来查看本地计算机的计算机名称
3、hostname 主机名 是临时修改hostname,可以让主机名生效
5、开机自动挂载系统文件
/etc/fstab文件是Linux系统下用来存放文件系统的静态信息的文件。当文件系统被手动挂载之后,挂载信息必须写入/etc/fstab这个文件中,否则下次开机启动时仍然需要重新挂载。
- 位置:/etc/fstab
- 配置内容:mount /dev/sdb1 /data
/dev/mapper/centos-root / xfs defaults 0 0
UUID=be561977-73a0-414e-b798-b1e8b399dc75 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /data ext4 defaults 0 0 dump | fsck
6、系统开机自启命令存放文件
- 位置:/etc/rc.local
- 配置内容:可以放自定义脚本
- 写了一个shell(mount /dev/sdb1 /wwww,)
- 创建某个文件
- 检查系统健康(shell)
- 收集系统磁盘,cpu,内存使用情况
- 检查某个服务是否启动了,如果没启动,可以通过命令启动
iptables-restore < /etc/sysconfig/iptables #例如,把网络规则随开机恢复
例子:
# 创建一个文件并写入内容
echo "This is a test from rc.local" > /tmp/rc.local.test
7、启动脚本目录文件位置(服务管理部分)
位置:/etc/init.d/,所有服务的默认启动脚本都存放在这里,是一个链接文件,链接到/etc/rc.d/init.d目录,centos 7 以后通过systemd 管理脚本放放/usr/lib/systemd/system/。->/etc/systemd/system/
systemctl start|stop|status|restart xxxxx
【yum install xxx】->加入到systemd【systemctl 】
【源码安装的】->1. 需要在/usr/lib/systemd/system/创建一个mysql.service
Systemd 默认从目录 /etc/systemd/system/ 读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录 /usr/lib/systemd/system/,真正的配置文件存放在那个目录。
在Linux系统中,特别是使用systemd作为初始化系统(init system)的系统中,/usr/lib/systemd/system/
和 /etc/systemd/system/
这两个目录都与systemd的服务单元(service units)配置有关,但它们有不同的用途和角色。
- /usr/lib/systemd/system/
这个目录通常包含由软件包提供的默认systemd服务单元文件。这些文件是当相应的软件包被安装时自动放置在这个目录下的。通常,用户不应该直接修改这些文件,因为当软件包更新时,这些文件可能会被覆盖。但是,你可以通过在这个目录下创建符号链接(symlinks)或使用其他systemd工具(如systemctl enable
)来启用或禁用服务。
- /etc/systemd/system/
这个目录用于存放系统管理员自定义的systemd服务单元文件或覆盖/usr/lib/systemd/system/
中默认服务单元文件的配置。当systemd在启动或管理服务时,它会首先查看/etc/systemd/system/
目录下的文件,然后再查看/usr/lib/systemd/system/
目录下的文件。这意味着如果两个目录下都存在同名的服务单元文件,/etc/systemd/system/
目录下的文件会覆盖/usr/lib/systemd/system/
目录下的文件。
管理员通常会在/etc/systemd/system/
目录下创建自定义的服务单元文件,或者创建指向/usr/lib/systemd/system/
目录下默认服务单元文件的符号链接,并使用systemctl
命令来启用或禁用这些服务。例如,如果你想要启用一个名为example.service
的服务,并且该服务的默认单元文件位于/usr/lib/systemd/system/
目录下。
总之,/usr/lib/systemd/system/
和/etc/systemd/system/
这两个目录在systemd中扮演着不同的角色,前者用于存放默认的服务单元文件,后者用于存放自定义或覆盖默认配置的服务单元文件。
8、定时任务配置目录文件位置
- 位置:/var/spool/cron/root
- 配置内容:crontab -l 查看 、crontab -e 编辑
* * * * * echo '123' >/dev/null 2>&1 # *表示任意,所以上面的命令意思是任何时间都要执行.
Crontab使用格式详细说明,也就是linux中定时任务设置的时间格式。
* * * * * 需要执行的命令(command)
分 时 日 月 周 执行的命令
第1列 表示分钟1~59 每分钟用*或者 */1表示
第2列 表示小时0~23(0表示0点)
第3列 表示日期1~31
第4列 表示月份1~12
第5列 标识号星期0~6(0表示星期天)
第6列 需要运行的命令
例子:
每5分钟运行一次Cronjob
0,5,10,15,20,25,30,35,40,45,50,55 * * * * command
简单配置:
*/5 * * * * command
每10分钟运行一次Cronjob
*/10 * * * * command
每15分钟执行一次Cronjob
*/15 * * * * command
#!/bin/bash
echo "Backup script executed at $(date)" >> /root/backup.log
###crontab -e
0 10 * * * /root/backup_script.sh
9、环境变量配置文件文件目录
/etc/profile,用来存放用户的环境变量配置(例如umask等)在登陆shell设置环境变量的时候,该文件会调用/etc/profile.d目录下的文件,我们定义别名,或者其他变量的时候,可以在/etc/profile.d下创建文件即可。
个人总结 /etc/profile 设置全局变量 ~/.bashrc 用户变量(若没有设置则看全局变量)
.bash_profile 文件中内容调用的是 ~/.bashrc文件
举例1:配置oracle环境变量
cat >/etc/profile.d/oracle.sh << EOF
export GRID_HOME=/u01/app/19c/grid
export ORACLE_HOME=/u01/app/oracle/product/19c/db
export PATH=$GRID_HOME/bin:$GRID_HOME/OPatch:/sbin:/bin:/usr/sbin:/usr/bin
EOF
举例2: 配置java /etc/profile
export JAVA_HOME=/usr/lib/jdk/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib) export PATH=$PATH:$JAVA_HOME/bin
举例3: 配置redis环境变量 /etc/profile
export REDIS_HOME=/usr/local/share/redis
export REDIS_CONF=/etc/redis
export PATH=$PATH:$REDIS_HOME/bin
#备注:/etc/profile 配置环境变量,要执行source /etc/profile
命令才能生效。
10、用户管理相关配置
- /etc/passwd 文件记录了系统中每个用户的用户名、UID号、GID号、主目录、shell等信息
- /etc/shadow 文件记录了每个用户的口令,以及口令保持周期等
- /etc/group 组信息
- /etc/pam.d/system-auth 密码设置及登陆控制文件
11、linux内核墙修改 selinux 关闭
- 位置:/etc/selinux/config
- 配置内容:
SELINUX=disabled #这是关闭的意思,打开时enable
setenforce 0
getenforce
备注:selinux的主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
# setenforce 0
# getenforce结果:permissive //放开(关闭)# setenforce 1
# getenforce结果:enforcing //执行(开启)
- 关闭SELinux可能会带来以下影响:
- 降低系统安全性:selinux提供了强大的安全功能,保护系统免受恶意软件和攻击的侵害。关闭selinux会降低系统的安全性,使系统更容易受到攻击。
- 增加系统漏洞的利用风险:关闭selunux会增加系统漏洞被利用的风险。即使系统中存在某些漏洞,selinux也可以限制攻击者的权限,减少漏洞的利用程度。
- 影响服务器的性能:selinux会占用较多的系统资源,导致服务器资源占用率较高。当服务器的负载较大时,关闭selunx可以释放出更多的系统资源,提高服务器的性能,减少延迟。
总的来说,关掉selinux可能会降低系统安全性,增加系统漏洞的利用风险,并影响服务器的性能。
- 我们在部署应用时要关闭selinux,原因有以下几点:
- selinux是一种强制访问控制机制,可以增强Linux系统的安全性。而在Kubernetes环境中,selinux可能干扰容器与宿主机之间的交互,导致意外的权限问题。
- 关闭selinux可以简化Kubernetes的部署和管理。
关闭selinux是为了确保应用的稳定性和正常运行。
12、修改资源限额
linux资源限制配置文件是/etc/security/limits.conf;限制用户进程的数量对于linux系统的稳定性非常重要。
limits.conf文件限制着用户可以使用的最大文件数,最大进程,最大内存等资源使用量。
- 位置:/etc/security/limits.conf
- 配置内容:
* soft nofile 655350 #任何用户可以打开的最大的文件描述符数量,默认1024,这里的数值会限制tcp连接
* hard nofile 6553500
* soft nproc 655350 #任何用户可以打开的最大进程数
@wps hard nproc 650000
@student hard nofile 65535
@student soft nofile 4096
@student hard nproc 50 #学生组中的任何人不能拥有超过50个进程,并且会在拥有30个进程时发出警告
@student soft nproc 30
@adms hard rss 11000000
备注:hard和soft两个值都代表什么意思呢?
soft是一个警告值,而hard则是一个真正意义的阀值,超过就会报错
ulimit -a | 修改命令:ulimit -n 2048 功能:修改当前进程的最大句柄数目 |
soft nproc :单个用户可用的最大进程数量(超过会警告); hard nproc:单个用户可用的最大进程数量(超过会报错); soft nofile :可打开的文件描述符的最大数(超过会警告); hard nofile :可打开的文件描述符的最大数(超过会报错); |
Example:
- 在文件的末尾,添加以下配置项来限制用户的最大文件数:
* hard nofile 10000
* soft nofile 5000
这里的配置项表示:对所有用户生效(*),设置硬限制(hard)和软限制(soft)的最大文件数为10000和5000。
- 继续添加以下配置项来限制用户的最大进程数:
* hard nproc 1000
* soft nproc 500
这里的配置项表示:对所有用户生效(*),设置硬限制(hard)和软限制(soft)的最大进程数为1000和500。
- 最后,添加以下配置项来限制用户的最大内存:
* hard rss 100000
* soft rss 50000
这里的配置项表示:对所有用户生效(*),设置硬限制(hard)和软限制(soft)的最大内存为100000KB和50000KB。
- 保存并关闭文件。
- 重新启动系统或重新登录用户,使新的限制生效:
example code:
# limits.conf 文件示例
# 设置用户为myuser的资源限制
myuser hard nofile 1000 # 最大文件数限制为1000
myuser soft nofile 500 # 软限制文件数为500
myuser hard nproc 200 # 最大进程数限制为200
myuser soft nproc 100 # 软限制进程数为100
myuser hard memlock 512M # 最大内存锁定限制为512MB
myuser soft memlock 256M # 软限制内存锁定为256MB
13、系统参数配置
位置:/etc/sysctl.conf
# 配置完毕后执行sysctl -p 生效。TCP连接
案例:在sysctl.conf配置文件中有一项名为net.ipv4.ip_forward的配置项,用于配置Linux内核中的net.ipv4.ip_forward参数。其值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。
需要注意的是,修改sysctl.conf文件后需要执行指令sysctl -p 后新的配置才会生效。
其他常用:
net.ipv4.tcp_fin_timeout = 30
:设置 TCP 快速关闭超时时间,默认值为 30 秒。这个参数可以防止 TIME_WAIT 过多占用端口,从而提高系统的网络性能。
net.ipv4.tcp_keepalive_time = 300
:设置 TCP 保活超时时间,默认值为 300 秒。这个参数可以检测长时间闲置的连接,如果一段时间内没有数据传输,就会自动关闭连接,从而释放资源。
net.ipv4.
tcp_tw_reuse
= 1
:设置允许重用TIME-WAIT套接字,默认值为 0。开启这个选项可以减少 TIME_WAIT 套接字的数量,从而避免端口耗尽的问题。
net.ipv4.ip_local_port_range = 1024 65000
:设置本地可用的 IP 端口范围,默认值根据系统而定。这个范围通常包括常见的服务端口,例如 HTTP(80)、HTTPS(443)、SSH(22) 等。通过调整这个范围,可以控制系统的网络连接数量和安全性。
fs.file-max =
65536
:设置系统同时打开的最大文件和套接字数量,默认值为 256。对于大型服务器和网络环境,可能需要增加这个值以支持更多的并发连接。
net.ipv4.tcp_max_tw_buckets = 8192
:设置系统中最大的 TIME-WAIT 套接字桶的数量,默认值为 1024。如果你的系统长时间处于 TIME-WAIT 状态的套接字较多,可能需要增加这个值。
net.
ipv4.tcp_tw_recycle
= 1
:设置允许重新使用已经关闭的 TIME-WAIT 套接字,默认值为 0。开启这个选项可以减少 TIME-WAIT 套接字的数量,但需要注意可能存在的安全风险。
net.ipv4.tcp_fin_wait2 = 15
:设置 TCP 快速关闭等待超时时间,默认值为 15 秒。这个参数可以控制 TCP 连接关闭的速度,避免长时间等待导致连接无法释放的问题。
net.ipv4.tcp_keepalive = 3
:设置 TCP 保活连接的数量,默认值为 3。这个参数可以控制系统中保持连接的最小数量,以避免长时间闲置的连接过多占用资源。
14、查看系统信息
cat /proc/meminfo //查看内存
cat /proc/cpuinfo //查看cpu信息
cat /proc/stat //查看cpu运行情况
cat /proc/loadavg //查看cpu负载
cat /proc/mounts //查看系统文件挂载
cat /proc/net/dev //查看网卡丢包
15、ntp 服务配置
- 位置:/etc/ntp.conf
- 配置内容:
server 192.168.31.223 prefer
ntp服务,时钟同步服务(IDC)200服务器 ntp服务器-同步时间
要将Linux系统时钟与阿里云提供的时钟服务同步,你可以使用NTP(Network Time Protocol)协议。阿里云可能提供了NTP服务器,你可以配置你的Linux系统以使用这些服务器作为时间源。
以下是一般的步骤来配置Linux系统以使用NTP同步时间:
- 安装NTP客户端:
在大多数Linux发行版中,NTP客户端是默认安装的。如果没有,你可以使用包管理器来安装。例如,在基于Debian的系统(如Ubuntu)上,你可以使用apt
:
sudo apt update sudo apt install ntp
在基于Red Hat的系统(如CentOS或Fedora)上,你可以使用yum
或dnf
:
sudo yum install ntp
# 或者 sudo dnf install ntp
- 配置NTP服务器:
编辑NTP的配置文件。这个文件通常位于/etc/ntp.conf
。在文件中,你可以添加阿里云的NTP服务器地址。你需要查找阿里云提供的NTP服务器地址,并将其添加到配置文件中。
例如:
sudo nano /etc/ntp.conf
然后,在文件中添加类似下面的行:
server ntp.aliyun.com iburst
注意:上面的ntp.aliyun.com只是一个示例,你需要使用阿里云提供的实际NTP服务器地址。
3. 重启NTP服务:
保存并关闭配置文件后,重启NTP服务以使更改生效:
sudo systemctl restart ntp
- 检查NTP状态:
你可以使用以下命令来检查NTP服务的状态:
sudo systemctl status ntp
以及使用ntpq
命令来查看与NTP服务器的同步状态:
ntpq -p
- 确保NTP开机自启:
你可能还想确保NTP服务在系统启动时自动运行:
sudo systemctl enable ntp
- 防火墙设置:
如果你的Linux系统有防火墙,确保它允许NTP使用的UDP端口123的通信。
7. 时区设置:
除了时间同步外,确保你的系统时区设置也是正确的。你可以使用timedatectl
命令来查看和设置时区。
8. 注意事项:
确保你的Linux系统可以访问阿里云提供的NTP服务器。如果有任何网络限制或防火墙规则阻止访问,你可能需要调整这些设置。
阿里云可能提供了多个NTP服务器,你可以选择使用离你最近的服务器以减少延迟。
如果你使用的是其他的时间同步工具或服务(如chronyd或systemd-timesyncd),你可能需要按照相应的文档或指南进行配置。
16、DNS客户端配置
- 位置:/etc/resolv.conf
- 配置内容:
nameserver 114.114.114.114
nameserver 8.8.8.8
17、sudo授权配置
- 位置:/etc/sudoers --- visudo
- 配置内容:
#表示普通用户拥有root 权限,执行sudo -s 可切换至root;
user1 ALL=(ALL) ALL
#表示user1用户可以在本地以root的身份去执行kill命令,多条命令用逗号分隔;
user1 localhost=(root) /bin/kill,/bin/id
#表示user1用户可以在本地以root的身份去执行命令,不需要输入用户密码,!表示不能修改root密码。
user01 localhost=(root) NOPASSWD:/usr/bin/passwd,!/usr/bin/passwd root
18、sshd配置
xshell (ip,port,user,passwd)->1.1.12.2[sshd
这个服]
在服务器a用 ssh root@1.1.12.2 (ip,port,user,passwd)[sshd这个服]
sshd服务配置文件默认位置/etc/ssh/sshd_config
- 常见的SSH服务器监听的选项如下:
1
Port 1022
//监听的端口号为22
2 Protocol 2 //使用SSH V2协议
3
ListenAdderss 0.0.0.0
//监听的地址为所有的地址
4 UserDNS no //禁止DNS反向解析
- 常见用户登录控制选项如下:
1
PermitRootLogin no
// 禁止root用户登录
2 PermitEmptyPasswords no // 禁止空密码用户登录
3 LoginGraceTime 2m // 登录验证时间为2分钟
4 MaxAuthTries 6 // 最大重试次数6次
5
AllowUsers steven
// 只允许steven用户登录
6
DenyUsers www
// 不允许登录用户 steven
- 常见登录验证方式如下:
1 PasswordAuthentication yes //启用密码验证
2 PubkeyAuthentication yes //启用密匙验证
3 AuthorsizedKeysFile .ssh/authorized_keys //指定公钥数据库文件
19、系统日志
/var/log/xx
机器突然重启了。
(系统日志会有事件记录)事件的时间。
- /var/log/messages:记录整体系统信息,包括系统启动期间的日志。此外,也包含mail,cron,daemon,kern和auth等内容。
- /var/log/boot.log:包含系统启动时的日志。
- /var/log/kern.log:包含内核产生的日志,有助于在定制内核时解决问题。
- /var/log/user.log:记录所有等级用户信息的日志。
- /var/log/yum.log:包含使用yum安装的软件包信息。
- /var/log/cron:每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
- /var/log/secure:包含验证和授权方面信息,例如sshd会将所有信息记录(其中包括失败登录)在这里。
21、文件句柄
在Linux系统中,每当进程需要打开、读取或写入文件时,都会占用一个文件句柄
。文件句柄是一个用于标识和访问打开文件的抽象接口。以下是几种常见的情况,它们会占用文件句柄:
打开文件:无论是常规文件、设备文件还是网络套接字,每次打开都会占用一个文件句柄。
网络连接:在Linux中,网络连接(如TCP/IP连接)也是通过文件句柄来管理的。因此,当建立新的网络连接时,会占用一个文件句柄。高并发网络服务器通常需要大量的文件句柄来同时处理多个客户端连接。
管道、消息队列和共享内存:进程间通信(IPC)机制,如管道(pipe)、消息队列(message queue)和共享内存(shared memory),在创建和使用时也会占用文件句柄。
子进程:当创建子进程时,子进程会继承父进程的文件描述符表,这也会占用文件句柄。
在以下场景中,文件句柄的占用数可能会特别多:
高并发网络服务:例如Web服务器、数据库服务器或FTP服务器,这些服务器需要同时处理大量的客户端连接,每个连接都会占用至少一个文件句柄。
大量文件操作:某些应用程序,如备份程序或文件同步工具,可能需要同时打开和处理大量的文件,这会导致文件句柄的快速消耗。
复杂的IPC:使用多种IPC机制的应用程序,如管道、消息队列和共享内存,可能会因为需要管理多个通信通道而占用更多的文件句柄。
大量子进程:某些应用程序,如某些类型的服务器或守护进程,可能会创建大量的子进程来处理任务。这些子进程会继承父进程的文件描述符表,并可能进一步打开新的文件或套接字,从而增加文件句柄的占用。
当文件句柄数达到系统或用户的限制时,新的文件打开或网络连接尝试可能会失败,导致应用程序出现错误或性能下降。因此,在设计和部署高并发或大量文件操作的应用程序时,需要特别注意文件句柄的管理和配置。
22、os-release 版本配置
/etc/os-release
文件通常由操作系统的发行者创建和维护,包含了如ID、NAME、VERSION等关于操作系统的关键信息。这些信息对于应用程序和系统管理员来说是非常有用的,因为它们可以用来判断操作系统的类型、版本和其他相关属性,从而确保软件包的正确安装和配置。
[root@vm ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"