简单命令
pwd
查看当前我们所在的目录路径
clear
清除屏幕
文件管理
cd
touch
两个功能:一是创建新的空文件,二是改变已有文件的时间戳属性。
批量创建文件:
[root@linuxcool ~]# touch file{1..5}.txt[root@linuxcool ~]# lsfile1.txt file2.txt file3.txt file4.txt file5.txt
mkdir
创建目录
- -p 递归创建多级目录
-m 建立目录的同时设置目录的权限
# 创建文件夹同时赋予权限mkdir -m 700 /usr/linuxcool/dir# 同时创建多个文件mkdir dir1 dir2 dir3# 递归创建mkdir -p linuxcool/dir
mv
移动文件或对其改名(移动时,若目标路径下有同名文件,则默认直接覆盖)
-i 若存在同名文件,则向用户询问是否覆盖
- -f 覆盖已有文件时,不进行任何提示
- -b 当文件存在时,覆盖前为其创建一个备份
-u 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作
ls
-a 显示隐藏文件
- -h 与-l 一起,以易于阅读的格式输出文件大小
- -l 显示详细信息
- -S 以文件大小排序(默认依英文字母次序)
- -t 根据最后的修改时间排序
-A 同 -a ,但不列出 “.” (当前目录) 及 “..” (父目录)
rm
-f 强制删除
- -d 删除空目录
-
cp
-i 提示
- -r 复制目录及目录内所有项目
- -a 复制的文件与原文件时间一样
find
find path -options (option必须在后)
- -name 按照文件名查找文件
- -user 按照文件属主来查找文件。
- -size 按大小查找
- -iname 忽略大小写
# 路径(/home/lz/)下查找testfind /home/lz/ --name test# 查看/etc目录下面大于1M的文件find /etc -size +1Mc: 表示字节数k: 表示 kilo bytes (1024字节)w: 字 (2字节)M:兆字节(1048576字节)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算法来压缩/解压。
# 将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。tar -rf all.tar *.gif#更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。tar -uf all.tar logo.gif# 列出all.tar包中所有文件,-t是列出文件的意思tar -tf all.tar
du
文件和目录磁盘使用的空间的查看
- -a 显示目录中所有文件大小
- -h 以易读方式显示文件大小
-s 仅显示总计
# 显示文件大小,并按照大小排序du -sh * | sort -hr
ln
ln [参数] [源文件或目录] [目标文件或目录]
-s 软链接
硬链接当成源文件的副本,他和源文件一样的大小,但是事实上却不占任何空间。1.硬链接以文件副本的形式存在,但不占用实际空间。
- 硬链接不允许给目录创建硬链接。
- 3.硬链接只有在同一个文件系统中才能创建。
符号链接可以理解为类似windows一样的快捷方式
- 符号链接以路径的形式存在,类似于Windows操作系统中的快捷方式。
- 符号链接可以跨文件系统 ,硬链接不可以。
- 符号链接可以对一个不存在的文件名进行链接,硬链接不可以。
- 符号链接可以对目录进行链接,硬链接不可以。
#硬链接ln t2 t1-rw-rw-r-- 2 ubuntu ubuntu 0 May 6 22:23 t1-rw-rw-r-- 2 ubuntu ubuntu 0 May 6 22:23 t2# 符号连接ln -s t1 t2-rw-rw-r-- 1 ubuntu ubuntu 0 May 6 22:23 t1lrwxrwxrwx 1 ubuntu ubuntu 2 May 6 22:25 t2 -> t1
- 符号链接可以对目录进行链接,硬链接不可以。
cat
-n 输出所有行号
more和less
less是more的升级版,除支持more全部命令集,还支持上下键翻页
- m 显示类似more命令的百分比
- -N 显示每行的行号
内部操作
- b 向后翻一页
- d 向后翻半页
- h 显示帮助界面
- q 退出less 命令
- u 向前滚动半页
- y 向前滚动一行
- 空格键 滚动一页
- 回车键 滚动一行
tail和head
head显示文件的开始几行,tail显示文件的最后几行。(默认10行)
-
进程管理
kill
1 (HUP):重新加载进程。
- 9 (KILL):杀死一个进程。
15 (TERM):正常停止一个进程。
例
查杀进程pro1kill -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行:系统时间、运行时间、登录终端数、系统负载(系统负载,即任务队列的平均长度, 三个数值分别为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 /> <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
netstat
- -a 列出所有的socket(默认只列出ESTABLISHED)
- -l 列出LISTEN状态的的socket
- -n 直接使用IP地址,不使用域名服务器
- -t 只列出tcp协议sokcet
- -u 只列出udp协议socket
-p 显示正在使用Socket的程序识别码和程序名称。(需要权限才能正常显示)
查看系统都开启了哪些端口?
netstat -antp
nslookup(查dns)
查dns

(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
chown
-R 处理指定目录及子目录
