1.Linux文件结构
/bin 二进制文件,系统常规命令
/boot 系统启动分区,系统启动时读取的文件
/dev 设备文件
/etc 大多数配置文件
/home 普通用户的家目录
/lib 32位函数库
/lib64 64位库
/media 手动临时挂载点
/mnt 手动临时挂载点
/opt 第三方软件安装位置
/proc 进程信息及硬件信息
/root 临时设备的默认挂载点
/sbin 系统管理命令
/srv 数据
/var 数据
/sys 内核相关信息
/tmp 临时文件
/usr 用户相关设定
2.进程相关
ps -aux #详细点,查看进程所有包含其他使用者的进程,搭配管道符和grep使用
ps -ef #会显示父进程
top
STAT: 该行程的状态:
D: 无法中断的休眠状态 (通常 IO 的进程)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
3.系统状态相关
uname -a #查看系统名称,内核名称,版本等
[root@linuxprobe20 Desktop]$ uname -a
Linux linuxprobe20.com 4.18.0-348.el8.x86_64 #1 SMP Tue Oct 19 15:14:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
cat /etc/issuee #查看linux是centos还是Ubuntu
[root@linuxprobe20 Desktop]$ cat /etc/issue
\S
Kernel \r on an \m # Centos
或
Ubuntu 18.04.1 LTS \n \l # Ubuntu
cat /etc/redhat-release #查看当前系统的详细信息
[root@linuxprobe20 Desktop]$ cat /etc/redhat-release
CentOS Linux release 8.5.2111
uptime #查看系统负载,1分钟,5分钟,15分钟内
[root@linuxprobe20 Desktop]$ uptime
17:22:00 up 1:02, 1 user, load average: 0.10, 0.14, 0.08
last # 查看主机被访问记录
4.存储相关
free -h # 查看内存使用量和交换区使用量
df -h # 查看各分区使用情况
du -h <目录名> # 查看指定目录的大小
5.查看文件
cat a.txt # 查看文件最后一屏内容
less a.txt # PgUp向上翻页,PgDn向下翻页,"q"退出查看
more a.txt # 显示百分比,回车查看下一行,空格查看下一页,"q"退出查看
head -100 a.txt # 查看文件的前100行,"Ctrl+C"退出查看
tail -100 a.txt # 查看文件的后100行,"Ctrl+C"退出查看
tail -f a.txt # 实时展示文件的最后内容
6.查找文件、命令
find . -name "*.c" # 将目前目录及其子目录下所有后缀名是 c 的文件列出来
find . -type f # 将目前目录其其下子目录中所有一般文件列出
find . -ctime -20 # 将目前目录及其子目录下所有最近 20 天内更新过的文件列出
find /var/log -type f -mtime +7 -ok rm {} \; # 查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们
find . -type f -perm 644 -exec ls -l {} \; # 查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件
find / -type f -size 0 -exec ls -l {} \; # 为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径
locate <filename>
# locate命令会通过数据库进行查找文件,速度非常快;而find命令则是直接在硬盘上查找文件,查找速度非常慢。
# locate命令查找的文件是基于数据库的,如果是已删除或者新增加的文件,未被数据库记录那么可能查找到错误结果或者未查找到导致结果不准确;而find命令则查找很精确,不会出现locate命令出现的问题。
# locate命令执行应该执行updatedb命令更新数据库;而find命令不需要多执行一个命令
whereis <命令> # 将和命令相关的文件都列出来
which <命令> # 会在环境变量$PATH设置的目录里查找符合条件的文件
7.端口相关
netstat -nltp
命令参数如下:
-t:指明显示TCP端口
-u:指明显示UDP端口
-n:不进行DNS轮询,显示IP(可以加速操作),n是numeric的首字母,以数字形式显示地址和端口号
-l:仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
-p:显示进程标识符和程序名称,每一个套接字/端口都属于一个程序
[root@linuxprobe10 Desktop]$ netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1643/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1165/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1166/cupsd
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::22 :::* LISTEN 1165/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1166/cupsd
Local Address:访问端口的方式,0.0.0.0 是对外开放端口,说明80端口外面可以访问;127.0.0.1 说明只能对本机访问,外面访问不了此端口;
Foregin Address:对外开放,一般都为0.0.0.0:*
lsof -i:<端口号> # 列出在指定端口上打开的文件,间接查看端口是否打开
[root@linuxprobe10 Desktop]$ lsof -i:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1165 root 5u IPv4 32285 0t0 TCP *:ssh (LISTEN)
sshd 1165 root 7u IPv6 32293 0t0 TCP *:ssh (LISTEN)
8.主机名、IP相关
hostnamectl set-hostname <主机名> # 修改主机名
vim /etc/hostname # 修改主机名
vi /etc/hosts # 配置映射
在文件最后添加映射地址,示例如下:
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
配置好以后保存退出,输入命令:ping node1 ,可见实际 ping 的是 192.168.1.101。
# CentOS 8 改为固定IP
vim /etc/sysconfig/network-scripts/ifcfg-ens160
# 主要修改BOOTPROTO的值,以及加上最后5行
------------------------------------------------
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens160
UUID=066b4926-b40c-4c28-a5b4-2310d2b96613
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.109.100
NETMASK=255.255.255.0
GATEWAY=192.168.109.2
DNS1=8.8.8.8
PREFIX=24
-------------------------------------------------
nmcli connection reload # 重新载入配置
nmcli connection up ens160 # 启用ens160网卡
9.路由相关
route -n # 查看路由
netstat -r # 查看路由
10.防火墙相关
10.1 iptables
iptables -L # 查看已有的防火墙规则链
iptables -F # 清空已有的防火墙规则链
iptables -P INPUT DROP # 将INPUT的默认规则链设为丢弃
iptables -I INPUT -p icmp -j ACCEPT # 向INPUT规则链添加允许icmp通过的规则
iptables -D INPUT 1 # 删除指定的策略
iptables -I INPUT -s 192.168.10.0/24 -dport 22 -p tcp -j ACCEPT # 允许特定特定网段的计算机访问特定端口
iptables -I INPUT -p tcp -dport 12345:12349 -j REJECT
iptables -I INPUT -p udp -dport 12345:12349 -j REJECT # 拒绝所有人访问本机的12345到12349端口
iptables-save #设置的防火墙策略会在下一次重启时失效,还要执行保存命令
iptables 清空防火墙策略相当于暂时关闭防火墙,下一次重启时会恢复
# 关闭iptables
yum install iptables-services
systemctl status iptables.service
systemctl stop iptables.service
systemctl disable iptables.service
cd /etc/sysconfig
mv /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
mv /etc/sysconfig/iptables-config /etc/sysconfig/iptables-config.bak
touch /etc/sysconfig/iptables
touch /etc/sysconfig/iptables-config
10.2 firewalld
查看防火墙状态
systemctl status firewalld # 查看防火墙状态
systemctl start firewalld # 开启防火墙
systemctl stop firewalld # 关闭防火墙
service firewalld start # 开启防火墙
若遇到无法开启
先用:systemctl unmask firewalld.service
然后:systemctl start firewalld.servic
对外开放端口
firewall-cmd --query-port=9200/tcp # 查看想开的端口是否已开
firewall-cmd --add-port=10032/tcp --permanent # 添加指定需要开放的端口
firewall-cmd --reload # 重载入添加的端口
firewalld有两种模式Runtime:当前立即生效,重启后失效;Permanent:当前不生效,重启后生效
firewalld-cmd --reload # 让配置的策略立即生效
firewalld-cmd --get-default-zone # 查看firewalld服务当前使用的区域
firewalld-cmd --get-zone-of-interface=ens160 # 查看指定网卡在firewalld服务中绑定的区域
firewalld-cmd --permanent --zone=external --chang-insterface=ens160 # 将网卡的默认区域改为external,并在重启后生效
firewalld-cmd --set-default-zone=public # 将默认区域修改为public
firewalld-cmd --panic-on # 立即切断一切网络连接
firewalld-cmd --panic-off # 回复网络连接
firewalld-cmd --zone=public --query-service=ssh # 查询SSH的流量是否放行
firewalld-cmd --permanent --zone=public --add-service=https firewalld-cmd reload
# 把HTTPs协议的流量设置为永久允许通过,并立即生效
firewalld-cmd --permanent --zone=public --remove-service=http firewalld-cmd reload
# 把http协议的凉凉设置为永久拒绝,并立即生效
firewalld-cmd --zone=public --add-port=8080-8081/tcp # 把访问8080和8081端口的流量策略设置为允许,仅限当前有效
firewalld-cmd --zone=public --list-ports # 列出端口
firewalld-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
# 把原本访问本机888端口的流量转发到22端口,并当前和长期均有效
11. 权限相关
# 递归修改mydata文件夹下的文件权限
chmod -R 777 /usr/mydata
12.RPM相关
# 查看安装的应用的相关文件
rpm -ql nginx
# 查看已安装的应用服务
rpm -qa | grep java
13.其他
# 查询某个指定服务的PID号码,如pidof sshd
pidof <服务>
# 终止某个服务所对应的全部进程,如killall httpd
killall <服务>
# 显示上下文10行,加行号,搜索词加高亮
grep -C 10 -n --color
vim /etc/selinux/config # 查看SELinux的状态
# enforcing:强制启用安全策略模式,拦截服务的不合法请求;
# permissive:遇到服务越权访问时,只发出警告而不强制拦截;
# disabled:对于越权行为不警告也不拦截
yum安装的包默认存储在/usr/share/下
# 查看服务存储在哪里可通过
grep jekens /etc/passwd
# 修改用户使用的shell
usermod -s Jenkins /bin/bash
# 显示系统启动时间
who -b