简单命令

pwd
查看当前我们所在的目录路径
clear
清除屏幕

文件管理

cd

从当前目录切换到指定目录

touch

两个功能:一是创建新的空文件,二是改变已有文件的时间戳属性。
批量创建文件:

  1. [root@linuxcool ~]# touch file{1..5}.txt
  2. [root@linuxcool ~]# ls
  3. file1.txt file2.txt file3.txt file4.txt file5.txt

mkdir

创建目录

  • -p 递归创建多级目录
  • -m 建立目录的同时设置目录的权限

    1. # 创建文件夹同时赋予权限
    2. mkdir -m 700 /usr/linuxcool/dir
    3. # 同时创建多个文件
    4. mkdir dir1 dir2 dir3
    5. # 递归创建
    6. mkdir -p linuxcool/dir

    mv

    移动文件或对其改名(移动时,若目标路径下有同名文件,则默认直接覆盖)

  • -i 若存在同名文件,则向用户询问是否覆盖

  • -f 覆盖已有文件时,不进行任何提示
  • -b 当文件存在时,覆盖前为其创建一个备份
  • -u 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作

    ls

  • -a 显示隐藏文件

  • -h 与-l 一起,以易于阅读的格式输出文件大小
  • -l 显示详细信息
  • -S 以文件大小排序(默认依英文字母次序)
  • -t 根据最后的修改时间排序
  • -A 同 -a ,但不列出 “.” (当前目录) 及 “..” (父目录)

    rm

  • -f 强制删除

  • -d 删除空目录
  • -r 递归删除目录及其内容

    cp

  • -i 提示

  • -r 复制目录及目录内所有项目
  • -a 复制的文件与原文件时间一样

find

find path -options (option必须在后)

  • -name 按照文件名查找文件
  • -user 按照文件属主来查找文件。
  • -size 按大小查找
  • -iname 忽略大小写
  1. # 路径(/home/lz/)下查找test
  2. find /home/lz/ --name test
  3. # 查看/etc目录下面大于1M的文件
  4. find /etc -size +1M
  5. c: 表示字节数
  6. k: 表示 kilo bytes 1024字节)
  7. w: 2字节)
  8. M:兆字节(1048576字节)
  9. G: 千兆字节 1073741824字节)

tar

tar -cvf test.tar test

  • -z:有gzip属性的
  • -x 从压缩的文件中提取文件
  • -f 指定压缩文件
  • -j:有bz2属性的
  • -Z:有compress属性的
  • -v:显示所有过程
  • -c 打包
  • -C 用于仅压缩特定目录里的内容或解压缩到特定目录
  • — -remove-files


    示例


zip格式
压缩: zip -r [目标文件名].zip [原文件/目录名]
解压: unzip [原文件名].zip
注:-r参数代表递归

tar格式
该格式仅仅打包,不压缩
打包:tar -cvf [目标文件名].tar [原文件名/目录名]
解包:tar -xvf [原文件名].tar
注:c参数代表create(创建),x参数代表extract(解包),v参数代表verbose(详细信息),f参数代表filename(文件名),所以f后必须接文件名。

tar.gz格式
打包并压缩: tar -zcvf [目标文件名].tar.gz [原文件名/目录名]
解压并解包: tar -zxvf [原文件名].tar.gz
注:z代表用gzip算法来压缩/解压。

tar.bz2格式
打包并压缩: tar -jcvf [目标文件名].tar.bz2 [原文件名/目录名]
解压并解包: tar -jxvf [原文件名].tar.bz2
注:小写j代表用bzip2算法来压缩/解压。

tar.xz格式
打包并压缩: tar -Jcvf [目标文件名].tar.xz [原文件名/目录名]
解压并解包: tar -Jxvf [原文件名].tar.xz
注:大写J代表用xz算法来压缩/解压。

  1. # 将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
  2. tar -rf all.tar *.gif
  3. #更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
  4. tar -uf all.tar logo.gif
  5. # 列出all.tar包中所有文件,-t是列出文件的意思
  6. tar -tf all.tar

du

  1. 文件和目录磁盘使用的空间的查看
  • -a 显示目录中所有文件大小
  • -h 以易读方式显示文件大小
  • -s 仅显示总计

    1. # 显示文件大小,并按照大小排序
    2. du -sh * | sort -hr

    ln

    ln [参数] [源文件或目录] [目标文件或目录]

  • -s 软链接


    硬链接当成源文件的副本,他和源文件一样的大小,但是事实上却不占任何空间。

  • 1.硬链接以文件副本的形式存在,但不占用实际空间。

    1. 硬链接不允许给目录创建硬链接。
  • 3.硬链接只有在同一个文件系统中才能创建。

符号链接可以理解为类似windows一样的快捷方式

    1. 符号链接以路径的形式存在,类似于Windows操作系统中的快捷方式。
    1. 符号链接可以跨文件系统 ,硬链接不可以。
    1. 符号链接可以对一个不存在的文件名进行链接,硬链接不可以。
    1. 符号链接可以对目录进行链接,硬链接不可以。
      1. #硬链接
      2. ln t2 t1
      3. -rw-rw-r-- 2 ubuntu ubuntu 0 May 6 22:23 t1
      4. -rw-rw-r-- 2 ubuntu ubuntu 0 May 6 22:23 t2
      5. # 符号连接
      6. ln -s t1 t2
      7. -rw-rw-r-- 1 ubuntu ubuntu 0 May 6 22:23 t1
      8. lrwxrwxrwx 1 ubuntu ubuntu 2 May 6 22:25 t2 -> t1

cat

  1. -n 输出所有行号

more和less

less是more的升级版,除支持more全部命令集,还支持上下键翻页

    • m 显示类似more命令的百分比
  • -N 显示每行的行号

内部操作

  • b 向后翻一页
  • d 向后翻半页
  • h 显示帮助界面
  • q 退出less 命令
  • u 向前滚动半页
  • y 向前滚动一行
  • 空格键 滚动一页
  • 回车键 滚动一行

tail和head

head显示文件的开始几行,tail显示文件的最后几行。(默认10行)

  • -n 指定行数

    进程管理

    kill

  • 1 (HUP):重新加载进程。

  • 9 (KILL):杀死一个进程。
  • 15 (TERM):正常停止一个进程。



    查杀进程pro1

    kill -9 $(ps -ef | grep pro1)

杀死进程

kill -9 123456

ps

  当前运行的进程状态

进程有5种状态

  • D 不可中断 uninterruptible sleep
  • R 运行 runnable
  • S 中断 sleeping
  • T 停止 traced or stopped
  • Z 僵死 zombie

常见选项:

  • -A 显示所有进程(等价于-e)
  • -f 全部列出,通常和其他选项联用。
  • aux 显示所有包含其他使用者的行程(最详细)
USER           PID %CPU %MEM  VSZ      RSS   TTY   STAT  START   TIME    COMMAND
进程的所有者               虚拟内存  占用的  所在  进程  启动    实际使
                                                        使用量   固定内  终端  状态  时间    用CPU
                                                    (单位是KB)  存量                       的时间
root           1  0.1  1.6 173268     15496  ?      Ss   15:42   0:25    /sbin/init fixrtc spla
root           2  0.0  0.0      0     0      ?      S    15:42   0:00    [kthreadd]
root           3  0.0  0.0      0     0      ?      I<   15:42   0:00    [rcu_gp]

top

  • -u<用户名> 指定用户名
  • -p<进程号> 指定进程
  • -n<次数> 循环显示的次数
  • -b 批处理模式(用于脚本中,顺序输出,不再刷新页面)


    1.png
    第1行:系统时间、运行时间、登录终端数、系统负载(系统负载,即任务队列的平均长度, 三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
    第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
    第三行
    us
    用户空间占用CPU的百分比
    sy
    内核空间占用CPU的百分比。
    ni
    改变过优先级的进程占用CPU的百分比
    id
    空闲CPU百分比
    wa
    IO等待占用CPU的百分比
    hi
    硬中断(Hardware IRQ)占用CPU的百分比
    si
    软中断(Software Interrupts)占用CPU的百分比
    白栏

  • 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 — 进程名称(命令名/命令行)


    交互命令
    k:终止一个进程;
    i:忽略闲置和僵死进程,这是一个开关式命令;
    q:退出程序
    S:切换到累计模式;
    s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;

l:切换显示平均负载和启动时间信息;(打开或者关闭第一行)
m:切换显示内存信息;(切换第4、5行内存和swap大小显示方式)
t:切换显示进程和CPU状态信息;(切换第3行CPU%显示方式)
c:切换显示命令名称和完整命令行;

M:根据驻留内存大小进行排序;
P:根据CPU使用百分比大小进行排序;
T:根据时间/累计时间进行排序;
w:将当前设置写入~/.toprc文件中。

free

显示系统内存使用情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。

  • -s<间隔秒数> 持续显示内存
  • -h 人性化显示

uptime

  查看系统负载<br />   ![image.png](https://cdn.nlark.com/yuque/0/2020/png/2350166/1598406139604-bff5f2d1-0b6f-42b6-99d1-9a344fda33aa.png#height=24&id=WfFhY&margin=%5Bobject%20Object%5D&name=image.png&originHeight=24&originWidth=234&originalType=binary&size=3376&status=done&style=none&width=234)<br />        三个数值分别表示一分钟、五分钟、十五分钟内系统的平均负载,即平均任务数。<br /> 

systemctl

将 service 和 chkconfig 这两个命令组合到一起,调用中/etc/init.d/的脚本
8i
常用命令

  • start:立刻启动后面接的 unit。
  • stop:立刻关闭后面接的 unit。
  • restart:立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思。
  • reload:不关闭 unit 的情况下,重新载入配置文件,让设置生效。
  • enable:设置下次开机时,后面接的 unit 会被启动。
  • disable:设置下次开机时,后面接的 unit 不会被启动。
  • status:目前后面接的这个 unit 的状态,会列出有没有正在执行、开机时是否启动等信息。
  • is-active:目前有没有正在运行中。
  • is-enable:开机时有没有默认要启用这个 unit。
  • kill :不要被 kill 这个名字吓着了,它其实是向运行 unit 的进程发送信号。
  • show:列出 unit 的配置。
  • mask:注销 unit,注销后你就无法启动这个 unit 了。
  • unmask:取消对 unit 的注销。


    常用服务

  • network-manager

  • mysql
  • ufw
  • resolvconf
  • ssh
  • networking

文本处理

sort

将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

  • -r 降序
  • -u 去除重复行
  • -o 输出到文件,>不行

    sort -r number.txt -o number.txt

  • -n 按数字排序

  • -k 指定列数
  • -t 指定分割符

    sort -n -k 2 -t : facebook.txt

xargs

大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数

echo “hello world” | echo

不会输出,所以需要xargs将标准输入转为命令行参数。
单独使用xargs等同于xrags echo

uniq

-i :忽略大小写字符的不同;
-c :记录重复的行数
-u :只显示唯一的行

cut

-d :后面接分隔字符。与 -f 一起使用;
-f :依据 分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
-c :以字符 (characters) 的单位取出固定字符区间;
dfd

[root@www ~]# echo $PATH
/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games
# 1 | 2       | 3   | 4       | 5            | 6            | 7

#echo $PATH | cut -d ':' -f 5
/usr/local/bin
# 找出第三和第五个路径。
#echo $PATH | cut -d ':' -f 3,5
/sbin:/usr/local/bin
# 第一到第三个路径。
#echo $PATH | cut -d ':' -f 1-3
/bin:/usr/bin:/sbin:

wc

-l :仅列出行;
-w :仅列出多少字(英文单字);
-m :多少字符;

#wc /etc/passwd
40   45     1719   /etc/passwd
行数 单词数 字节数

tr

tr命令格式:tr [ -d ] [ -c ] [ -s ] [ 字符串1 ] [ 字符串2 ] 文件名。其中字符串1用于查询,字符串2用于处理各种转换。
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
字符串1和字符串2内容只能使用单字符、字符串范围或列表。比如字符串范围[a-z]表示小写字母、[0-9]表示数字。

echo "Hello World" | tr '[a-z]' '[A-Z]' #小写转大写
echo "Hellooo    Javaaa" | tr -s "[ ao]" #输出Hello Java

网络命令

ifconfig

  查看和配置 Linux 系统的网络接口。<br />      启动或停止某个接口:ifconfig eth0 up 和 ifconfig eth0 down  

ping

-c 计数结束
ICMP传输协议

netstat

  • -a 列出所有的socket(默认只列出ESTABLISHED)
  • -l 列出LISTEN状态的的socket
  • -n 直接使用IP地址,不使用域名服务器
  • -t 只列出tcp协议sokcet
  • -u 只列出udp协议socket
  • -p 显示正在使用Socket的程序识别码和程序名称。(需要权限才能正常显示)


    查看系统都开启了哪些端口?
    netstat -antp
    image.png

nslookup(查dns)

查dns
image.png

image.png
(10.146.157.1是公司电脑的DNS)
也可以使用/etc/resolv.conf文件查看

route

-n 显示数字形式的ip地址

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.10    0.0.0.0         UG    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
Destination 目标网段或者主机
Gateway 网关地址,”*” 表示目标是本主机所属的网络,不需要路由
Genmask 网络掩码
Flags 标记。一些可能的标记如下:
U — 路由是活动的
H — 目标是一个主机
G — 路由指向网关
R — 恢复动态路由产生的表项
D — 由路由的后台程序动态地安装
M — 由路由的后台程序修改
! — 拒绝路由
Metric 路由距离,到达指定网络所需的中转数(linux 内核中没有使用)
Ref 路由项引用次数(linux 内核中没有使用)
Use 此路由项被路由软件查找的次数
Iface 该路由表项对应的输出接口

命令

route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]

其中:

  • add : 添加一条路由规则
  • del : 删除一条路由规则
  • -net : 目的地址是一个网络
  • -host : 目的地址是一个主机
  • target : 目的网络或主机
  • netmask : 目的地址的网络掩码
  • gw : 路由数据包通过的网关
  • dev : 为路由指定的网络接口

示例

添加到主机的路由
# route add -host 192.168.1.2 dev eth0 
# route add -host 10.20.30.148 gw 10.20.30.40     #添加到10.20.30.148的网管

添加到网络的路由
# route add -net 10.20.30.40 netmask 255.255.255.248 eth0   #添加10.20.30.40的网络
# route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41 #添加10.20.30.48的网络
# route add -net 192.168.1.0/24 eth1

添加默认路由
# route add default gw 192.168.1.1

删除路由
# route del -host 192.168.1.2 dev eth0:0
# route del -host 10.20.30.148 gw 10.20.30.40
# route del -net 10.20.30.40 netmask 255.255.255.248 eth0
# route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
# route del -net 192.168.1.0/24 eth1
# route del default gw 192.168.1.1

traceroute

路由跟踪实用程序,用于确定 IP 数据报访问目标所经过的路径。

通过最多 30 个跃点跟踪
到 www.a.shifen.com [180.101.49.12] 的路由:

  1     1 ms     1 ms     1 ms  10.147.127.254
  2     3 ms     3 ms     2 ms  10.146.254.254
  3     5 ms     3 ms     2 ms  10.146.253.11
  4     5 ms     4 ms     4 ms  221.224.140.185
  5     7 ms     5 ms     5 ms  221.224.104.73
  6     *        *        *     请求超时。
  7     9 ms     7 ms     8 ms  58.211.25.9
  8     *        *        *     请求超时。
  9    10 ms     *        *     58.213.95.122
 10    11 ms     9 ms     9 ms  58.213.96.54
 11    12 ms    33 ms    11 ms  10.166.50.0
 12    32 ms    13 ms    14 ms  10.166.96.32
 13     *        *       12 ms  10.165.0.1
 14    10 ms    10 ms     8 ms  180.101.49.12

跟踪完成。

序列号从 1 开始,每个纪录就是一跳 ,每跳表示一个网关,每行有三个时间,单位是 ms,探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;
traceroute 一台主机有时会看到一些行以星号表示,出现这样的情况,可能是防火墙封掉了 ICMP 的返回信息,所以得不到什么相关的数据包返回数据。

原理:
traceroute 送出一个 TTL 是 1 的 IP datagram 到目的地(其实,每次送出的为 3 个 40 字节的包,包括源地址,目的地址和包发出的时间标签),当路径上的第一个路由器 (router) 收到这个 datagram 时,它将 TTL 减 1。此时,TTL 变为 0 了,所以该路由器会将此 datagram 丢掉,并送回一个「ICMP time exceeded」消息(包括发 IP 包的源地址,IP 包的所有内容及路由器的 IP 地址),traceroute 收到这个消息后,便知道这个路由器存在于这个路径上
接着 traceroute 再送出另一个 TTL 是 2 的 datagram,发现第 2 个路由器

telnet

  开启终端机阶段作业,并登入远端主机。默认端口 23,可用于测试端口是否打开。
telnet 192.168.1.2 8080

wget

curl

-X参数指定 HTTP 请求的方法。

curl -X POST https://www.example.com

-d 参数用于发送 POST 请求的数据体。

curl -d'login=emma&password=123'-X POST https://google.com/login

HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded

-H参数添加 HTTP 请求的标头。

curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://google.com/login

-o参数将服务器的回应保存成文件,等同于wget命令。

curl -o example.html https://www.example.com

-x参数指定 HTTP 请求的代理。

curl -x socks5://james:cats@myproxy.com:8080 https://www.example.com

-L参数会让 HTTP 请求跟随服务器的重定向。curl 默认不跟随重定向。

$ curl -L -d 'tweet=hi' https://api.twitter.com/tweet

iptables

功能

  • 网络地址转换(Network Address Translate)
  • 数据包内容修改
  • 以及数据包过滤的防火墙功能


    查看防火墙策略
    iptables -nL

开放端口
iptables -A INPUT -p tcp —dport 80 -j ACCEP
iptables -A INPUT -s 172.25.254.218 -p tcp —dport 80 -j ACCEP

端口转发
80端口转发到8080端口
iptables -t nat -A PREROUTING -p tcp —dport 80 -j REDIRECT —to-port 8080
iptables -I INPUT -p tcp —dport 8080 -j ACCEPT

保存防火墙的规则
service iptables save

磁盘管理

df

  显示磁盘空间使用情况<br />      -h 以方便阅读的方式显示信息

权限管理

chmod

-R 处理指定目录以及其子目录下所有文件

chown

-R 处理指定目录及子目录