基本命令使用
目的
-
常见的命令
-
等等
tar命令
- 用于压缩和解压的命令,很常用的命令
tar 选项 目标文件名 需要打包的目录或者文件
| 选项 | 全称/含义 | 作用 |
|---|---|---|
-z |
gzip | 使用 gzip 压缩,生成 .tar.gz 文件(压缩率高) |
-c |
create | 创建新的归档文件(不是解压) |
-v |
verbose | 显示详细过程(会列出打包了哪些文件) |
-f |
file | 指定归档文件名(必须紧跟文件名,比如 -f archive.tar.gz) |
-x |
解压 | 解压文件 |
-t |
查看压缩包的内容 | 不进行解压,直接查看里面的内容 |
-C |
指定解压目录 | 将解压的文件指定到一个目录去即可 |
- 查看压缩包内容不解压
# -t 查看压缩包的内容
[root@docker ~]# tar -tf tmp.tar.gz
tmp/
tmp/ks-script-1ql_szzb
tmp/ks-script-skjfwrpn
tmp/.X11-unix/
tmp/.ICE-unix/
tmp/.XIM-unix/
tmp/.font-unix/
tmp/.Test-unix/
tmp/vmware-root_791-4282302006/
tmp/vmware-root_777-4281777711/
tmp/vmware-root_781-4290101162/
- 将多个目录进行打包
[root@docker mnt]# ls
hgfs tmp
[root@docker mnt]# tar -czvf 123.tar.gz hgfs/ tmp/
hgfs/
tmp/
tmp/vmware-root_782-2965579254/
tmp/.font-unix/
tmp/vmware-root_790-2965972456/
tmp/vmware-root_777-4281777711/
tmp/vmware-root_781-4290101162/
tmp/vmware-root_793-4248746047/
tmp/vmware-root_771-4256545187/
tmp/ks-script-1ql_szzb
tmp/ks-script-skjfwrpn
tmp/.X11-unix/
tmp/.Test-unix/
tmp/.ICE-unix/
tmp/vmware-root_787-4290625459/
tmp/vmware-root_791-4282302006/
tmp/.XIM-unix/
[root@docker mnt]# ls
123.tar.gz hgfs tmp
- 将打包的文件解压到指定的目录上去
[root@docker mnt]# tar -czvf tmp.tar.gz /tmp
tar: Removing leading `/' from member names
/tmp/
/tmp/ks-script-1ql_szzb
/tmp/ks-script-skjfwrpn
/tmp/.X11-unix/
/tmp/.ICE-unix/
/tmp/.XIM-unix/
/tmp/.font-unix/
/tmp/.Test-unix/
/tmp/vmware-root_791-4282302006/
/tmp/vmware-root_777-4281777711/
/tmp/vmware-root_781-4290101162/
/tmp/vmware-root_790-2965972456/
/tmp/vmware-root_793-4248746047/
/tmp/vmware-root_771-4256545187/
/tmp/vmware-root_782-2965579254/
/tmp/vmware-root_787-4290625459/
[root@docker mnt]# ls
hgfs tmp.tar.gz
# -C 就是解压到指定路径上面去
[root@docker mnt]# tar -xzvf tmp.tar.gz -C /opt/
tmp/
tmp/ks-script-1ql_szzb
tmp/ks-script-skjfwrpn
tmp/.X11-unix/
tmp/.ICE-unix/
tmp/.XIM-unix/
tmp/.font-unix/
tmp/.Test-unix/
tmp/vmware-root_791-4282302006/
tmp/vmware-root_777-4281777711/
tmp/vmware-root_781-4290101162/
tmp/vmware-root_790-2965972456/
tmp/vmware-root_793-4248746047/
tmp/vmware-root_771-4256545187/
tmp/vmware-root_782-2965579254/
tmp/vmware-root_787-4290625459/
[root@docker mnt]# ls /opt/
containerd tmp
crontab命令
1、语法
-
定时任务,对应的crontab服务
-
相关目录
- /var/spool/cron
[root@docker ~]# cat /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
* * * * *
第一列表示分钟,00~59 每分钟用* 或者*/1表示
第二列表示小时,00~23 0表示0点
第三列表示天数 1~31
第四列表示月数 1~12
第五列表示星期几 0~6 0表示星期天或者7也能表示
第六列表示运行的命令
-
其他的符号
-
* 代表任何时间,第一个* 就代表每个小时中的每分钟执行
-
, 代表不连续的时间, 0 8,12 * * * 代表这每天的12,8点的0分执行
-
- 代表连续的时间范围,比如 0 5 * * 1-6 代表周一到周六的5点0分执行
-
*/n 代表每隔多久执行一次,比如 */10 * * * * 表示每隔10分钟执行一次
-
-
crontab的用法
[root@docker ~]# crontab --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
Usage:
crontab [options] file
crontab [options]
crontab -n [hostname]
Options:
-u <user> define user # 指定那个用户
-e edit user's crontab # 创建一个定时任务,不存在就自动创建,已存在的则可以修改
-l list user's crontab # 列出这个用户的定时任务
-r delete user's crontab # 删除这个用户的定时任务
-i prompt before deleting # 在删除之前提醒用户
-n <host> set host in cluster to run users' crontabs
-c get host in cluster to run users' crontabs
-s selinux context
-V print version and exit
-x <mask> enable debugging
Default operation is replace, per 1003.2
crontab -u user -e
2、案例
- 每天上午9点到下午6点执行,每小时执行一次
[root@docker cron]# cat /var/spool/cron/qq
0 9-18 * * * echo 1 > 1.txt
- 每30分钟执行一次,但只在工作时间(周一到周五,9am-5pm)
*/30 9-17 * * 1-5 date
- 周一到周五,上午9点到12点,以及下午的1点半到5点半,每30分钟执行一次
[root@master cron]# crontab -u root -l
*/30 9-12,13-17 * * 1-5 echo 1 > /mnt/1.txt
- 每2小时执行一次,只在周一到周五的上午8点到晚上8点之间
[root@master cron]# crontab -u root -l
0 8-20/2 * * 1-5 echo 1
- 每周六和周日的凌晨3点30分执行
[root@master cron]# crontab -u root -l
30 3 * * 6,7 echo 1
curl命令
- 其实这些都是可以用--help来帮助查询到的
# 选项
-o 文件名 下载url文件,并指定文件名
-O 下载文件并保存原始文件名
curl -o 1.html https://baidu.com/index.html
curl -O https://baidu.com/index.html
wget命令
# 选项
-O 文件名 将下载的文件指定文件名
-P 目录 将的文件保存到指定目录,这个可以创建的目录
-b 后台下载文件
-q 静默输出信息,少量的显示
# 会自动的创建这个1.html目录
wget https://baidu.com/index.html -P /mnt/1.html
# 自定义下载的文件名
wget https://baidu.com/index.html -O 1.html
# 放在后台下载文件
wget https://baidu.com/index.html -O 1.html -b
date命令
- 通过+% 显示时间
# 选项
%Y 显示完整年份
%m 显示月份
%d 显示日(1-31)
%H 显示小时(24小时)
%M 显示分钟(0-59)
%F 显示年月日
%T 显示时分秒
# 显示年月日
[root@master ~]# date +%F
2025-09-12
[root@master ~]# date +"%Y-%m-%d"
2025-09-12
# 显示时分秒
[root@master ~]# date +%T
22:20:02
# 显示年月日 时间
[root@master ~]# date +"%F %T"
2025-09-12 22:21:02
# 修改日期后,时间会默认修改为0
[root@master ~]# date
Mon Aug 12 12:00:01 AM EDT 2024
# 修改时间
[root@master ~]# date -s "14:30:45"
Mon Aug 12 02:30:45 PM EDT 2024
# 修改年月日和时间
[root@master ~]# date
Fri Sep 12 10:26:01 PM EDT 2025
sort命令
- 进行排序的
-r 反向排序,降序,默认是升序
-n 按照数值的大小排序
-k 指定排序的键来排序, 3就是按照第三列来进行排序
-t 指定字段分隔符,默认是空白字符
-f 忽略大小写
-h 可读的数字格式排序
-u 去掉重复项
# 以:为分隔符,按照第三个列,并且是按照数字来进行升序排序
# -k -t 一起使用
[root@master ~]# sort -t ":" -k3n passwd
root:x:0:0:root:/root:/bin/bash
cut命令
-f(fileds)按照字段提取
-d(delimiter) 指定字段分隔符
-c 按照字符位置提取
# -f -d要一起配合使用
[root@master ~]# cut -d ":" -f 1,3 passwd
root:0
bin:1
daemon:2
adm:3
lp:4
# 首先先升序排序,然后取出用户和id
[root@master ~]# sort -t ":" -k 3n passwd | cut -d : -f 1,3
root:0
bin:1
daemon:2
adm:3
# 取出三个字符
[root@master ~]# cut -c "1-3" passwd
roo
bin
find命令
-
这个命令是精确查找的,可以查找文件
-
find 路径 选项 动作 -
这个动作适合更加复杂的
# 选项
- name # 按照名字来进行查找
- size +-num # 按照文件大小来查找
-perm / 或者 - # 按照权限来查找 /777只有查找的权限里面还有其中的一个就符合,就是700也符合,-644只有文件的权限大于等于644就可以了,777 精确查询
atime|mtime|ctime # 按照时间来查找,time是天数,min是分钟
# a是访问时间,m是内容修改时间,c是元数据修改时间
-user,group # 按照文件的拥有者和拥有组来查找
-type # 可以查找文件的类型 f 或者 d
# 动作
-print # 打印出来
--ls # 列出展示
>或者fls # 将查找出来的东西另存为
xarg # 可以将查找出来的结果再次使用命令,不能使用管道符
-ok \; # 二次操作,需要询问是否继续操作
-exec \; # 二次操作,不需要询问
案例
# 查找/opt目录下面大于10k的文件
[root@master /]# find /opt/ -size +10k
/opt/backup/message-20250910.tar.gz
# 查找权限,其中有含有7的就符合
[root@master /]# find /opt/ -perm /777
/opt/
/opt/user.sh
/opt/while.sh
/opt/userlist.txt
/opt/disk_check.sh
/opt/file_check.sh
/opt/backup_log.sh
/opt/backup
# 精确查询,,777才能符合
[root@master /]# find /opt -perm 777
/opt/11.sh
# 二次操作
# 备份的话,需要使用相对路径才可以
[root@master mnt]# ls
1.txt
[root@master mnt]# find . -type f -exec cp {} /mnt/{}.bak \;
[root@master mnt]# ls
1.txt 1.txt.bak
# 将查找出来的文件再次进行操作,不能使用管道符| 只能使用xargs
[root@master mnt]# find /mnt/ -type f | xargs chmod 777
[root@master mnt]# ls
1.txt 1.txt.bak
tr命令
-
可以将一系列字符进行转换
-
经常与重定向结合使用
-
处理的是字符而不是字符串
tr 选项 set1 set2 # 从set1转换为set2中对应的字符
tr 'ab' 'cd' # 将每一个字符a替换为c,每一个字符b替换为d
# 而不是将ab字符替换为cd
-d # 删除字符,不需要提供set2
-s # 压缩连续重复的字符,将其缩减为1个
-c # 进行取反的操作
[a-zA-Z] # 转换为字母
[0-9] # 转换为数字
# 将小写字母全部转换为大写字母
[root@master ~]# cat passwd | tr 'a-z' 'A-Z'
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
# 删除属于root的字符
[root@master ~]# cat passwd | tr -d 'root'
# 取出用户名,全部转换为大写
[root@master ~]# cut -d ":" -f 1 passwd | tr 'a-z' 'A-Z' | sort
ADM
BIN
软链接和硬链接
-
ln -s 原文件 链接文件
-
ln -s b a
-
做了一个软连接是a,指向了b(原文件)
-
修改链接文件b,a也会被修改
-
但是删除了源文件b,链接文件a就不能使用了
[root@master ~]# ln -s passwd p1
[root@master ~]# ls -l p1
lrwxrwxrwx. 1 root root 6 Sep 23 20:00 p1 -> passwd
-
硬链接
-
修改硬链接文件,源文件也会被修改
-
但是删除了源文件,链接文件也能使用,不受影响
[root@master mnt]# ln p1 p2
[root@master mnt]# echo 2 > p2
[root@master mnt]# cat p1
2
useradd和usermode(修改已经存在的用户的信息)
- useradd
-c 注释信息
-d 指定一个自定义的家目录,而不是默认的/home下面的目录
-e 设置账户的过期日期 格式为yyyy-mm-dd
-g 设置gid,也就是初始组,一般来说创建用户,默认就创建了初始组
-G 设置用户的附加组,可以有多个附加组
-m 强制创建用户家目录,一些环境变量也创建了过去,.bashrc
-s 指定用户登录的shell, /bin/bash,/sbin/nologin
-u 设置uid
-r 创建一个系统用户
- usermod命令
-g 修改用户的主要组
-G 修改用户的附加组
-aG 添加附加组,可以添加多个附加组
-d 修改用户的家目录文件
-s 修改登录的shell
进程相关命令
ps命令
| 选项 | 功能 |
|---|---|
-a |
显示当前终端的所有进程,包括其他用户的进程 |
-u |
显示进程的用户信息 |
-x |
显示没有控制终端的进程 |
-e |
显示系统中所有的进程 |
-f |
显示长格式的进程信息 |
-l |
显示长格式的进程信息,包含更多详细信息 |
-o |
自定义输出的列,例如 -o pid,comm 只显示进程ID和命令名称 |
-p |
指定进程ID,例如 -p 1234 只显示进程ID为1234的进程 |
-t |
指定终端,例如 -t pts/0 只显示在终端pts/0上运行的进程 |
-U |
指定用户,例如 -U username 只显示属于指定用户的进程 |
-G |
指定用户组,例如 -G groupname 只显示属于指定用户组的进程 |
-H |
以树状结构显示进程 |
-j |
显示作业控制信息 |
-m |
显示物理内存的使用情况 |
-M |
显示进程的内存映射信息 |
-s |
显示进程的信号信息 |
-T |
显示所有进程的线程 |
-w |
宽输出,不截断列 |
-y |
不显示标题行 |
| 命令示例 | 说明 |
|---|---|
ps |
显示当前终端下的进程 |
ps -e 或 ps -A |
显示所有进程 |
ps -f |
显示完整格式(包括 UID、PPID、启动时间等) |
ps -u 用户名 |
显示指定用户的进程 |
ps -ef |
显示所有进程的完整信息 |
ps aux |
显示所有用户的所有进程(BSD 风格) |
ps -ejH |
显示进程树结构 |
ps -o pid,ppid,cmd,%mem,%cpu |
自定义输出字段 |
-
字段详细介绍
-
user ,进程的创建者
-
pid 每个进程会被分配一个pid
-
%cpu 进程占用了多少cpu
-
%mem 进程占用了多少mem
-
tty 获得终端的方式,tty,pts,?这三种
-
tty和pts都是linux的终端设备
-
pts就是伪终端,图形化连接就是这样的,pts/0就是第一个伪终端
-
tty 就是与计算机连接的,串口的这些东西,每一个物理控制台
-
?表示没有终端,内核的进程
-
-
stat 进程的状态,正在运行的,停止的,睡眠的,僵尸的
-
time 进程持续的时间
-
command 进程的命令
-
-
常见的案例
# 自定义显示内容
[root@master ~]# ps -axo user,pid,%cpu,%mem,command | head -5
USER PID %CPU %MEM COMMAND
root 1 0.0 0.5 /usr/lib/systemd/systemd --switched-root --system --deserialize 17
root 2 0.0 0.0 [kthreadd]
root 3 0.0 0.0 [rcu_gp]
root 4 0.0 0.0 [rcu_par_gp]
# 按照内存和cpu来排序,--sort
# 按照内存来进行升序
[root@master ~]# ps -aux --sort=%mem
# 带上-号的话,就是降序
[root@master ~]# ps -aux --sort=-%mem
top命令
| 选项 | 功能 |
|---|---|
-b |
批处理模式,用于将输出重定向到文件或管道,不显示交互式界面 |
-d |
设置更新间隔时间,例如 -d 2 表示每2秒刷新一次 |
-n |
设置更新次数,例如 -n 5 表示更新5次后退出 |
-p |
指定进程ID,例如 -p 1234 只显示指定进程ID的进程 |
-u |
指定用户,例如 -u username 只显示属于指定用户的进程 |
-i |
忽略空闲或僵尸进程 |
-s |
安全模式,限制某些交互式命令的使用 |
-c |
显示完整的命令行,而不是简化的命令名称 |
- 进入到top里面后的交互命令
| 按键 | 功能 |
|---|---|
h |
显示帮助信息 |
k |
终止进程 |
r |
重新设置进程的优先级 |
i |
切换显示空闲或僵尸进程 |
q |
退出 top |
P |
按CPU使用率排序 |
M |
按内存使用率排序 |
T |
按运行时间排序 |
top - 14:45:27 up 31 min, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 209 total, 1 running, 208 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 2945.7 total, 2564.6 free, 251.9 used, 129.2 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 2547.8 avail Mem
-
每个字段的介绍
-
top:开机时间,多少个用户在登录这个系统,当前系统负载均衡值,每分钟,每5分钟,每15分钟,一般超过了1就超载运行,等于1全力在运行,小于1,很空闲
-
tasks:289个进程 有一个正在运行;288个在休眠中,0个停止,0个僵尸
-
%cpu:占用的cpu率。us---为用户占用 sy----系统内核占用 ni----改变过系统优先级占用 id----为空闲的,一般这个数字越大,就是没有占用多少cpu, wa:就是等待i|o操作完成占用的cpu
-
mem:这个是总内存,还有多少空余的内存,已经使用了多少内存,缓存量
-
swap:这个交换分区的大小,多少空闲,多少已经被使用了,可用的物理内存剩余多少
-
pgrep查看进程
| 选项组 | 功能一句话 | 复制即用的案例 | 终端里真实回显示例 |
|---|---|---|---|
| 基础筛选 | |||
| 无选项 | 仅按名字抽 PID | pgrep nginx |
12345678 |
-f |
整行命令一起匹配 | pgrep -f "python manage.py" |
3402 |
-i |
大小写忽略 | pgrep -i MYSQL |
11204 |
-w |
整词匹配,避免前缀干扰 | pgrep -w code |
只匹配“code”,不匹配“vscode” |
-x |
精确整字符串 | pgrep -x bash |
仅命中“bash”,不会命中“bashdb” |
| 输出控制 | |||
-l |
带进程名 | pgrep -l redis |
1427 redis-server |
-a |
完整命令行 | pgrep -a tmux |
998 tmux new -s work |
-c |
只计数 | pgrep -c java |
3 |
-d |
自定义分隔符 | pgrep -d, docker |
1234,5678,9012 |
| 时间 / 新老进程 | |||
-o |
最早启动的实例 | pgrep -o chrome |
第一个 chrome 的 PID |
-n |
最新启动的实例 | pgrep -n python |
最新 python 的 PID |
| 按归属过滤 | |||
-u |
指定用户(名) | pgrep -u mysql mysqld |
仅列 mysql 用户的 mysqld |
-U |
指定用户(UID) | pgrep -U 1000 tmux |
UID 1000 的 tmux |
-G |
指定用户组(名或 GID) | pgrep -G docker |
|
-g |
指定进程组 PGID | pgrep -g 2201 |
|
-P |
指定父 PID | pgrep -P 1 |
查 init 的直接子进程 |
-s |
指定会话 SID | pgrep -s $$ |
同一会话下的进程 |
-t |
指定终端 | pgrep -t pts/0 bash |
pts/0 上的 bash |
| 反向选择 | |||
-v |
反选 | pgrep -v root |
非 root 用户的进程 |
| 组合高阶示例 | |||
| 多条件与 | 最新一个 python + 属于 UID 1000 | pgrep -n -U 1000 -f python |
|
| 批量杀进程 | 安全先打印 | pgrep -a nginx 确认后kill $(pgrep nginx) |
|
| 脚本计数 | 超过 5 个报警 | [ $(pgrep -c worker) -gt 5 ] && echo "Too many workers!" |
# pgrep → 再 kill $(pgrep …)
先查出来httpd的进程,然后直接全部删除
pidof命令
- 显示pid,根据名字快速返回pid
| 选项 | 一句话功能 | 复制即用示例 | 终端真实回显 |
|---|---|---|---|
| 无选项 | 只返 PID,空格分隔 | pidof nginx |
1234 5678 |
-s |
只返 1 个 PID(最早) | pidof -s nginx |
1234 |
-c |
只返同一根 cgroup的 PID(Systemd 场景常用) | pidof -c crond |
|
-x |
把脚本本身也统计进去(shebang 脚本常用) | pidof -x backup.sh |
3456 |
-o |
排除指定 PID(支持列表) | pidof -o 1234 nginx |
跳过 1234 再输出其余 PID |
| `-m** | 与 -o 合用,表示“跳过主进程(最小 PID)” | pidof -m -o %PPID nginx |
常用于脚本里只杀子进程 |
kill命令
| 信号名 | 编号 | 一句话作用 | 复制即用案例 | 终端回显/备注 |
|---|---|---|---|---|
| 常用必背 | ||||
SIGTERM |
15 | 优雅退出(可被捕获) | kill -15 1234 或 kill 1234 |
默认就是 15 |
SIGKILL |
9 | 强制立刻杀(不可捕获) | kill -9 1234 |
进程直接消失 |
SIGHUP |
1 | 重载配置不重启 | kill -1 1234 |
nginx、rsyslog 常用 |
SIGINT |
2 | 模拟 Ctrl-C | kill -2 1234 |
前台进程同样效果 |
SIGSTOP |
19 | 暂停(不可捕获) | kill -19 1234 |
等同 Ctrl-Z |
SIGCONT |
18 | 继续暂停的进程 | kill -18 1234 |
与 19 成对使用 |
| 脚本/调试 | ||||
SIGUSR1 |
10 | 用户自定义(日志翻转) | kill -USR1 1234 |
nginx -s reopen 等同 |
SIGUSR2 |
12 | 用户自定义(平滑升级) | kill -USR2 1234 |
nginx 热升级二进制 |
SIGQUIT |
3 | 优雅退出+core | kill -3 1234 |
会生成 core 文件 |
SIGWINCH |
28 | nginx 平滑关闭 worker | kill -WINCH 1234 |
仅主进程有效 |
[root@master ~]# vim 1.txt &
[1] 1419
[root@master ~]# pgrep -a vim
1419 vim 1.txt
[root@master ~]# kill -9 1419
[1]+ Killed vim 1.txt
[root@master ~]# pgrep -a vim
[root@master ~]#
killall和pkill命令
-
killall通过名字来删除
-
pkill通过杀死进程的命令来删除
| 命令 | 核心差异/注意 | 常用选项 & 示例 | 终端真实回显/备注 |
|---|---|---|---|
| killall | 精确进程名匹配;默认不加信号即 15;不存在会报错 | ||
killall nginx |
温柔杀掉所有 nginx | ||
killall -9 -w firefox |
-w 等待死亡完成再返回 |
||
killall -u mysql -s HUP mysqld |
只发 HUP 给 mysql 用户的 mysqld | ||
killall -I -y 5s python |
-I 忽略大小写,-y 5s 仅杀运行≥5 秒的 |
||
killall -s 0 nginx |
-s 0 探测是否存在(无杀) |
||
| pkill | 模式匹配(正则/整行/用户/终端…);默认信号 15;不存在静默成功 | ||
pkill -f "python manage.py" |
杀整行命令含该字符串的进程 | ||
pkill -9 -n java |
只杀最新一个 java | ||
pkill -STOP -u guest |
暂停 guest 所有进程 | ||
pkill -CONT -g 2201 |
继续该进程组 | ||
pkill -x -o code |
精确整词匹配,杀最老的 code | ||
pkill -SIGUSR1 -P 1 rsyslogd |
向 rsyslogd 主进程发 USR1(日志翻转) |
# killall命令
[root@master ~]# vim 1.txt &
[1] 1840
[root@master ~]# killall -9 vim
[1]+ Killed vim 1.txt
[root@master ~]# killall httpd
[root@master ~]# pgrep httpd
# pkill命令
# 杀死一个终端
pkill -t tty2
vim命令
| 目的 | 命令 | 记忆提示 | 示例 |
|---|---|---|---|
| 保存 | :w |
write | :w |
| 保存并退出 | :wq 或 ZZ |
write quit / 双击 Z | :wq |
| 仅退出(未改) | :q |
quit | :q |
| 强制退出(不保存) | :q! |
quit **!**强制 | :q! |
| 另存为…再退出 | :wq newname |
直接跟新文件名 | :wq bak.txt |
| 全局替换 | :%s/old/new/g |
substitute | :%s/foo/bar/g |
| 逐条确认替换 | :%s/old/new/gc |
confirm | :%s/foo/bar/gc |
| 当前行替换 | :s/old/new/g |
去掉 % 仅当前行 |
:s/foo/bar/g |
| 向下搜索 | /pattern |
普通模式先 / |
/error |
| 向上搜索 | ?pattern |
普通模式先 ? |
?TODO |
| 跳到下一个匹配 | n |
next | n |
| 跳到上一个匹配 | N |
Next(反向) | N |
| 执行 Shell 命令 | :!cmd |
感叹号调外部 | :!ls -l |
| 读入命令输出 | :r!cmd |
read | :r!date |
| 放弃所有窗并退出 | :qa! |
quit all | :qa! |
| 保存所有窗并退出 | :wqa |
write quit all | :wqa |
cat的写入命令
# cat > 覆盖写入,以什么开头就是以什么结尾
[root@master test]# cat > 1.txt <<EOF
> 123
> 123
> EOF
[root@master test]# cat 1.txt
123
123
[root@master test]# cat > 1.txt <<R
> asd
> asd
> R
[root@master test]# cat 1.txt
asd
asd
- 追加写入
# cat >>文件名 追加写入
[root@master test]# cat >>1.txt <<EOF
> pp
> ppp
> EOF
[root@master test]# cat 1.txt
asd
asd
pp
ppp
dd命令
- 写入一个文件指定大小
# if 指定输入文件
# of 指定输出文件
# bs 指定大小
# count 指定块数量
# 总大小 = bs*块数量
[root@master test]# dd if=/dev/zero of=file1 bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00112957 s, 928 MB/s
[root@master test]# ll -h file1
-rw-r--r-- 1 root root 1.0M Oct 31 22:49 file1

浙公网安备 33010602011771号