Linux常用命令手册
Hello, 各位勇敢的小伙伴, 大家好, 我是你们的嘴强王者小五, 身体健康, 脑子没病.
本人有丰富的脱发技巧, 能让你一跃成为资深大咖.
一看就会一写就废是本人的主旨, 菜到抠脚是本人的特点, 卑微中透着一丝丝刚强, 傻人有傻福是对我最大的安慰.
欢迎来到
小五
的随笔系列
之Linux常用命令手册
.
前言
本文为目录性质,整理常用Linux命令并做简短概述,未对相关命令做详细解析,望诸位看官周知。
命令查询
-
man command -- 命令手册
-
command --help -- 命令手册
-
whatis command -- 描述命令用途
-
apropos command -- 查找命令
-
which command -- 查看可执行程序位置
文件与目录管理
目录基础操作
👉 ls -- 列出文件和目录
-
-l -- 列出文件详细信息
- 文件类型
-:普通文件
、d:directory 目录
- 权限
详见下文文件权限部分
- 文件类型
-rw-r--r-- | 1 | root | root | 1089 | 5 11 08:58 | hello.js |
---|---|---|---|---|---|---|
文件类型及权限1 文件类型 2-4 当前用户权限 5-7 当前群组权限 8-10 其它群组权限 | 普通文件:链接数目录:子文件数 | 当前用户 | 所在群组 | 文件大小目录不会递归计算单位byte | 最近一次修改时间 | 文件名 |
-
-a -- all 列出包含隐藏文件的所有文件
-
-h -- human-readable 便于阅读的单位(K M ...)
-
-t -- sort by modification time 按文件最近修改时间排序
-
ll -- 自定义命令
可输入alias查看 -> ll='ls -lh'
alias为别名
👉 pwd -- 查看当前所在目录
👉 cd -- 切换目录
-
~
家目录 -
/
根目录 -
-
上次所在目录(用于在近两次所在目录中来回切换)
👉 du -- 查看文件大小
du -sh
-
-a -- all
-
-h -- human-readable
-
-s -- summarize 只显示总大小
文件内容查看
👉 cat -- 显示文件内容
-
-n -- number all output lines 显示行号
-
cat file1 file2 -- 会将两文件内容合并显示
👉 less -- 分页显示文件内容
-
空格 -- 下一页 | b -- 上一页
-
回车 -- 下一行 | y -- 上一行
-
/ -- 搜索 | n -- 下一个 | N -- 上一个
-
d -- 下半页 | u -- 上半页
-
g -- 到文件开头 | G -- 到文件结尾
👉 head -- 显示文件前n行
- -n -- lines 指定显示行数,默认10行
👉 tail -- 显示文件后n行
-
-n -- lines 指定显示行数,默认10行
-
-f -- follow 用于实时跟踪,可追加 -s sleep-interval 其为更新频率,默认1s
创建、移动、删除
👉 mkdir -- 创建目录
- -p -- parents 若父级目录不存在,则创建
👉 touch -- 创建文件
👉 cp -- 拷贝文件
-
-r recursive 递归
-
可配合通配符
*
使用eg:cp *.sh folder
将所有.sh结尾的文件复制到folder文件夹下
👉 mv -- 移动文件
-
可搭配通配符使用
-
mv file1 file2 -- 对文件进行重命名,将file1重命名为file2
👉 rm -- 删除文件
-
-r -- recursive 递归删除
-
-f -- force 强制删除
-
-i -- prompt before every removal 逐个确认
查找文件
👉 find -- 在何处查找何物
eg:find / -name rm.txt -type f | xargs rm -f
-
-name 指定文件名称,可与通配符搭配使用
-
-size 指定文件大小
+:大于 -:小于
eg:+1024k
-
-type 文件类型
d:目录 f:文件
-
-atime、ctime、mtime 指定不同类型的时间
写入文件
👉 >
-- 将输出结果写入指定文件,注意该操作会覆盖原文件
👉 >>
-- 将输出结果追加到指定文件末尾
👉 <<
-- 将键盘的输入重定向为某个命令的输入
cat > index.html <<EOF
键入内容,输入EOF后结束,该内容写入index.html中
👉 stdin、stdout、stderr
code | 描述 | 对应数字 |
---|---|---|
stdin | 标准输入 | 0 |
stdout | 标准输出 | 1 |
stderr | 标准错误 | 2 |
-
结合上述则有:
1>
、1>>
、2>
、2>>
-
>&
重定向操作,2>&1
输出和错误都存放到一个文件中 -
eg:cat op.sh > results.log 2>&1
数据操作
👉 grep -- 筛选数据
-
grep 内容 文件
-
-r -- recursive
-
-i -- ignore-case
-
-n -- line-number
-
-E -- extended-regexp 使用正则
-
--color -- 彩色显示
-
-A -- after 搜索内容的后n行
eg:-A 10
便于查看某异常相关内容 -
-B -- before 搜索内容的前n行
-
-C -- context 搜索内容的前n行和后n行
👉 sort -- 对数据进行排序
-
-k -- 指定第几列
-
-t -- field-separator 指定分割列的分隔符
-
-n -- numeric-sort 按数值大小排序
-
-r -- reverse 倒序排列
👉 uniq -- 对连续内容进行去重
-
与sort搭配效果更佳
-
-c -- count 显示重复次数
-
-u -- unique 过滤掉重复的行
👉 wc -- 文本统计
-
-l -- lines 行数
-
-w -- words 单词数
-
-c -- bytes 字节数
👉 seq -- 生成连续的数字序列
eg:seq 10 20
👉 xargs -- 读取输入源后进行处理
-
-p -- 打印要执行的命令并询问是否执行
-
-d -- 指定分隔符,默认用空格
-
-n -- 每次将多少项作为命令行参数
组合命令
👉 |
-- 管道,前一个命令的结果做为后一个命令的输入
👉 ;
-- 顺序执行命令,无论前一个命令执行成功与否
👉 &&
-- 前一个命令执行成功后执行下一个命令
👉 ||
-- 前一个命令执行失败后执行下一个命令
权限
👉 sudo -- 使用root权限执行命令
- sudo su -- 开启使用root权限执行命令,用exit退出
用户与群组
👉 su -- 切换用户
su -
-- 切换到root用户并定位到家目录
👉 useradd -- 添加用户
👉 passwd -- 给用户设置密码
👉 chpasswd -- 修改用户密码
👉 userdel -- 删除用户
-
-r -- reomve 删除家目录
-
-f -- force 该用户若正在使用,强制退出
👉 groupadd -- 添加群组
usermod -g 群组名 用户名
-- 将用户移动到群组
👉 groupdel -- 删除群组
👉 w -- 查看当前活跃用户
cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more
-- 查看全部用户列表
文件权限
权限字段 | 含义 | 权限码 |
---|---|---|
r | read 读 | 4 |
w | write 写 | 2 |
x | execute 执行 | 1 |
名称 | 英文 | 含义 |
---|---|---|
u | user | 当前用户 |
g | group | 当前用户所在群组 |
o | other | 其它群组 |
a | all | 以上全部 |
👉 chmod -- 修改文件的访问权限
-
-R -- recursive
-
chmod 640 op.sh
-- 6 = 4 + 2 + 0 user、4 = 4 + 0 + 0 group、0 = 0 + 0 + 0 other -
chomd u+rx op.sh
-- 给当前用户增加rx权限 -
chomd a+x op.sh
===chomd +x op.sh
这里a(all)可省略
👉 chown -- 更改文件的所有者及群组
- eg:
chown root:root op.sh
系统状态
进程监视
👉 ps -- 列出运行进程
-
-ef
-
-aux
列出完整进程,两者间风格不同,配合 grep 使用效果更佳,eg:ps -ef | grep node
👉 pstree -- 以树形结构显示进程
👉 top -- 进程动态列表
-
默认每隔5s更新一次
-
-d -- 更新时间
-
-c -- 显示进程命令行参数
-
-p -- 显示具体PID的资源使用情况
基础信息:top - 18:03:41 up 141 days, 3:17, 1 user, load average: 0.00, 0.04, 0.05
内容 | 含义 |
---|---|
up 141 days | 系统运行时间 |
1 user | 当前在线人数 |
load average: 0.00, 0.04, 0.05 | 系统负载(1m、5m、15m) |
进程数:Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie
内容 | 含义 |
---|---|
94 total | 进程总数 |
1 running | 正在运行的进程 |
93 sleeping | 休眠进程 |
0 stopped | 停止进程 |
0 zombie | 僵尸进程 |
CPU占用比:%Cpu(s): 1.0 us, 0.7 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
内容 | 含义 |
---|---|
1.0 us | 用户空间占用CPU百分比 |
0.7 sy | 内核空间占用CPU百分比 |
0.0 ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
98.3 id | 空闲CPU占比 |
0.0 wa | 等待输入输出的CPU时间百分比 |
0.0 hi | CPU服务于硬中断所耗费的时间总额 |
0.0 si | CPU服务于软中断所耗费的时间总额 |
0.0 st | 软中断 Steal Time |
物理内存信息:KiB Mem : 1798696 total, 83856 free, 249500 used, 1465340 buff/cache
交换空间信息:KiB Swap: 0 total, 0 free, 0 used. 1362176 avail Mem
内容 | 含义 |
---|---|
total | 总量 |
free | 空闲 |
used | 已使用 |
buff/cache | 磁盘元数据和缓存大小 |
avail Mem | 可用于进程下一次分配的物理内存大小 |
进程信息:
内容 | 含义 |
---|---|
PID | 进程id |
USER | 进程所有者的用户名 |
PR | 优先级 |
NI | nice值。负值表示高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
SHR | 共享内存大小,单位kb |
S | 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
%MEM | 进程使用的物理内存百分比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 命令名/命令行 |
👉 kill -- 结束进程
-
-9 -- 强制结束进程
-
killall -- 结束全部进程
👉 & -- 后台运行进程 -- command &
- 后台进程与终端相关联,一旦终端关闭或用户登出,进程就自动结束
👉 nohup -- 不与终端关联
nohup command &
-- 挂起进程
👉 Ctrl + Z -- 转为后台运行并停止
👉 bg % 标号 -- 使进程转入后台
👉 fg % 标号 -- 使进程转入前台
👉 jobs -- 显示后台进程状态
其它
👉 uname -- 输出当前内核信息
- -a -- all 输出全部信息
👉 free -- 查看内存信息,包括物理内存和虚拟内存Swap
👉 df -- 查看磁盘使用量
- -h -- human-readable
👉 ifconfig / ip addr -- 查看IP信息
👉 ping -- 探测网络是否连通
👉 netstat -ant -- 查看当前所有 tcp 链接
👉 date -- 输出时间
-
date "+%H:%M:%S"
-
date num -- 可用于更改系统时间
👉 cal -- 显示日历
👉 reboot -- 重启系统
文件压缩
👉 tar -- 将文件归档(打包)
-
-c -- create 创建压缩包
-
-v -- verbose 显示运行过程
-
-f -- file 指定文件名
-
-cvf --创建一个tar归档
eg:tar -cvf test.tar test/
-
-t -- list 查看归档内容
eg:tar -tf test.tar
-
-r -- append 追加内容到归档
-
-x -- extract 解开归档
-
-z -- gzip 归档并用 gzip 压缩
-zcvf
、-zxvf
👉 gzip -- 将文件压缩为 gzip 格式
-
后缀:
.gz
-
gunzip -- 解压文件
-
zcat / zmore / zless -- 显示压缩后文件内容
👉 zip -- 将文件压缩为 zip 格式
-
unzip -- 解压文件
-
-r -- recursive
eg:zip -r test.zip test
-
-l -- list 不解压,只查看
eg:unzip -l test.zip
延时及定时任务
👉 crontab -- 定时执行程序
-
-l -- 显示 crontab 文件
-
-e -- 修改 crontab 文件
-
-r -- 删除 crontab 文件
-
格式:m h dom mon dow command
-
dom -- day of month,表示一个月的哪一天
-
mon -- month,月份(1-12)
-
dow -- day of week,表示星期几(0-6)
-
command -- 表示需要定时执行的命令
-
-
例子
-
0 * * * * /test.sh
每小时0分时刻都执行test.sh -
0 */2 * * * /test.sh
每2个小时的整点都执行test.sh
-
👉 at -- 延迟执行程序
-
at 10:00 tomorrow -- 明天10点执行
-
at now +10 minutes -- 10分钟后执行
-
<EOF> 或 CTRL + D
-- 保存并退出 -
atq -- 列出任务队列
-
atrm 编号 -- 删除该命令
👉 sleep -- 休眠一段时间
-
sleep 10 -- 暂停10s(为秒时单位可省略)
-
eg:touch file.txt; sleep 10; rm file.txt;
远程链接
👉 ssh 用户名@服务器网址(或公网IP) -- 远程连接服务器
-
-p -- 指定端口,默认22
-
ssh-copy-id root@服务器网址
-- 将客户端的公钥追加到服务器 authorized_keys 中 -
-i -- 指定身份文件,可将私钥写入
~/.ssh
中,在 -i 后加文件名登录
👉 scp 远程传输文件
👉 批量操作
需要将代理服务器的公钥放置在其他服务器的 ~/.ssh/authorized_keys
中
批量传输文件
export ips=~/ips.txt
for line in $(cat $ips)
do
scp ~/xxx xxx@$line:/xxx
done
批量操作其他服务器
pdsh ip1,ip2,ip3 "具体操作"
pdsh ips.txt "具体操作"
pdsh默认采用rsh登录,需修改为ssh登录
export PDSH_RCMD_TYPE=ssh
source /etc/profile
从代理服务器快速登录其他服务器的别名设置
echo 'export PATH="~/bin:$PATH"' | tee -a ~/.bashrc
source ~/.bashrc
vim ~/bin/connect
ip=""
case $1 in
"deeruby")
ip="xxx"
;;;
esac
ssh root@${ip}
使用:connect deeruby
配置文件
👉 /dev/null -- 黑洞文件
👉 ~/.(...)rc
-
以rc结尾的文件为配置文件
-
eg:
~/.bashrc
-- bash配置文件、~/.zshrc
-- zsh配置文件
👉 export -- 追加环境变量
👉 alias -- 为命令定义别名,方便记忆及执行
👉 source -- 使文件立即生效
vim基础操作
编辑模式
👉 进入编辑模式
-
i -- 光标前
-
I -- 行首
-
a -- 光标后
-
A -- 行尾
-
o -- 向下产生空行
-
O -- 向上产生空行
👉 粘贴乱序
set paste
-> 粘贴 ->set nopaste
命令模式
👉 set nu 设置行号
- set nonu -- 取消设置
👉 替换
第一部分 | 第二部分 | 第三部分 |
---|---|---|
num1, num2 -- 表示替换从多少行到多少行 % -- 全部 | s/替换前/替换后 | /g 全局替换 n 查询次数 |
👉 分割/切换窗口
-
sp 垂直分割
-
vs 水平分割
-
ctrl + w + (hjkl) 切换窗口
普通模式
👉 搜索
/搜索内容
-- N 上一个 n 下一个
👉 移动
-
hjkl
-
0 / $ -- 移动到行首或行尾
-
gg -- 移动到文件开头
-
G -- 移动到文件结尾
-
w / e 移动到(下一个)单词开头/结尾
-
b 移动到(上一个)单词开头
👉 删除
-
dd 删除整行 可配合数字删除多行 4dd 删除4行
-
x 删除字符 dw 删除单词 d0 删除到开头 d$ 删除到行尾
-
ct 从哪删除到哪 eg:ct" 从当前删除到" (只能接单个字符)
👉 u -- 撤销
👉 选中
- shift + v 选择单行,配合上下键可选择多行,配合 G 可全选
👉 修改
- r 修改当前字符 如 ra 将当前字符修改为 a,R 会不断替换后面字符
👉 gi -- 快速回到上次编辑位置并打开编辑模式
👉 宏
- q+寄存器名称 开始录制,在次输入 q 结束录制,@+寄存器名称 回放操作,shift + v -> :normal @a 多行操作
常用快捷键
👉 ctrl + c
-- 结束进程
👉 ctrl + l
-- 清屏
👉 ctrl + a
-- 移动到行首
👉 ctrl + e
-- 移动到行尾
👉 ctrl + u
-- 删除当前行
👉 ctrl + w
-- 删除单词
参考链接
转载自:https://juejin.cn/post/7106302473005957134