Linux基础命令

关于作者

周李杰,最后一批90后,现居湖北武汉

孤独患者,懒癌中期,无脑幻想者。但却人畜无害,无需远离。

兴趣众多,然无一精通。正努力成为一个有趣的人。

1
2
> print("👆以上是不完整的我") //请我吃大餐将会了解更多
>

man 查询命令

man是一种查询帮助命令,当你不知道这么命令后的参数,可用man命令来查看。

例如下面我输出了”man ls” 查询ls-man的帮助文档(里面介绍了ls各种详细信息)。

1
2
3
4
5
6
7
8
9
10
11
[root@MR ~]# man ls
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...

-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..

echo 输出

echo 就是一个输出命令,可别小看这个输出命令,在后面脚本文件运用的可相当多。

例如下面我将输入echo的一些简单用法

1
2
3
4
5
6
[root@MR ~]# echo 123
123
[root@MR ~]# echo $SHELL
/bin/bash
[root@MR ~]# [ $USER = root ] && echo "Admin" || echo "User"
Admin #在此解析此含义:此时用户是不是root,如果是,则输出“Admin”,反之则输出“user”

date 显示时间

date为显示时间命令,单独输入显示如下

1
2
[root@MR ~]# date
2019年 03月 13日 星期三 02:18:20 CST

哇,怎么才13号凌晨两点钟,现在才是北京时间14号18点50分啊

那我们就来更改一下吧

1
2
[root@MR ~]# date -s "20190314 18:50:00"
2019年 03月 14日 星期四 18:50:00 CST

reboot 重启

用于重启系统,这个就在此不演示

poweroff 关机

关机命令,但我习惯使用“shutdown +0” ,后面加几就代表几分钟后面关机,加0就是立马关机,例如下面我设置100分钟后关机

1
2
3
4
5
6
[root@MR ~]# shutdown +100
Shutdown scheduled for 四 2019-03-14 20:46:02 CST, use 'shutdown -c' to cancel. #含义就是将在20点46分执行关机,如果你想取消请执行'shutdown -c'
[root@MR ~]# shutdown -c
Broadcast message from root@MR.ZLJ (Thu 2019-03-14 19:07:19 CST):
The system shutdown has been cancelled at Thu 2019-03-14 19:08:19 CST!
# 这里就提示了系统关闭已于2019-03-14星期四19:08:19 CST取消!

wget 下载

下载命令,后接下载地址,下面介绍一些常用的参数

1
2
3
4
5
6
[root@MR ~]# wget http://mirrors.aliyun.com/repo/Centos-6.repo
# 直接下载
[root@MR ~]# wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
# -O CentOS-Base.repo表示下载之后以CentOS-Base.repo来命名
[root@MR ~]# wget -r -p http://mirrors.aliyun.com
# -r -p递归下载网站里所有内容

ps 显示进程

含义:查看系统中进程状态

1
2
3
4
5
[root@MR ~]# ps
PID TTY TIME CMD
3492 pts/0 00:00:00 bash
3514 pts/0 00:00:00 ps
# 单独输出是这样

上面主要用于查看哪些东西在运行,然后我们不要的可以用Kill+PID来结束

ps有三个常用参数:

-a:显示所有进程(包括其他用户的进程)

-u:用户以及其他详细信息

-x:显示没有控制终端的进程

大多数情况,我们都是将-a、-u、-x连在一起使用:-aux

下面我们来敲打吧。。。。

1
2
3
4
5
6
7
[root@MR ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 49988 6412 ? Ss 15:01 0:01 /usr/lib/syste
root 2 0.0 0.0 0 0 ? S 15:01 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 15:01 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 15:01 0:00 [kworker/0:0H]
......................以下省略好多条........................

? 这么多,让我看到猴年马月吗?

然而并不是,其实ps是与后面管道符搭配使用,用来抓取与某一个指定服务进程相对应的PID号码。

USER:进程的所有者 TTY:所在终端
PID:进程ID号 STAT:进程状态
%CPU:运算器占用率 START:被启动的时间
%MEM:内存占用率 TIME:实际使用CPU的时间
VSZ:虚拟内存使用量(KB) COMMAND:命令名称与参数
RSS:占用的固定内存量(KB)

上面这些含义我们只需要混一个脸熟就可以了,下面这就就需要我们详细的记住了:

R(运行):进程正在运行或在运行队列中等待

S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态

D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断

Z(僵尸):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放

T(停止):进程收到停止信号后停止运行

top 动态显示进程

动态监视进程活动与系统负载,我们亲切地称之它为强化版的windows中的任务管理器,怎么个强化法,往下看吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@MR ~]# top
top - 20:30:05 up 5:28, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 407 total, 2 running, 405 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1870760 total, 313124 used, 1557636 free, 780 buffers
KiB Swap: 2097148 total, 0 used, 2097148 free. 100424 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 49988 6412 3716 S 0.0 0.3 0:01.62 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+
# 此时我这里就一个进程在启用,其余为0的都为停止或者等待为用户服务
# -20 所代表优先级最高

第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内负载情况,

第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数

第3行:用户占用资源百分比、系统内核占用资源百分比、正在占用的百分比、资源空闲百分比

第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量

第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量

pidof 后面接服务来查看PID

用于查询某个服务进程的PID,每个PID如同身份证一样是唯一的

1
2
[root@MR ~]# pidof top
3645

kill 终止PID

用于终止某个服务进程的PID

1
2
3
4
[root@MR ~]# kill 3685
[root@MR ~]# pidof top
[root@MR ~]#
#终止之后,我们在来查看,这里就看不到top正在运行了

killall终止服务所有PID

有些服务,它的进程PID值远远不止一个,怎样去结束他们呢,我们可用killall来终止这种服务,那么顾名思义,killall就是某个服务的全部进程

ifconfig 查看网卡配置

用于获取网卡配置与网络状态等信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@MR ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:b6:10:19 brd ff:ff:ff:ff:ff:ff
inet 192.168.233.132/24 brd 192.168.233.255 scope global dynamic eno16777736
valid_lft 1290sec preferred_lft 1290sec
inet6 fe80::20c:29ff:feb6:1019/64 scope link
valid_lft forever preferred_lft forever
# 由于我使用的是文本界面,是不带GUI的,所以只能使用"ip a"供大家查看,具体可以在图形化界面中输入"ifconfig"查看

uname 查看内核信息

用于查看内核与版本信息,常常在后面接 -a

1
2
3
4
[root@MR ~]# uname
Linux
[root@MR ~]# uname -a
Linux MR.ZLJ 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux

uptime 显示top的第一行

查看系统的内核负载信息

1
2
3
4
[root@MR ~]# uptime
21:22:18 up 6:20, 3 users, load average: 0.00, 0.01, 0.05
时间 运行了多久 开了几个终端 最近1分钟,5分钟,15分钟
#此命令相当于top命令的第一行

free 查看内存信息

显示当前系统中内存的使用量信息

1
2
3
4
5
[root@MR ~]# free
total used free shared buffers cached
Mem: 1870760 327300 1543460 8752 792 113392
-/+ buffers/cache: 213116 1657644
Swap: 2097148 0 2097148

天啊!这是啥,我怎么看不懂,这要一个个的数单位吗?

其实不用,下面我将会 用”-h” 人性化的角度来显示

1
2
3
4
5
6
[root@MR ~]# free -h
内存总量 已用量 可用量 进程共享的内存量 磁盘缓存的内存量 缓存的内存量
total used free shared buffers cached
Mem: 1.8G 319M 1.5G 8.5M 792K 110M
-/+ buffers/cache: 208M 1.6G
Swap: 2.0G 0B 2.0G

who 谁(此时为哪个用户)

用于查看当前登入主机的用户终端信息

1
2
3
4
[root@MR ~]# who
root tty1 2019-03-12 22:34
root pts/0 2019-03-14 19:44 (192.168.233.1)
# 我正在使用putty.exe 远程链接此系统

last 查看当前系统的登陆记录

用于查看所有系统的登录记录

1
2
3
4
5
6
7
[root@MR ~]# last
root pts/1 192.168.233.1 Thu Mar 14 21:03 - 21:03 (00:00)
root pts/1 192.168.233.1 Thu Mar 14 20:57 - 20:58 (00:00)
root pts/1 192.168.233.1 Thu Mar 14 20:55 - 20:57 (00:01)
......................以下省略好多条........................
wtmp begins Wed Mar 6 16:48:05 2019
#于2019年3月6日星期三16:48:05开始

history 查看历史命令

用于显示历史执行过的命令

1
2
3
4
5
6
7
[root@MR ~]# history
1 sudo useradd huangbichun
2 cd huangbichun
......................以下省略好多条........................
543 who
544 last
545 history

再次执行那一条命令可以用”!+数字 “

1
2
3
4
[root@MR ~]# !543
who
root tty1 2019-03-12 22:34
root pts/0 2019-03-14 19:44 (192.168.233.1)

清除历史命令可用”history -c”

1
2
3
[root@MR ~]# history -c
[root@MR ~]# history
1 history

sosreport 收集系统信息

用于收集系统配置及架构信息并输出诊断文档

pwd 显示当前所在目录

显示用户当前所处的工作目录

1
2
3
4
5
[root@MR ~]# pwd
/root
[root@MR ~]# cd /home
[root@MR home]# pwd
/home

cd 切换目录

用于切换工作路径

1
[root@MR ~]# cd /home

ls 列出当前目录下的文件

用于显示目录中的文件信息

-a :查看全部文件(包括隐藏文件)

-l:查看文件的属性、大小等详细信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@MR ~]# ls -a
. .bash_history
.. .bash_logout .cshrc .tcshrc
2019-03-09-测试 .bash_profile .viminfo
anaconda-ks.cfg .bashrc
[root@MR ~]# ls -l
总用量 24
drwxr-xr-x. 2 root root 6 3月 12 22:38 2019-03-09-测试
-rw-------. 1 root root 810 3月 6 16:33 anaconda-ks.cfg
[root@MR ~]# ls -al
总用量 68
dr-xr-x---. 5 root root 4096 3月 14 19:17 .
drwxr-xr-x. 17 root root 4096 3月 15 18:09 ..
drwxr-xr-x. 2 root root 6 3月 12 22:38 2019-03-09-测试
-rw-------. 1 root root 810 3月 6 16:33 anaconda-ks.cfg
-rw-------. 1 root root 7368 3月 14 22:16 .bash_history
-rw-r--r--. 1 root root 18 12月 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 12月 29 2013 .bash_profile
-rw-r--r--. 1 root root 224 3月 7 21:59 .bashrc
-rw-r--r--. 1 root root 100 12月 29 2013 .cshrc
-rw-r--r--. 1 root root 15 3月 7 21:44 passwod
-rw-r--r--. 1 root root 129 12月 29 2013 .tcshrc
-rw-------. 1 root root 5656 3月 11 17:44 .viminfo

cat 查看文本文件(适用于短文本)

查看纯文本文件 (适合内容较少)

1
2
3
4
5
[root@MR ~]# cat CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
......................以下省略好多条........................

天啊!这么多,我只想要中间的一行,怎么办,没事,Linux中每一个命令都有参数,那么我们接下来看吧。

1
2
3
4
5
6
7
[root@MR ~]# cat -n CentOS-Base.repo
1 # CentOS-Base.repo
2 #
3 # The mirror system uses the connecting IP address of the client and the
......................以下省略好多条........................
61 enabled=0
62 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6

这样我们就可以清晰的看到有多少行数据了

more 查看文本文件(适用于长文本)

以百分比、翻页形式查看

1
2
3
4
5
[root@MR ~]# more CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
--More--(32%)

如果我们不想看,可以按下字母q退出,或者按ctrl+c

head 查看一定行数

默认下显示前十行,我们也可以输入-n 【输入一个数字】来查看你想要看到的前多少行

1
2
3
4
5
6
7
[root@MR ~]# head CentOS-Base.repo
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
......................以下省略7条........................
[root@MR ~]# head -n 1 CentOS-Base.repo
# CentOS-Base.repo

tail 查看一定行数

默认下只显示后十行,我们也可以输入-n 【输入一个数字】来查看你想要看到的后多少行

1
2
3
4
5
6
7
[root@MR ~]# tail CentOS-Base.repo
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
......................以下省略7条........................
[root@MR ~]# tail -n 1 CentOS-Base.repo
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-6

tr 替换文本文件中的字符

用于替换文本文件文件中的字符

1
2
3
4
[root@MR ~]# cat 1
a b c d
[root@MR ~]# cat 1 | tr [a-d] [A-D]
A B C D

wc 用于统计文本文件的行数、字数、字节数

用于统计指定文本的行数、字数、字节数

-l 只显示行数

-w 只显示单词数

-c 只显示字节数

1
2
3
4
5
6
7
8
9
10
#例如我现在来统计刚才这个1文本
[root@MR ~]# wc -l 1
1 1
#1这个文本只有一行
[root@MR ~]# wc -w 1
4 1
#1这个文本只有4个单词
[root@MR ~]# wc -c 1
9 1
#1这个文本只有9个字节

stat 查看文件的时间

用于查看文件的具体储存信息和时间等信息

1
2
3
4
5
6
7
8
9
10
[root@MR ~]# stat 1
文件:"1"
大小:9 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:68107948 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2019-03-16 18:12:24.024958722 +0800
最近更改:2019-03-16 18:12:24.024958722 +0800
最近改动:2019-03-16 18:12:24.025958722 +0800
创建时间:-

cut 按列来提取文本字符

以一列两列来提取文本里面的信息

-d 后接某一字节符号来设置间隔

-f 后接数字来提取多少列

1
2
3
4
5
6
7
8
9
[root@MR ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
......................以下省略........................

diff 用于对比文本文件的差异

用于对比文件的差异

1
2
3
4
5
6
[root@MR 12]# ls
a A
[root@MR 12]# cat a
a b c d
[root@MR 12]# cat A
A B C D
1
2
3
4
5
6
7
8
9
10
11
[root@MR 12]# diff --brief a A
文件 a 和 A 不同

[root@MR 12]# diff -c a A
*** a 2019-03-16 18:24:24.139918637 +0800
--- A 2019-03-16 18:24:38.922917814 +0800
***************
*** 1 ****
! a b c d
--- 1 ----
! A B C D

touch 创建文本文件

用于创建文本文件,并且可以结合date创建以时间开头的文本文件

-a 只修改读取时间

-m 只修改修改时间

-d 同时修改读取时间又修改修改时间

1
2
3
[root@MR 12]# touch 5
[root@MR 12]# ls -l 5
-rw-r--r--. 1 root root 0 3月 16 18:29 5
1
2
3
4
5
6
7
8
9
[root@MR 12]# echo “132ewfwefwef” >> 5
[root@MR 12]# cat 5
“132ewfwefwef”
[root@MR 12]# ls -l 5
-rw-r--r--. 1 root root 19 3月 16 18:32 5
[root@MR 12]# touch -d "18:29" 5
[root@MR 12]# ls -l
总用量 4
-rw-r--r--. 1 root root 19 3月 16 18:29 5

mkdir 创建文件夹

用于创建空白的目录

-p 一次性创建多个目录

1
2
3
[root@MR 12]# mkdir 10
[root@MR 12]# ls
10 5
1
2
3
4
5
6
7
8
9
10
[root@MR 10]# mkdir -p a/{b,c/{d,e}}
[root@MR 10]# tree
.
└── a
├── b
└── c
├── d
└── e

5 directories, 0 files

cp 复制

复制命令 可以复制文件,也可以复制目录

-p 保留原始文件的属性

-d 若对象为“链接文件”,则保留该“链接文件”的属性

-r 递归持续复制(用于目录)

-i 若目标文件存在则询问是否覆盖

-a 相当于-pdr(p、d、r为上述参数)

1
2
3
[root@MR 10]# cp 1 2
[root@MR 10]# ls
1 2 a

mv 剪切(移动)

剪切文件或者移动文件或者将文件重命名

1
2
3
[root@MR 10]# mv 1 3
[root@MR 10]# ls
2 3 a

rm 删除

用于删除文件的命令,这个命令就不用我过多介绍吧

-r 删除目录

-f 强制删除

dd 类似于提取

按照指定大小和个数的数据块来复制文件或转换文件

if 输入的文件名称

of 输出的文件名称

bs 设置每个‘块’大小

count 设置要复制‘块’的个数

1
2
3
4
[root@MR ~]# dd if=/dev/sda of=111_file count=1 bs=125M
记录了1+0 的读入
记录了1+0 的写出
131072000字节(131 MB)已复制,3.35874 秒,39.0 MB/秒

file 查看文件类型

用于查看文件的类型

1
2
3
4
[root@MR ~]# file /home
/home: directory
[root@MR ~]# file 1
1: ASCII text

tar 压缩(解压)

-c 创建压缩文件

-x 解开压缩文件

-z 用Gzip压缩或解压

-v 显示压缩或解压的过程

-f 目标文件名

-C 指定解压到的目录

1
2
3
4
5
6
7
8
9
10
11
12
压缩:
[root@MR 12]# tar -czvf 10.tar.gz 10
10/
10/a/
10/a/b/
10/a/c/
10/a/c/d/
10/a/c/e/
10/2
10/3
[root@MR 12]# ls
10 10.tar.gz 5
1
2
3
4
5
6
7
8
9
10
11
12
解压至/home目录:
[root@MR 12]# tar xzvf 10.tar.gz -C /home
10/
10/a/
10/a/b/
10/a/c/
10/a/c/d/
10/a/c/e/
10/2
10/3
[root@MR 12]# ls /home
10 zhou

grep 在文本文件中执行关键词搜索

-d 将可执行文件(binary)当作文本文件(text)来搜索

-c 仅显示找到的行数

-i 忽略大小写

-n 显示行号

-v 反向选择—仅列出没有“关键词”的行

1
2
3
4
5
[root@MR 12]# grep /sbin/nologin /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
......................以下省略........................

find 按照指定的条件来查找文件

-name 匹配名称
-perm 匹配权限(mode为完全匹配,-mode为包含即可)
-user 匹配所有者
-group 匹配所有组
-mtime -n +n 匹配修改内容的时间(-n指n天以内,+n指n天以前)
-atime -n +n 匹配访问文件的时间(-n指n天以内,+n指n天以前)
-ctime -n +n 匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
-nouser 匹配无所有者的文件
-nogroup 匹配无所有组的文件
-newer f1 !f2 ent–> 匹配比文件f1新但比f2旧的文件
–type b/d/c/p/l/f 匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
-size 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)
-prune 忽略某个目录
-exec …… {}; 后面可跟用于进一步处理搜索结果的命令(下文会有演示)
1
2
3
4
5
6
7
8
[root@MR 12]# find /etc -name "host*" -print
/etc/host.conf
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/avahi/hosts
/etc/selinux/targeted/modules/active/modules/hostname.pp
/etc/hostname
1
2
3
4
5
6
7
8
9
[root@MR 12]# find / -perm -4000 -print
/usr/bin/mount
/usr/bin/chage
/usr/bin/gpasswd
/usr/bin/newgrp
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/su
......................以下省略........................
打赏
  • © 2019-2020 Li Jie
  • Powered by Hexo Theme Ayer
    • PV:
    • UV:

喜欢就打赏吧~

支付宝
微信