Linux常用命令手册

·  阅读 494
Linux常用命令手册

Hello, 各位勇敢的小伙伴, 大家好, 我是你们的嘴强王者小五, 身体健康, 脑子没病.

本人有丰富的脱发技巧, 能让你一跃成为资深大咖.

一看就会一写就废是本人的主旨, 菜到抠脚是本人的特点, 卑微中透着一丝丝刚强, 傻人有傻福是对我最大的安慰.

欢迎来到小五随笔系列Linux常用命令手册.

前言

本文为目录性质,整理常用Linux命令并做简短概述,未对相关命令做详细解析,望诸位看官周知。

other32.gif

命令查询

  • man command -- 命令手册

  • command --help -- 命令手册

  • whatis command -- 描述命令用途

  • apropos command -- 查找命令

  • which command -- 查看可执行程序位置

文件与目录管理

目录基础操作

👉 ls -- 列出文件和目录

  • -l -- 列出文件详细信息

    • 文件类型 -:普通文件d:directory 目录
    • 权限 详见下文文件权限部分
-rw-r--r--1rootroot10895 11 08:58hello.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 -- 查看全部用户列表

文件权限

权限字段含义权限码
rread 读4
wwrite 写2
xexecute 执行1
名称英文含义
uuser当前用户
ggroup当前用户所在群组
oother其它群组
aall以上全部

👉 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 hiCPU服务于硬中断所耗费的时间总额
0.0 siCPU服务于软中断所耗费的时间总额
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优先级
NInice值。负值表示高优先级,正值表示低优先级
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 -- 删除单词

参考链接

Linux 命令大全

6w字搞定Linux基本操作,建议收藏

linux TOP命令各参数详解

other29.gif

分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改