时间同步
chrony
1、ntp服务器搭建
yum -y install chrony
vi /etc/chrony.conf
....
#server用户客户端指向,上层NTP服务器
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
....
#允许那个IP或网络访问NTP
allow 192.168.0.0/16
#拒绝那个IP或网络访问NTP
deny 192.169.0.0/16
#设置NTP服务器的层数量
local stratum 10
....
2、启动
systemctl restart chronyd
systemctl enable chronyd
3、客户端
yum -y install chrony
vi /etc/chrony.conf
server 192.168.110.237 iburst
systemctl restart chronyd
systemctl enable chronyd
ntpdate
1、安装工具
yum -y install ntp ntpdate
2、同步网络时间
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' >/etc/timezone
ntpdate time2.aliyun.com
# 加入到crontab
*/5 * * * * /usr/sbin/ntpdate time2.aliyun.com
国内好用时间服务器
cn.ntp.org.cn #中国
edu.ntp.org.cn #中国教育网
ntp1.aliyun.com #阿里云
ntp2.aliyun.com #阿里云
cn.pool.ntp.org #最常用的国内NTP服务器
磁盘分区
分区方式
- fdisk
分区大小范围1-2T - parted
不限制
fdisk
fdisk分区工具用来建立msdos分区方案,其交互模式中的主要指令如下:
- m:列出指令帮助
- p:查看当前的分区表信息
- n:新建分区
- d:删除分区
- t:更改分区标识
- q:放弃分区更改并退出
- w:保存对分区表所做的更改
命令:
fdisk /dev/sdb
parted
交互
[root@localhost ~]# parted /dev/sdb # 使用parted来对GPT磁盘操作,进入交互式模式
GNU Parted 1.8.1 Using /dev/sdb Welcome to GNU Parted! Type ‘help’ to view a list of commands.
(parted) mklabel gpt # 将MBR磁盘格式化为GPT
(parted) print #打印当前分区
(parted) mkpart primary 0 4.5TB # 分一个4.5T的主分区
(parted) mkpart primary 4.5TB 12TB # 分一个7.5T的主分区
(parted) print #打印当前分区
(parted) quit 退出
Information: Don’t forget to update /etc/fstab, if necessary.
1
非交互
parted /dev/sdb mklabel gpt (新硬盘sdb 使用mklabel改变磁盘为gpt)
parted /dev/sdb mkpart primary 0 2048000 (分区2T,起始0开始到结束大小m)
parted /dev/sdb mkpart primary 2048001 4096000
parted /dev/sdb p (查看)
格式化
#格式化已经分好的区
mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb1
#挂载
mount /dev/sdb1 /mnt
逻辑卷LVM
搭建本地yum源
提示:
镜像地址:https://renwole.com/linux-mirror-download/download-centos-linux-iso-images
1、http搭建方式
yum -y install httpd
mkdir /var/www/html/centos7
mount /data/iso/CentOS-7-x86_64-Everything-1810.iso /var/www/html/centos7
systemctl restart httpd
systemctl enable httpd
2、ftp搭建方式
yum -y install vsftpd
mkdir /var/ftp/centos7
mount /data/iso/CentOS-7-x86_64-Everything-1810.iso /var/www/html/centos7
systemctl restart vsftpd
systemctl enable vsftpd
3、客户端配置
vi /etc/yum.repos.d/Local_CenOS7.6.repo
[centos7]
name=centos7.6
baseurl=http://172.16.37.34/centos7
#baseurl=ftp://172.16.37.34/centos7
#baseurl=file:///mnt
gpgcheck=0
enable=1
网络配置
制作RPM包
安装rpm-build软件
1、安装rpm-build软件包
[root@web1 ~]# yum -y install rpm-build
2、生成rpmbuild目录结构
[root@web1 ~]# rpmbuild -ba nginx.spec //会报错,没有文件或目录
[root@web1 ~]# ls /root/rpmbuild //自动生成的目录结构
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
3、准备工作,将源码软件复制到SOURCES目录
[root@web1 ~]# cp nginx-1.12.2.tar.gz /root/rpmbuild/SOURCES/
4、创建并修改SPEC配置文件
[root@web1 ~]# vim /root/rpmbuild/SPECS/nginx.spec
Name:nginx
Version:1.12.2
Release: 10
Summary: Nginx is a web server software.
License:GPL
URL: www.test.com
Source0:nginx-1.12.2.tar.gz
#BuildRequires:
#Requires:
%description
nginx [engine x] is an HTTP and reverse proxy server.
%post
useradd nginx //非必需操作:安装后脚本(创建账户)
%prep
%setup –q //自动解压源码包,并cd进入目录
%build
./configure
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
%files
%doc
/usr/local/nginx/* //对哪些文件与目录打包
%changelog
使用配置文件创建RPM包
1、安装依赖软件包
[root@web1 ~]# yum -y install gcc pcre-devel openssl-devel
2、rpmbuild创建RPM软件包
[root@web1 ~]# rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec
[root@web1 ~]# ls /root/rpmbuild/RPMS/x86_64/nginx-1.12.2-10.x86_64.rpm
[root@web1 ~]# rpm -qpi RPMS/x86_64/nginx-1.12.2-10.x86_64.rpm
Name : nginx Relocations: (not relocatable)
Version : 1.12.2 Vendor: (none)
Release : 10 Build Date: Mon 02 May 2016 02:30:53 AM PDT
Install Date: (not installed) Build Host: localhost
Group : Applications/Internet Source RPM: nginx-1.8.0-1.src.rpm
Size : 721243 License: GPL
Signature : (none)
URL : www.nginx.org
Summary : Nginx is a web server software.
Description :
nginx [engine x] is an HTTP and reverse proxy server.
[root@web1 ~]# rpm -qpl nginx-1.12.2-10.x86_64.rpm
/usr
/usr/local
/usr/local/nginx
/usr/local/nginx/conf
/usr/local/nginx/conf/fastcgi.conf
/usr/local/nginx/conf/fastcgi.conf.default
/usr/local/nginx/conf/fastcgi_params
/usr/local/nginx/conf/fastcgi_params.default
/usr/local/nginx/conf/koi-utf
/usr/local/nginx/conf/koi-win
/usr/local/nginx/conf/mime.types
/usr/local/nginx/conf/mime.types.default
/usr/local/nginx/conf/nginx.conf
/usr/local/nginx/conf/nginx.conf.default
/usr/local/nginx/conf/scgi_params
/usr/local/nginx/conf/scgi_params.default
/usr/local/nginx/conf/uwsgi_params
/usr/local/nginx/conf/uwsgi_params.default
/usr/local/nginx/conf/win-utf
/usr/local/nginx/html
/usr/local/nginx/html/50x.html
/usr/local/nginx/html/index.html
/usr/local/nginx/logs
/usr/local/nginx/sbin
/usr/local/nginx/sbin/nginx
安装、卸载软件
[root@web1 ~]# rpm -ivh RPMS/x86_64/nginx-1.12.2-10.x86_64.rpm
[root@web1 ~]# rpm -qa |grep nginx
[root@web1 ~]# /usr/local/nginx/sbin/nginx
[root@web1 ~]# curl http://127.0.0.1/
防火墙
iptables
firewalld
cron计划任务
vi /etc/crontab
分 时 日 月 周 任务命令行(绝对路径)
在表示各段的时间点时,除了明确的数值以外,还可以参考以下形式:
*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n ...
命令:
crontab -e -u jluo
systemctl restart crond
systemctl enable crond
例如:
每一小时执行一次脚本
* */1 * * * /data/app/script/autodellogs.sh
基本安全加固
账号安全
1、修改用户zhangsan的账户属性,设置为2019-12-31日失效(禁止登录)
chage命令的语法格式:
chage –l 账户名称 //查看账户信息
chage –E 时间 账户名称 //修改账户有效期
失效的用户将无法登录
使用chage命令将用户zhangsan的账户设为当前已失效(比如已经过去的某个时间):
[root@proxy ~]# useradd zhangsan
[root@proxy ~]# chage -E 2015-05-15 zhangsan
2、定义默认有效期
/etc/login.defs这个配置文件,决定了账户密码的默认有效期。
[root@proxy ~]# cat /etc/login.defs
PASS_MAX_DAYS 99999 //密码最长有效期
PASS_MIN_DAYS 0 //密码最短有效期
PASS_MIN_LEN 5 //密码最短长度
PASS_WARN_AGE 7 //密码过期前几天提示警告信息
UID_MIN 1000 //UID最小值
UID_MAX 60000 //UID最大值
3、锁定用户账号
1)使用passwd或usermod命令将用户zhangsan的账户锁定。
[root@proxy ~]# passwd -l zhangsan //锁定用户账号lock
锁定用户 zhangsan 的密码。
passwd: 操作成功
[root@proxy ~]# passwd -S zhangsan //查看状态status
zhangsan LK 2018-02-22 0 99999 7 -1 (密码已被锁定。)
2)验证用户zhangsan已无法登录,说明锁定生效
输入正确的用户名、密码,始终提示“Login incorrect”,无法登录。
3)解除对用户zhangsan的锁定
[root@proxy ~]# passwd -u zhangsan //解锁用户账号
解锁用户 zhangsan 的密码 。
passwd: 操作成功
[root@proxy ~]# passwd -S zhangsan //查看状态
zhangsan PS 2018-08-14 0 99999 7 -1 (密码已设置,使用 SHA512 加密。)
修改tty登录的提示信息,隐藏系统版本
1、设置显示登录信息
账户在登录Linux系统时,默认会显示登陆信息(包括操作系统内核信息)
/etc/issue、/etc/issue.net这个配置文件里保存的就是这些登陆信息,修改该文件防止内核信息泄露。
[root@proxy ~]# cat /etc/issue //确认原始文件
Red Hat Enterprise Linux Server release 6.5 (Santiago)
Kernel \r on an \m
[root@proxy ~]# cp /etc/issue /etc/issue.origin //备份文件
[root@proxy ~]# vim /etc/issue //修改文件内容
Windows Server 2012 Enterprise R2
NT 6.2 Hybrid
2、测试版本伪装效果
退出已登录的tty终端,或者重启Linux系统,刷新后的终端提示信息会变成自定义的文本内容,如下所示。
磁盘安全
对于操作系统来说,文件系统也可以通过添加额外属性来提高性能与安全性。
[root@proxy ~]# cat /etc/fstab
/dev/vda1 /boot xfs defaults,noexec 0 0
/dev/vda3 /home xfs defaults,noatime 0 0
备注:
noexec属性可以让分区下的所有程序都不可执行,包括病毒与木马
noatime让分区下的所有文件都不再更新atime时间,atime时间为文件的访问时间
锁定文件/etc/resolv.conf、/etc/hosts
1、语法格式:
# chattr +i 文件名 //锁定文件(无法修改、删除等)
# chattr -i 文件名 //解锁文件
# chattr +a 文件名 //锁定后文件仅可追加
# chattr -a 文件名 //解锁文件
# lsattr 文件名 //查看文件特殊属性
2、使用+i锁定文件,使用lsattr查看属性
[root@proxy ~]# chattr +i /etc/resolv.conf
[root@proxy ~]# lsattr /etc/resolv.conf
----i---------- /etc/resolv.conf
3、使用+a锁定文件(仅可追加),使用lsattr查看属性
[root@proxy ~]# chattr +a /etc/hosts
[root@proxy ~]# lsattr /etc/hosts
-----a---------- /etc/hosts
4、测试文件锁定效果
[root@proxy ~]# rm -rf /etc/resolv.conf
rm: 无法删除"/etc/resolv.conf": 不允许的操作
[root@proxy ~]# echo xyz > /etc/resolv.conf
-bash: resolv.conf: 权限不够
[root@proxy ~]# rm -rf /etc/hosts //失败
[root@proxy ~]# echo "192.168.4.1 xyz" > /etc/hosts //失败
[root@proxy ~]# echo "192.168.4.1 xyz" >> /etc/hosts //成功
history历史命令
1、概述
- 当执行命令后,系统默认会在内存记录执行过的命令
- 当用户正常退出时,会将内存的命令历史存放对应历史文件中,默认是~/.bash_history
- 登录shell时,会读取命令历史文件中记录下的命令加载到内存中
- 登录进shell后新执行的命令只会记录在内存的缓存区中;这些命令会用户正常退出时“追加”至命令历史文件中
- 利用命令历史。可以用它来重复执行命令,提高输入效率
2、命令:history
history [-c] [-d offset] [n]
history -anrw [filename]
history -ps arg [arg...]
-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-n: 读历史文件中未读过的行到历史列表
-p: 展开历史参数成多行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后
3、命令历史相关环境变量
环境变量可以 export 变量名="值" 形式存放在 /etc/profile 或 ~/.bash_profile
- HISTSIZE:命令历史记录的条数
- HISTFILE:指定历史文件,默认为~/.bash_history
- HISTFILESIZE:命令历史文件记录历史的条数
- HISTTIMEFORMAT="%F %T whoami" 显示时间和用户
- HISTIGNORE="str1:str2*:…" 忽略str1命令,str2开头的历史
- HISTCONTROL:控制命令历史的记录方式
ignoredups 是默认值,可忽略重复的命令,连续且相同为“重复”
ignorespace 忽略所有以空白开头的命令
ignoreboth 相当于ignoredups, ignorespace的组合
erasedups 删除重复命令
4、实战
配置
vi /etc/profile
....
#命令历史记录的条数
HISTSIZE=500
#显示时间和用户
HISTTIMEFORMAT="%F %T `whoami`"
#忽略mysql*命令,user*开头的历史
HISTIGNORE="mysql*:user*"
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL HISTTIMEFORMA HISTIGNORE
....
source /etc/profile
#只允许增加,不允许删除
chattr +a .bash_history
测试
[root@mindoc ~]# history
4 2021-11-23 14:48:00 roothistory
5 2021-11-23 14:48:44 rootvim /etc/profile
6 2021-11-23 14:56:03 rootsource /etc/profile
7 2021-11-23 14:56:38 roothistory
[root@mindoc ~]# useradd test1
[root@mindoc ~]# history
4 2021-11-23 14:48:00 roothistory
5 2021-11-23 14:48:44 rootvim /etc/profile
6 2021-11-23 14:56:03 rootsource /etc/profile
7 2021-11-23 14:56:38 roothistory
8 2021-11-23 14:58:01 rootmysql -uroot
9 2021-11-23 14:58:04 roothistory
[root@mindoc ~]# cat .bash_history
#1637650074
> .bash_history
#1637650076
history
#1637650080
history
#1637650124
vim /etc/profile
#1637650563
source /etc/profile
#1637650598
history
#1637650681
mysql -uroot
#1637650684
history
监控命令
vmstat
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat工具提供了一种低开销的系统性能观察方式。因为vmstat本身就是低开销工具,在非常高负荷的服务器上,你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat输出结果。
1、命令参数
-
-a:显示活跃和非活跃内存
-
-f:显示从系统启动至今的fork数量 。
-
-m:显示slabinfo
-
-n:只在开始时显示一次各字段名称。
-
-s:显示内存相关统计信息及多种系统活动数量。
-
delay:刷新时间间隔。如果不指定,只显示一条结果。
-
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-
-d:显示磁盘相关统计信息。
-
-p:显示指定磁盘分区统计信息
-
-S:使用指定单位显示。参数有 k 、K 、m 、M,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-
-V:显示vmstat版本信息。
2、实战
说明:
procs:
-
r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需要增加cpu。
-
b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。
-
memory:
-
swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常
-
free 当前的空闲页面列表中内存数量(k表示)
-
buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。
-
cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。
swap:
-
si 由内存进入内存交换区数量
-
so由内存交换区进入内存数量。
IO:
-
bi 从块设备读入数据的总量(读磁盘)(每秒kb)
-
bo 块设备写入数据的总量(写磁盘)(每秒kb)
-
这里我们设置的bi+bo参考值为1000,如果超过1000,而且wa值较大应该考虑均衡磁盘负载,可以结合iostat输出来分析。
-
system 显示采集间隔内发生的中断数:
-
in 列表示在某一时间间隔中观测到的每秒设备中断数。
-
cs列表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
cpu 表示cpu的使用状态:
-
us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。
-
sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。
-
id 列显示了cpu处在空闲状态的时间百分比
-
wa 列显示了IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
iostat
FAQ
1、在使用Linux过程中找不到占据空间的大文件的解决方法
- 背景
磁盘使用率爆满,但是未定位到目录在使用Linux过程中找不到占据空间的大文件的解决方法
du -sh ./* --exclude="data" --exclude="proc"
- 定位
使用 lsof 找到删除的文件,可以发现已经占用 230g 左右(根据下方的字节单位换算的)
lsof -n |grep delete |grep -v data
- 解决
重启对应进程解决即可
systemctl restart mallard2-agent.service
标签:精通,入门,etc,local,nginx,usr,conf,Linux,root
From: https://www.cnblogs.com/jluo/p/16772520.html