一、Linux文件操作命令
Linux命令格式:
命令 [参数选项] [文件或路径]
Linux文件操作核心命令
命令 | 用途 |
---|---|
cd | 切换目录 |
pwd | 查看当前目录 |
ls、ll | 显示目录内容 |
mkdir | 创建目录 |
touch | 创建空文件 |
cp | 复制文件与目录 |
mv | 移动或重命名文件 |
rm | 删除文件与目录 |
find | 查找目录或文件 |
clear | 清除屏幕,简称清屏 |
// 返回上级目录
cd ..
// 表示进入当前目录下的local文件夹
cd ./local
// 绝对路径是由根目录 / 开始写起
// 相对路径是从当前所在的工作目录开始写起
// 总之,绝对路径是相对于根路径 / 的,只要文件不移动位置,那么它的绝对路径是恒定不变的;而相对路径是相对于当前所在目录而言的,随着程序的执行,当前所在目录可能会改变,因此文件的相对路径不是固定不变的。
// 创建多级目录需要在前面加一个 -p
mkdir -p ./tttt/sample/demo
// 加上 -v 之后可以查看命令执行过程
mkdir -p -v ./tttt1/sample/demo
// -p -v 等同于 -pv
mkdir -pv ./tttt2/sample/demo
// 创建新文件
touch filename.txt
// 更新文件时间戳:若文件已存在,touch 会更新该文件的访问时间和修改时间,使其等于当前时间
touch existing_file.txt
// 创建多个文件
touch file1.txt file2.txt file3.log
// 创建带有目录结构的文件(若目录不存在,不会自动创建)
touch docs/report.txt
// 将当前目录下的text.txt文件复制一份到tttt目录下
cp ./text.txt ./tttt
// 如果想复制整个目录,利用 -r 进行迭代(将tttt整个目录,包括里面的文件全部复制一份到tttt1目录下)
cp -r ./tttt ./tttt1
// 文件重命名(前面是当前目录下原文件名,后面是文件命名后的名字)
mv ./erp.apk ./eee.apk
// 文件移动(前面是文件名,后面是要移动到的目录)
mv ./ttt.erp ./sample
// 删除
rm ./ttt.erp
// 直接删除,不询问是否删除(-f 表示强制删除)
rm -f ./ttt.erp
// 删除整个目录(请谨慎使用)(-r 表示迭代)(删除sample目录下所有文件和目录)
// 如果必须要删除整个目录,可以去掉-f,使用rm -r,进行确认删除
rm -rf ./sample
// 查找( / 表示在根目录下查找,-name表示按文件名进行查找,*代表模糊匹配)
// 下面这句命令的意思是:在根目录下查找后缀为.exe的文件
find / -name *.exe
二、自用
1、在 Linux 系统中,使用 find 命令来全局查找 harbor.yml 文件。以下是示例命令:
find / -name harbor.yml
# 忽略权限警告查找配置文件
# 2>/dev/null 表示将错误信息(比如权限不足)丢弃,不显示在终端上
# 这样可以避免出现类似 Permission denied 的报错信息
find / -name harbor.yml 2>/dev/null
2、“which”命令可以用于查找可执行文件的位置。
which docker
/usr/bin/docker
3、查看当前的时区设置
[root@gitlab helloworld]# timedatectl
Local time: Mon 2025-04-14 14:50:16 CST
Universal time: Mon 2025-04-14 06:50:16 UTC
RTC time: Mon 2025-04-14 06:50:15
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
[root@gitlab helloworld]# date
Sun Apr 20 12:14:20 CST 2025
4、时间同步
# 方式一:chrony
# chrony 是一个现代化的时间同步工具,推荐使用它来替代 ntpdate。
# 安装并配置 chrony:
dnf install chrony -y
# chrony 的主要命令是 chronyd 和 chronyc
# 查看版本号
chronyd --version
chronyc --version
# 重新启动
systemctl restart chronyd
# 强制立即同步时间:
chronyc makestep
# 方式二:手动设置系统时间
sudo timedatectl set-time "2025-04-20 12:08:00"
5、查看当前发行版本信息
[root@gitlab helloworld]# cat /etc/os-release
NAME="Rocky Linux"
VERSION="9.5 (Blue Onyx)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.5"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Rocky Linux 9.5 (Blue Onyx)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:9::baseos"
HOME_URL="https://rockylinux.org/"
VENDOR_NAME="RESF"
VENDOR_URL="https://resf.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2032-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9"
ROCKY_SUPPORT_PRODUCT_VERSION="9.5"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.5"
或者可以用查询主机名相关信息的命令行工具
[root@gitlab helloworld]# hostnamectl
Static hostname: gitlab
Icon name: computer-vm
Chassis: vm 🖴
Machine ID: bafe7c08a66a42d1bf93529ffccf0980
Boot ID: 16bff59729c946319b4a2588eca3c43c
Virtualization: vmware
Operating System: Rocky Linux 9.5 (Blue Onyx)
CPE OS Name: cpe:/o:rocky:rocky:9::baseos
Kernel: Linux 5.14.0-503.14.1.el9_5.x86_64
Architecture: x86-64
Hardware Vendor: VMware, Inc.
Hardware Model: VMware Virtual Platform
Firmware Version: 6.00
uname -a 获取系统信息
[root@redis ~]# uname -a
Linux redis 5.14.0-503.14.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Nov 15 12:04:32 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
# Linux:内核的名称
# redis:主机名
# 5.14.0 - 主版本号(5.14系列)
# -503.14.1 - 发行版补丁号(由 Red Hat 或 Rocky Linux 等发行版维护)
# .el9_5 - 基于 CentOS/Rocky Linux 9 系统(el9 表示 Enterprise Linux 9,_5 表示第5个维护版本)
# .x86_64 - 架构类型(64位x86处理器)
# #1 SMP PREEMPT_DYNAMIC Fri Nov 15 12:04:32 UTC 2024:内核编译信息
# x86_64 x86_64 x86_64: 均表示硬件架构为 64 位 x86 处理器(AMD64/Intel 64)
# GNU/Linux:操作系统类型
# GNU项目(GNU's Not Unix!)是一个由自由软件基金会(Free Software Foundation, FSF)发起和支持的项目,旨在开发一个完全自由的操作系统。该项目始于1983年,由理查德·斯托曼(Richard Stallman)提出,目标是创建一套兼容Unix但完全使用自由软件组成的操作系统。
# 虽然GNU项目的目标是构建一个完整的操作系统,但在其内核Hurd尚未成熟时,Linus Torvalds开发了Linux内核,并于1991年首次发布。Linux内核加上GNU软件套件构成了现在广泛使用的GNU/Linux操作系统。尽管通常简称为Linux,但实际上这个组合才是完整意义上的操作系统,其中包含了来自GNU项目的许多关键组件。
6、tar
格式:
tar [选项] [归档文件名] [文件或目录]
常用选项
选项 | 含义 |
---|---|
-c | 创建一个新的归档文件(Create)。 |
-x | 解压/提取归档文件(Extract)。 |
-t | 列出归档文件的内容(List)。 |
-f | 指定归档文件的名称(File name)。 |
-v | 显示详细的操作过程(Verbose)。 |
-z | 使用 gzip 压缩或解压文件(gzip 格式)。 |
-j | 使用 bzip2 压缩或解压文件(bzip2 格式)。 |
-J | 使用 xz 压缩或解压文件(xz 格式)。 |
-r | 向现有的归档文件中追加文件(Append)。 |
-u | 更新现有归档文件中的文件(Update)。 |
--exclude | 排除指定的文件或目录。 |
# 查看归档文件内容
tar -tvf archive.tar
# 使用 gzip 压缩归档文件
tar -czvf archive.tar.gz file1 file2 dir1
# -C 参数告诉 tar 在执行任何操作之前先切换到指定的目录 /root/images/。
# 这意味着 tar 会从这个目录开始读取文件,而不是从当前工作目录开始。
# . 表示当前目录下的所有内容
tar -czvf archive.tar.gz -C /root/images/ .
# 解压 gzip 压缩的归档文件
tar -xzvf archive.tar.gz
# 如果不指定 -C 选项,默认会将文件解压到当前工作目录
# 使用 -C 选项并后跟一个目录路径,就可以将文件解压到指定的目录中。
tar -zxvf archive.tgz -C /data
7、列出所有监听中端口信息
选项 | 含义 |
---|---|
-t | TCP 端口 |
-u | UDP 端口 |
-l | 仅显示监听端口 |
-n | 显示数字地址(不解析域名) |
-p | 显示进程 PID 和名称 |
# 显示系统中所有监听状态的网络套接字信息,同时提供详细的端口和 IP 地址等内容
ss -tulnp
# 查看 Nginx 的监听端口
ss -tulnp | grep nginx
8、查看当前系统的版本信息
cat /etc/os-release
9、生成一个随机 UUID:
uuidgen
10、在Linux服务器上修改允许SSH登录的配置
# 安装 vim
dnf install vim -y
# 编辑SSH配置文件
vim /etc/ssh/sshd_config
# 修改以下参数
PermitRootLogin yes # 允许root用户通过SSH登录(可选)
PasswordAuthentication yes # 允许密码认证(如果使用密钥认证,可以设置为no)
PubkeyAuthentication yes # 允许公钥认证
# 点击 i 进入编辑模式,修改完成后点击 Esc,然后 Shift + :,输入 wq,回车
# 重启SSH服务以应用更改
systemctl restart sshd
11、筛选出云服务器日志中密码错误导致登录失败的 IP 记录,按照出现次数从高到低显示
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr
# 按时间统计攻击趋势
grep "Failed password" /var/log/secure | awk '{print $1,$2,$3,$11}' | sort
# 查看特定 IP 的攻击详情
grep "212.162.155.49" /var/log/secure | grep "Failed password"
# 日志文件被轮转 / 截断
# 如果失败登录记录较多,旧的记录可能已被轮转至历史文件
# 排查方法:查看 /var/log/ 目录下的相关历史日志文件
ls -l /var/log/secure*