Linux命令记录
提示
本文大部分是基于CentOS 7的实践记录。
# 查看当前系统版本
[root@localhost ~]# 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"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 解压文件
# 解压zip文件
unzip file_name.zip
# 解压到指定文件夹并覆盖
unzip -o filen_name.zip -d output_path
1
2
3
4
2
3
4
# 防火墙
# 启动
systemctl start firewalld
# 查看
systemctl status firewalld
# 关闭
systemctl stop firewalld
# 设置开机自启
systemctl enable firewalld
# 关闭开机自启
systemctl disable firewalld
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 开放/关闭端口
# 查看所有打开的端口
firewall-cmd --zone=public --list-ports
# 开放端口,重载生效
firewall-cmd --zone=public firewall-cmd --reload--add-port=3306/tcp --permanent
firewall-cmd --reload
# 关闭端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 查看端口是否被监听
# 使用netstat查看所有正在被监听的TCP端口
netstat -tlnp
# 3306是否被监听
netstat -anlp | grep 3306
# 用lsof也可以
lsof -i:3306
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 查看所有已被监听的端口并排序
netstat -ntpl | grep LISTEN | awk '{print $4}' | awk -F ":" '{print $NF}' | sort -n
# grep LISTEN :只显示正在监听的端口。
# awk '{print $4}' :提取第 4 列,即本地地址和端口。
# awk -F ":" '{print $NF}' :使用冒号作为分隔符,提取最后一个字段,即端口号。
# sort -n :按数值大小排序。
1
2
3
4
5
6
2
3
4
5
6
-n
:使用数字格式显示地址和端口号,而不是使用域名和服务名称。-t
:仅显示 TCP 连接相关的信息。-p
:显示与连接相关的程序和进程信息。-l
:仅显示正在监听的连接。
# 查看CPU参数
这两种方式都可以:
- lscpu
- cat /proc/cpuinfo
# 查看内存使用情况
- free -h
# 磁盘满了排查思路
清理磁盘空间
- 用
df -h
看看哪些挂载点磁盘空间已用率高 - 进入某个挂载点路径,使用如下命令查看哪个文件夹占用空间大(--max-depth指深度,只看当前层级就可以了)
du -h --max-depth=1
1 - 进入占用空间大的文件夹,重复步骤2,直到找到某些可以删除的大文件(一定要确认文件是没用的)
# 查看文件或文件夹大小
# 查看当前子目录的大小总和,并以汇总的形式输出当前目录的大小。
du -sh *
1
2
2
du 命令是一个 Linux 下用于查看文件或文件夹大小的命令,它可以接受多种参数来进行不同的输出。以下是常用的 du 命令参数:
-h:以人类可读的格式(如 GB、MB、KB 等)输出文件或文件夹大小,更易读。
-s:仅显示总大小,不显示子目录大小。
-a:显示所有文件和目录的大小,而不仅仅是目录。
-c:显示总大小,并附加所有文件和目录的大小总和。
-x:仅显示与指定文件系统相关的文件或目录的大小,不包括挂载的其他文件系统。
-L:如果指定的目录是符号链接,则显示链接目录的大小,而不是链接文件的大小。
--exclude:排除指定的文件或目录。
# crontab定时任务管理
crond
是负责定时调度的系统服务,用crontab
管理定时任务。
# 查看定时任务
crontab -l
# 查看执行记录
tail -f /var/log/cron
# 编辑定时任务(进入编辑界面,可以添加定时任务)
crontab -e
# 直接编辑/etc/crontab文件添加定时任务
vim /etc/crontab
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
/etc/crontab
文件内容样例:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
# 每两个小时以root身份执行 /opt/test.sh 脚本
0 */2 * * * root /opt/test.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 命令日志重定向到文件
# 命令日志重定向到文件(包括异常日志)
command > file_name 2>&1
1
2
2
# 生成当前时间戳字符串
常用于给log、文件等命名时增加时间戳。
time=$(date "+%Y%m%d-%H%M%S")
echo ${time}
# 20220518-114230
touch ${time}.log
1
2
3
4
2
3
4
# 软链接和硬链接
参考:Linux 硬链接与软链接 (opens new window)、ln 命令 (opens new window)
- 软链接(Symbolic Link):类似于Windows操作系统中的快捷方式,是一个指向源文件路径的特殊文件。
- 硬链接(Hard Link):通过索引节点(Inode Index)来进行连接,即多个文件名指向同一索引节点,删除其中任何一个都不会影响另外一个的访问。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。不允许给目录创建硬链接。
# 创建1.txt
touch 1.txt
# 创建1.txt的硬链接:2.txt
ln 1.txt 2.txt
# 创建1.txt的软链接:3.txt
ln -s 1.txt 3.txt
# 查看文件信息
ls -li
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
输出:
[root@localhost link_test]# ls -li
总用量 0
570451165 -rw-r--r--. 2 root root 0 5月 22 10:46 1.txt
570451165 -rw-r--r--. 2 root root 0 5月 22 10:46 2.txt
570451166 lrwxrwxrwx. 1 root root 5 5月 22 10:47 3.txt -> 1.txt
1
2
3
4
5
2
3
4
5
可以看出:
- 硬链接2.txt和1.txt的Inode索引是相同的
- 软链接是指向源文件
3.txt -> 1.txt
# rpm安装卸载软件
# 例如已有安装包 BxsTest.rpm
# 安装命令,参数i 安装、v 可视化、h显示进度
rpm -ivh BxsTest.rpm
# 查找已安装的包
rpm -qa | grep BxsTest
# output:BxsTest.amd64
# 查看安装路径
rpm -ql BxsTest.amd64
# 卸载已安装的包
rpm -e BxsTest.amd64
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# deb包安装和卸载
# 例如已有安装包 BxsTest.deb
# 安装
dpkg -i BxsTest.deb
# 查看已安装的
dpkg -l | grep Test
# 查看安装路径
dpkg -L 包名
# 卸载
dpkg -r 包名
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 查找包含指定class的jar包
MyClass.class换成要查找的类名或路径
find . -name "*.jar" -exec sh -c 'jar -tf {} | grep -H --label {} MyClass.class' \;
1