【Linux】常用基本命令(三)

一、磁盘查看和分区类

1. du查看文件和目录占用的磁盘空间

(1) 基本语法
du 目录/文件(显示目录下每个子目录的磁盘使用情况)
(2) 选项说明

选项功能
-h以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
-a不仅查看子目录大小,还要包括文件
-c显示所有的文件和子目录大小后,显示总和
-s只显示总和
–max-depth=n指定统计子目录的深度为第 n 层

(3) 案例实操

# 查看当前用户主目录占用的磁盘空间大小
du -sh

2. df查看磁盘空间使用情况

(1) 基本语法
df 选项 (列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况)
(2) 说明

选项功能
-h以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示

(3) 案例实操
查看磁盘使用情况

[root@hadoop101 ~]# df -h
Filesystem	Size Used Avail Use% Mounted on
/dev/sda2	15G 3.5G	11G 26% / tmpfs	939M 224K 939M	1% /dev/shm /dev/sda1	190M	39M 142M 22% /boot

有时我们会发现,使用 du 命令和 df 命令去统计分区的使用情况时,得到的数据是不一样的。那是因为df命令是从文件系统的角度考虑的,通过文件系统中未分配的空间来确定文件系统中已经分配的空间大小。也就是说,在使用 df 命令统计分区时,不仅要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)。
而du 命令是面向文件的,只会计算文件或目录占用的磁盘空间。也就是说,df 命令统计的分区更准确,是真正的空闲空间。

3. lsblk查看设备挂载情况

(1) 基本语法
lsblk [选项](查看设备挂载情况)
(2) 选项说明

选项功能
-f查看详细的设备挂载情况,显示文件系统信息

4. mount/umount挂载/卸载

对于Linux用户来讲,不论有几个分区,分别分给哪一个目录使用,它总归就是一个根目录、一个独立且唯一的文件结构。
Linux中每个分区都是用来组成整个文件系统的一部分,它在用一种叫做“挂载”的处理方法,它整个文件系统中包含了一整套的文件和目录,并将一个分区和一个目录联系起来, 要载入的那个分区将使它的存储空间在这个目录下获得。
挂载前准备必须要有光盘或者已经连接镜像文件

4.1 mount

(1) 基本语法
mount [-t vfstype] [-o options] device dir(挂载设备)
(2) 参数说明

  • -t vfstype——指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:

    • 光盘或光盘镜像:iso9660
    • DOS fat16 文件系统:msdos
    • Windows 9x fat32 文件系统:vfat
    • Windows NT ntfs 文件系统:ntfs
    • Mount Windows 文件网络共享:smbfs
    • UNIX(LINUX) 文件网络共享:nfs
  • -o options——主要用来描述设备或档案的挂接方式。常用的参数有:

    • loop:用来把一个文件当成硬盘分区挂接上系统
    • ro:采用只读方式挂接设备
    • rw:采用读写方式挂接设备
    • iocharset:指定访问文件系统所用字符集
  • device——要挂接(mount)的设备

  • dir——设备在系统上的挂接点(mount point)

参数说明
-t指定挂载类型
-l显示已加载的文件系统列表
-h显示帮助信息并退出
-V显示程序版本
-n加载没有写入文件“/etc/mtab”中的文件系统
-r将文件系统加载为只读模式
-a加载文件“/etc/fstab”中描述的所有文件系统

(3) 案例实操

# 查看当前系统中已有的文件系统信息
mount 
# 挂载/etc/fstab文件中所有已定义的设备文件
mount -a
# 将光盘设备挂载到指定目录
mount /dev/cdrom /media/cdrom
# 强制以xfs文件系统挂载硬盘设备到指定目录
mount -t xfs /dev/sdb /disk

4.2 umount

(1) 基本语法
umount 设备文件名或挂载点(卸载设备)
(2) 参数说明

参数说明
-a卸载/etc/mtab中记录的所有文件系统
-h显示帮助
-n卸载时不要将信息存入/etc/mtab文件中
-r尝试以只读的方式重新挂入文件系统
-t仅卸载选项中所指定的文件系统
-v执行时显示详细的信息
-V显示版本信息

(3) 案例实操

# 卸载指定的文件系统
umount /dev/sdb
# 卸载指定的文件系统并显示过程
umount -v /dev/cdrom

5. fdisk分区

(1) 基本语法
fdisk -l(查看磁盘分区详情)
fdisk 硬盘设备名 (对新增硬盘进行分区操作)
(2) 选项说明

选项功能
-l显示所有硬盘的分区列表
-b指定每个分区的大小
-s将指定的分区大小输出到标准输出上,单位为区块
-v显示版本信息

该命令必须在 root 用户下才能使用

(3) 功能说明

  • Linux 分区
    • Device:分区序列
    • Boot:引导
    • Start:从X磁柱开始
    • End:到Y磁柱结束
    • Blocks:容量
    • Id:分区类型ID
    • System:分区类型
  • 分区操作按键说明
    • m:显示命令列表
    • p:显示当前磁盘分区 n:新增分区
    • w:写入分区信息并退出
    • q:不保存分区信息直接退出
      (4) 案例实操
# 查看当前系统的分区情况
fdisk -l
# 管理指定硬盘的分区
fdisk /dev/sda

二、进程管理类

进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
进程管理主要有以下 3 个作用:

  • 判断服务器的健康状态
  • 查看系统中所有的进程
  • 杀死进程

1. ps查看当前系统进程状态

(1) 基本语法
ps aux | grep xxx (查看系统中所有进程)
ps -ef | grep xxx(可以查看子父进程之间的关系)
(2) 选项说明

选项功能
a列出带有终端的所有用户的进程
x列出当前用户的所有进程,包括没有终端的进程
u面向用户友好的显示风格
-e列出所有进程
-u列出某个用户关联的所有进程
-f显示完整格式的进程列表

(3) 功能说明

  • ps aux 显示信息说明
    • USER:该进程是由哪个用户产生的
    • PID:进程的 ID 号
    • %CPU:该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源; %MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源;
    • VSZ:该进程占用虚拟内存的大小,单位 KB;
    • RSS:该进程占用实际物理内存的大小,单位 KB;
    • TTY:该进程是在哪个终端中运行的。对于 CentOS 来说,tty1 是图形化终端, tty2-tty6 是本地的字符界面终端。pts/0-255 代表虚拟终端。
    • STAT:进程状态。常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示
    • START:该进程的启动时间
    • TIME:该进程占用 CPU 的运算时间,注意不是系统时间
    • COMMAND:产生此进程的命令名
  • ps -ef 显示信息说明
    • UID:用户 ID PID:进程 ID
    • PPID:父进程 ID
    • C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
    • STIME:进程启动的时间
    • TTY:完整的终端名称
    • TIME:CPU 时间
    • CMD:启动进程所用的命令和参数

如果想查看进程的 CPU 占用率和内存占用率,可以使用 aux;如果想查看进程的父进程 ID 可以使用 ef。

(4) 案例实操

# 显示系统中全部的进程信息,含详细信息
ps aux 
# 结合输出重定向,将当前进程信息保留备份至指定文件
ps aux > backup.txt
# 结合管道操作符,将当前系统运行状态中指定进程信息过滤出来
ps -ef | grep ssh
# 结合管道操作符,将当前系统运行状态中指定用户的进程信息过滤出来
ps -u root
# 结合管道操作符与sort命令,依据处理器使用量(第三列)情况降序排序
ps aux | sort -rnk 3
# 结合管道操作符与sort命令,依据内存使用量(第四列)情况降序排序
ps aux | sort -rnk 4
# 显示所有进程信息,连同命令行
ps -ef
# 显示指定用户信息
ps -u root 
# 显示 php 的进程
ps -ef | grep php
# 显示进程信息
ps -A 

2. kill终止进程

(1) 基本语法
kill [选项] 进程号 (通过进程号杀死进程)
killall 进程名称 (通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
(2) 选项说明

选项功能
-9表示强迫进程立即停止

(3) 案例实操

# 杀死浏览器进程
kill -9 5102
# 通过进程名称杀死进程
killall firefox

3. pstree查看进程树

(1) 基本语法
pstree [选项]
(2) 选项说明

选项功能
-p显示进程的 PID
-u显示进程的所属用户
-a显示启动每个进程对应的完整指令,包括启动进程的路径、参数等
-c不使用精简法显示进程信息,即显示的进程中包含子进程和父进程
-n根据进程 PID 号来排序输出,默认是以程序名排序输出的

在使用 pstree 命令时,如果不指定进程的 PID 号,也不指定用户名称,则会以 init进程为根进程,显示系统中所有程序和进程的信息;反之,若指定 PID 号或用户名,则将以 PID 或指定命令为根进程,显示 PID 或用户对应的所有程序和进程。

(3) 案例实操

# 显示进程 pid
pstree -p
# 显示进程所属用户
pstree -u

4. top实时监控系统进程状态

(1) 基本命令
top [选项]
(2) 说明

选项功能
-d秒数 指定 top 命令每隔几秒更新。默认是 3 秒在 top 命令的交互模式当中可以执行的命令:
-i使 top 不显示任何闲置或者僵死进程。
-p通过指定监控进程 ID 来仅仅监控某个进程的状态。
操作功能
P以 CPU 使用率排序,默认就是此项
M以内存的使用率排序
N以 PID 排序
q退出 top

(3) 查询结果字段解释
第一行信息为任务队列信息

内容说明
12:26:46系统当前时间
up 1 day, 13:32系统的运行时间,本机已经运行 1 天13 小时 32 分钟
2 users当前登录了两个用户
load average: 0.00, 0.00, 0.00系统在之前 1 分钟,5 分钟,15 分钟的平均负载。一般认为小于 1 时,负载较小。如果大于1,系统已经超出负荷。

第二行为进程信息

内容说明
Tasks: 95 total系统中的进程总数
1 running正在运行的进程数
94 sleeping睡眠的进程
0 stopped正在停止的进程
0 zombie僵尸进程。如果不是 0,需要手工检查僵尸进程

第三行为 CPU 信息

内容说明
Cpu(s): 0.1%us用户模式占用的 CPU 百分比
0.1%sy系统模式占用的 CPU 百分比
0.0%ni改变过优先级的用户进程占用的 CPU 百分比
99.7%id空闲 CPU 的 CPU 百分比
0.1%wa等待输入/输出的进程的占用 CPU 百分比
0.0%hi硬中断请求服务占用的 CPU 百分比
0.1%si软中断请求服务占用的 CPU 百分比

第四行为物理内存信息

内容说明
Mem: 625344k total物理内存的总量,单位 KB
571504k used已经使用的物理内存数量
53840k free空闲的物理内存数量,我们使用的是虚拟机,总共只分配了 628MB 内存,所以只有 53MB 的空闲内存了
65800k buffers作为缓冲的内存数量

第五行为交换分区(swap)信息

内容说明
Swap: 524280k total交换分区(虚拟内存)的总大小
0k used已经使用的交互分区的大小
524280k free空闲交换分区的大小
409280k cached作为缓存的交互分区的大小

(5) 案例实操

# 以默认格式显示系统运行信息
top
# 设定每隔5秒刷新一次信息
top -d 5
# 设定总显示次数为3回,随后自动退出命令
top -n 3

可以按 P、M、N 对查询出的进程结果进行排序。

5. netstat 显示网络状态和端口占用信息

(1) 基本语法
netstat -anp | grep 进程号(查看该进程网络信息)
netstat –nlp | grep 端口号(查看网络端口号占用情况)
(2)说明

选项功能
-a显示所有正在监听(listen)和未监听的套接字(socket)
-n拒绝显示别名,能显示数字的全部转化成数字
-l仅列出在监听的服务状态
-p表示显示哪个进程在调用

(3) 案例实操

# 通过进程号查看sshd进程的网络信息
netstat -anp | grep sshd
# 查看某端口号是否被占用
netstat -nltp | grep 22	

三、crontab 系统定时任务

1. crontab服务管理

# 重新启动 crond 服务
systemctl restart crond

实际工作中,系统的定时任务一般是需要重复执行的,这就需要使用 crontab 命令来执行循环定时任务。 每个用户都可以实现自己的crontab 定时任务,只需使用这个用户身份执行“crontab -e”命令即可。当然,这个用户不能写入 /etc/cron.deny文件。

2. crontab定时任务设置

(1) 基本语法
crontab [选项]
(2) 选项说明

选项功能
-e编辑 crontab 定时任务
-l查询 crontab 任务
-r删除当前用户所有的 crontab 任务
-u指定用户名字

(3) 参数说明

# 进入 crontab 编辑界面,会打开 vim 编辑你的工作
[root@hadoop101 ~]# crontab -e

* * * * * 执行的任务

项目含义范围
第一个“*”一小时当中的第几分钟0-59
第二个“*”一天当中的第几小时0-23
第三个“*”一个月当中的第几天1-31
第四个“*”一年当中的第几月1-12
第五个“*”一周当中的星期几0-7 ( 0 和 7 都代表星期日)

特殊符号

特殊符号含义
*代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。
代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的 8 点 0 分,12 点 0 分,16 点 0 分都执行一次命令
-代表连续的时间范围。比如“0 5 * * 1-6 命令”,代表在周一到周六的凌晨 5 点 0 分执行命令
*/n代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔 10 分钟就执行一遍命令

当“crontab -e”编辑完成之后,一旦保存退出,那么这个定时任务实际就会写入 /var/spool/cron/目录中,每个用户的定时任务用自己的用户名进行区分。而且 crontab 命令只要保存就会生效,只要 crond 服务是启动的。

特定时间执行命令

时间含义
45 22 * * * 命令每天 22 点 45 分执行命令
0 17 * * 1 命令每周 1 的 17 点 0 分执行命令
0 5 1,15 * * 命令每月 1 号和 15 号的凌晨 5 点 0 分执行命令
40 4 * * 1-5 命令每周一到周五的凌晨 4 点 40 分执行命令
*/10 4 * * * 命令每天的凌晨 4 点,每隔 10 分钟执行一次命令
0 0 1,15 * 1 命令每月 1 号和 15 号,每周 1 的 0 点 0 分都会执行命令。

注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。

(4) 案例实操

# 每隔 1 分钟,向/root/bailongma.txt 文件中添加一个 11 的数字
*/1 * * * * /bin/echo ”11” >> /root/bailongma.txt

书写 crontab 定时任务时,需要注意:

  • 6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
  • crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
  • 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。
  • 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径,有时使用相对路径的命令会报错。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值