首页  /  Linux 基础  /  正文

文件操作 · 查找解压 · 定时任务

Linux 基础 2026-10-01📖 12 分钟👁 —
🐧 Linux 运维基础笔记第 4 / 7 页1234567📖 完整导航 →
📌 这一页是日常用得最多的一页:文件怎么操作、东西在哪找、怎么压缩,以及怎么定时干活。

八、文件操作

8.1 忘了命令怎么办

man 命令或配置文件     # 获取帮助信息
help 命令             # 获取 shell 内置命令的帮助信息
💡 实在看不懂 man,直接百度也可以 —— 这没什么丢人的。

8.2 目录操作

mkdir -p 多级目录    # -p 建多级目录;不加 -p 就是单个文件夹
rmdir 目录           # 只能删除空目录;多层时只删空的那层
rm -rf 目录          # 强制递归删除(很危险,一般不用)
⚠️ rm -rf 删下去没有回收站。养成习惯:先 ls 确认,再删。

8.3 复制与移动

touch 文件名
cp 选项 source(来源) dest(去处)     # 选项不写就是复制文件
cp -r 目录 目标                     # -r 递归,复制整个目录
mv 文件1(来) 文件2(去)              # 同目录 = 重命名;不同目录 = 移动

几个细节:

  1. 第二次执行 cp 会覆盖,系统会提示;不想要提示就写 \cp
  2. 如果 source 和 dest 都是文件,就会覆盖(名字不变,内容变)
  3. cp 和 mv 的共同点:当 dest 以 / 结尾,才会正常执行(移动到目录里)

8.4 查看文件内容

cat -n 文件 | more      # -n 显示行号;方便浏览,一般加上 | more
                        # 回车向下一行,空格翻页
more 文件               # q 退出,Ctrl+F 下一屏,Ctrl+B 上一屏
                        # = 输出当前行号,:f 输出文件名和行号
less 文件               # 分屏查看,和 more 类似,空格 / page 键翻页
                        # /字串 搜索,回车后 n 向下找,N 向上找
                        # ?字串 反向搜索,n/N 方向和 / 相反;q 退出
echo 选项 输出内容       # 输出环境变量 / 引号内的内容
head 文件               # 默认查看前 10 行
head -n 5 文件          # 查看指定行数
tail -n 数值 文件        # 输出倒数数值行,无参数默认 10
tail -f 文件            # ⭐ 实时跟踪文件(看日志神器)

8.5 输出重定向

>  覆盖
>> 追加

只要是有内容输出的命令都能这么用(echo、ls、cat 都行),文件不存在会自动创建。

ls -l /etc/ > /tmp/to.txt      # 把 /etc 的列表写进文件(覆盖)
date >> /tmp/to.txt            # 把当前时间追加进去

8.6 其他常用

cal                   # 显示当月日历;cal 2026 就显示一整年 12 个月
ln -s 原文件/目录 软连接名    # 软链接:一个文件被多处共享,不用 cp,省资源
history 数值          # 查看历史命令,加数值显示最近 N 条
date                  # 看时间
date -s 字符串时间     # 设置系统时间
💡 软链接的删除和删除普通文件一样。
history 后输入编号会执行指令(推荐复制执行,别手滑)。

九、查找与解压缩

9.1 查找

find 范围 选项
#   # 最好加上范围,缩短查询时间
#   -name 文件名      按名字查
#   -user 用户        按所属用户查
#   -size +n/-n       按大小查(+ 大于,- 小于,记得带单位 K/M/G)
#   可以组合通配符 * 使用

which 指令              # 查看某个指令所在的目录

locate 文件             # 快速定位路径,第一次运行要执行 updatedb
                        # updatedb 会让系统文件目录形成自己的小数据库

grep -n "过滤内容" 被查找目标(文件)
#   -n 显示行号
#   经常和 |(管道,前一个结果作为后一个的输入)结合

几个实用技巧:

find / -name "*.conf"                  # 找所有 .conf 文件
find /home -size +10M                  # 找大于 10M 的文件
ps -ef | grep sshd                     # 管道 + grep,最常用的组合
💡 -h 可以按人性化方式显示,比如 ls -lh 就会按 M 单位显示文件大小。

9.2 解压缩

gzip

gzip 文件            # 压缩为 .gz 格式
gunzip 文件.gz       # 解压

zip / unzip

zip 选项 文件.zip 文件/文件夹
unzip 选项 文件.zip
#   -r 递归压缩(压缩文件夹)
#   -d 指定解压后的存放位置(目录)
zip -r a.zip /home/              # 把 home 及其子文件都压缩
unzip -d /opt/tmp a.zip          # 解压到指定位置

tar(最常用)

tar 选项 包名 来源      # 来源可以写多个,空格分开,可以掺杂目录
#   c 产生 .tar 文件
#   v 显示信息
#   f 指定压缩后文件名(放最后)
#   z 打包同时压缩为 .tar.gz
#   x 解压 .tar 文件
组合作用
tar -zcvf 包名.tar.gz 文件压缩为 .tar.gz
tar -zxvf 包名.tar.gz解压 .tar.gz
tar -cvf 包名.tar 文件打包为 .tar
tar -xvf 包名.tar解包 .tar
tar -zxvf myhome.tar.gz -C /opt/temp2-C(大写)指定解压目标目录
🔑 记忆方法:c 是 create(压缩),x 是 extract(解压)。
剩下的 z(gzip)、v(显示)、f(文件名)在两种情况下都一样。

十、定时任务调度

Linux 有两套定时机制,用途不同:

工具特点适用
crond周期性重复执行每天备份、每小时巡检
atd一次性执行"两小时后帮我跑一下"

10.1 crond —— 周期性任务

crond 作为后台进程常驻,每分钟检查一次任务表并调用。

                        ┌─────────────────────────────┐
                        │  脚本 / shell               │
                        │  比如:完成 mysql 备份        │
   定时调用              │  比如:把当前日期和日历       │
   每分钟执行一次 ─→  crond │        追加到 /home/mycal  │
                        └─────────────────────────────┘
                              │
                              ↓ 定时调用,每分钟执行一次
                        ┌─────────────────────────────┐
                        │  简单任务,比如就一条指令     │
                        │  ls -l /etc/ > /tmp/to.txt  │
                        └─────────────────────────────┘
                              ↑
                        /home/my.sh
                        [对 root 有执行权限]
crond 工作原理示意图
⚠️ 使用脚本必须先添加执行权限 —— 脚本默认没有执行权限。

命令:

crontab -e              # 编辑 crontab 定时任务
crontab -l              # 查询当前任务
crontab -r              # 删除当前用户所有的 crontab 任务
service crond restart   # 重启任务调度

例子: 每隔一分钟执行一次

crontab -e
*/1 * * * * ls -l /etc/ > /tmp/to.txt
crontab 编辑与任务列表
💡 五个字段分别是:分 时 日 月 周

注意两点:
- 删除目标文件之后,过了时间它还是会执行
- 但关机期间的任务不会补执行
crontab 时间格式说明

10.2 atd —— 一次性任务

atd 也是后台进程,每 60 秒检查一次作业队列,有作业就比对运行时间,匹配就执行。

                  ┌──────────────────────┐
                  │       job 队列        │
   ╭─────────╮    │  ┌────────────────┐  │
   │   atd   │    │  │ job1           │  │
   │ 对每个作业│─60秒→│ │ 1. 指令        │  │
   │ 执行一次 │    │  │ 2. shell 脚本   │  │
   ╰─────────╯    │  ├────────────────┤  │
                  │  │ job2           │  │
                  │  ├────────────────┤  │
                  │  │ ...            │  │
                  │  └────────────────┘  │
                  └──────────────────────┘
atd 工作原理示意图
⚠️ 必须保证 atd 进程在运行:ps -ef | grep "atd"
at 选项 时间        # 设置一次性定时任务,Ctrl + D 两次结束输入

例子: 两天后的下午 5 点执行

at 5pm + 2days
/bin/ls /home            # 也可以是执行有 x 权限的脚本
# job 1 at Mon Jan 26 17:00:00 2026   ← 输出的 1 就是任务编号

atrm 编号                # 删除任务
at 命令实操

at 的常用选项:

选项作用
-m任务完成后给用户发送邮件,即使无标准输出
-latq 的别名(列出任务)
-datrm 的别名(删除任务)
-v显示任务的预计执行时间
-c打印任务的内容到标准输出
-V显示版本信息
-q <队列>使用指定队列
-f <文件>从指定文件读入,而不是从标准输入读入
-t <时间参数>以时间参数的形式提交要运行的任务

这一页的要点

  1. tail -f 是看日志的必备技能
  2. > 覆盖、>> 追加,任何有输出的命令都能重定向
  3. cp / mv 的目标以 / 结尾才当作目录
  4. tar 记两个字母就够了:c 压缩、x 解压
  5. crond 管周期任务,atd 管一次性任务
  6. crontab 五个字段:分 时 日 月 周;脚本必须先加执行权限