一、常见关机&重启命令
shutdown -h now [立刻关机]
shutdown -h 1 [1 分钟后,关机]
shutdown -r now [立刻重启]
shutdown -r 2 [2 分钟后,重启]
reboot [立刻重启]
halt [立刻关机]
不管是重启系统还是关闭系统,通常先要要运行 sync 命令,把内存中的数据写到磁盘中
sync [把内存的数据,写入磁盘]
二 、用户和用户组
Linux 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
1.用户管理
useradd 用户名 [当创建用户成功后,会自动的创建和用户同名的家目录]
useradd -d 家目录路径 用户名 [创建用户时指定家目录]
passwd 用户名 [如果没有带用户名,则是给当前登录的用户修改密码]
userdel 用户名 [删除用户保留家目录]
userdel –r 用户名 [删除用户和用户的家目录 危险操作,得注意]
su - 用户名 [切换用户,默认进入该用户的家目录]
id 用户名 [查询用户信息]
2.用户组
类似于角色,系统可以对有共性的多个用户进行统一的管理。
groupadd 组名 [新增组]
useradd –g 用户组 用户名 [增加一个用户 , 直接将他指定到组]
groupdel 组名 [删除组,前提是这个组没有用户,才能删除]
usermod –g 新的组名 用户名 [修改用户的组]
3. 用户和组的相关文件
(1)/etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录
(2)/etc/shadow 文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留
(3)/etc/group 文件
组(group)的配置文件,记录 Linux 包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
三、运行级别
运行级别说明:
0 :关机
1 :单用户 [类似安全模式, 这个模式可以帮助找回 root 密码]
2:多用户状态没有网络服务
3:多用户状态有网络服务 [使用最多]
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是 3 和 5 ,要修改默认的运行级别可改文件
如果指定运行级别
/etc/inittab 的
id:5:initdefault:这一行中的数字
也可以通过 init 来切换不同的运行级别
init [012356]
假设我们的 root 密码忘记了,请问如何找回密码
启动时->快速输入 enter->输入 e-> 进入到编辑界面-> 选择中间有 kernel 项->
输入 e(edit)-> 在该行的最后写入 1 [表示修改内核,临时生效]-> 输入 enter->
输入 b [boot]-> 进入到单用户模式 【这里就可以做补救工作】
四、帮助指令
main [命令或配置文件] (功能描述:获得帮助信息)
help [命令] (功能描述:获得 shell 内置命令的帮助信息)
五、文件和目录相关的指令
pwd (功能描述:显示当前工作目录的绝对路径)
ls [选项] [目录或是文件] (显示目录的文件)
常用选项
-a :显示当前目录所有的文件和目录,包括隐藏的 (文件名以.开头就是隐藏)。
-l :以列表的方式显示信息
-h : 显示文件大小时,以 k , m, G 单位显示
cd [参数] (功能描述:切换到指定目录)
mkdir [选项] 要创建的目录 (功能描述:创建目录 )
常用选项
-p :创建多级目录
rmdir [选项] 要删除的空目录
常用选项
-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
rm -rf 要删除的目录 (删除非空目录)
r: 表示递归删除,就是将该目录下的文件和子目录全部删除
f: 表示强制删除,就是不需询问
touch 文件名称 (创建空文件, 如果文件存在,则表示刷新该文件的修改时间)
cp [选项] source(源) dest(目的文件) (拷贝文件到指定目录)
常用选项
-r :递归复制整个文件夹
强制覆盖不提示的方法:\cp
mv 移动文件与目录或重命名
cat [选项] 要查看的文件
常用选项
-n :显示行号
more 要查看的文件 (它以全屏幕的方式按页显示文本文件的内容)
常用操作
空格键 代表向下翻一页
Enter 代表向下翻一行
q 代表立刻离开 more ,不再显示该文件内容
CtrlF 向下滚动一屏
CtrlB 返回上一屏
等号 输出当前行的行号
:f 输出文件名和当前行的行号
less 要查看的文件 (用来分屏查看文件内容)
常用操作
空格键 代表向下翻一页
PageDown 代表向下翻一页
PageUp 代表向上翻一页
CtrlF 向下滚动一屏
CtrlB 返回上一屏
q 离开less
echo [选项] [输出内容]
常用选项
-n : 表示输出之后不换行
-e : 表示对于[转义字符]按对应的方式进行处理。
查看系统的所有环境变量
env
查看[PATH]环境变量
echo $PATH
head [选项] [选项] 文件 (功能描述:默认查看文件头 10 行内容)
head -n 5 文件 (功能描述:查看文件头 5 行内容,5 可以是任意行数)
tail [参数] [文件] (用于输出文件中尾部的内容,默认情况下,显示文件的后 10 行内容)
常用操作
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
输出重定向和 >> 追加
ls -l >文件 (功能描述:列表的内容写入文件 a.txt 中(覆盖写))
ls -al >>文件 (功能描述:列表的内容追加到文件 aa.txt 的末尾)
cat 文件 1 > 文件 2 (功能描述:将文件 1 的内容覆盖到文件 2)
echo "内容" >> 文件 (功能描述:将"内容" 追加到文件 aa.txt 的末尾)
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
history [选项] [参数](功能描述:查看已经执行过历史命令)
n 显示最近的n条记录(参数)
-a 将历史命令缓冲区中命令写入历史命令文件中
-c 将目前的shell中的所有 history 内容全部消除 实际为假删除
-r 将历史命令文件中的命令读入当前历史命令缓冲区
-w 将当前历史命令缓冲区命令写入历史命令文件中
-d 删除历史记录中指定的行
执行历史编号为 5 的指令 !5
六、时间日期类
七、搜索查找类
find [搜索范围] [选项]
-name <文件名>, 按照指定的文件名查找文件,可以使用通配符*?
-user <用户名>, 查找属于指定用户名的所有文件
-size<文件大小>, 按照指定的大小查找文件((+n 大于 -n 小于 n 等于)
locate [文件名] (快速定位文件路径)
由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库
grep 过滤查找 , 管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
grep [选项] 查找内容 源文件
-n 显示匹配行及行号
-i 忽略大小写
八、压缩解压类
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz 文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
zip [选项] XXX.zip 需要压缩的内容(功能描述:压缩文件和目录的命令)
unzip [选项] XXX.zip (功能描述:解压缩文件)
zip 常用选项
-r:递归压缩,即压缩目录
unzip 的常用选项
-d<目录> :指定解压后文件的存放目录
tar [选项] XXX.tar.gz 打包的内容/目录 (功能描述:打包目录,压缩后的文件格式.tar.gz)
常用选项
-c 生成.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包.tar打包文件
九、组管理和权限管理
1. 组介绍
- 修改文件所有者 chown
chown newowner file 改变文件的所有者
chown newowner:newgroup file 改变用户的所有者和所有组
chown -R root:root 123.txt
- 修改文件所在组 chgrp
chgrp newgroup file 改变文件的所有组
2. 文件权限
-
权限的基本介绍
image.png - 修改权限
第一种方式:+ 、-、= 变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
2.1 chmod u=rwx,g=rx,o=x 文件、目录 【表示:给所有者rwx, 给所在组的用户 rx, 给其他人 x】
2.2 chmod o+w 文件、目录 【表示:给其它用户增加w 的权限】
2.3 chmod a-x 文件、目录 【表示:给所有用户 去掉 x权限】
第二种方式:通过数字变更权限
r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件、目录
相当于 chmod 751 文件、目录
十、定时任务调度
1. 概述
- 任务调度:是指系统在某个时间执行的特定的命令或程序。
- 任务调度分类:
2.1 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
2.2 个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。
2 基本语法
- 语法
crontab [选项] - 选项
-e:编辑 crontab 定时任务
-l:查询 crontab 定时任务
-r:删除 crontab 定时任务 - 快速入门
设置任务调度文件:/etc/crontab 设置个人任务调度。执行 crontab –e 命令。 接着输入任务到调度文件
每小时的每分钟执行 ls –l /etc/ > /tmp/to.txt 命令
*/1 * * * * ls –l /etc/ > /tmp/to.txt
-
参数细节说明
image.png
image.png
image.png
十一、Linux 磁盘分区、挂载
1. 原理介绍
Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一分。
Linux 采用了一种叫“载入(mount)”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
2. 硬盘说明
- Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘
- 对于 IDE 硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指 IDE 硬盘了。“x”为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),“~”代表分区,前四个分区用数字 1 到 4 表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。例,hda3 表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
- 对于 SCSI 硬盘则标识为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE 硬盘的表示方法一样。sdb1 [表示第 2 块 scsi 硬盘的第 1 个分区]
3. 查看所有设备(光驱 /media,u 盘, 硬盘)挂载情况
-
命令 :lsblk 或者 lsblk -f
image.png -
挂载的经典案例 : 增加一块1G硬盘
2.1 在vm设置中增加一块硬盘 1G, 重启一下服务器
image.png
2.2 给 sdb 硬盘分区
image.png
2.3 格式化 sdb1
mdfs -t ext4 /dev/sdb1 [把 /dev/sdb1 分区格式化]
2.4 挂载
mkdir /home/newdisk
mount /dev/sdb1 /home/newdisk [说明;挂载时,不要在 /home/newdisk 目录下]
2.5 上面的方式,只是临时生效,当你重启系统,挂载的关系没有, 配置 linux 的分区表,实现启动时,自动挂载
vim /etc/fstab
2.6 重启后,会自动挂载.
2.7 卸载
指令:umount 设备名 | 挂载路径
umount /dev/sdb1
4. 磁盘情况查询
- 查询系统整体磁盘使用情况
1.1 基本语法:df -h - 查询指定目录的磁盘占用情况
2.1 基本语法:du -h /目录
查询指定目录的磁盘占用情况,默认为当前目录
-s:指定目录占用大小汇总
-h:带计量单位
-a:含文件
--max-depth=1 子目录深度为1
-c:列出明细的同时,增加汇总值
2.2 查询 /usr 目录的磁盘占用情况,深度为 1
du -ach --max-depth= 1 /usr
- 磁盘情况-工作实用指令
# 统计/home 文件夹下文件的个数
ls –l /home/ | grep “^-” | wc -l
# 统计/home 文件夹下目录的个数
ls –l /home/ | grep “^d” | wc -l
# 统计/home 文件夹下文件的个数,包括子文件夹里的
ls –lR /home/ | grep “^-” | wc -l
# 统计/home 文件夹下目录的个数,包括子文件夹里的
ls –lR /home/ | grep “^d” | wc -l
# 以树状显示 home 目录结构
tree /home/
# 没有 tree 指令,x先 使用 yum 来安装
yum install tree
十二、 linux 的网络配置
1.配置固定的 ip 地址
1.修改配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0
- reboot //重启
- service network restart // 重启网络服务
2. 修改主机名
- 查看当前主机名
hostname
- 修改linux的主机映射文件
vim /etc/sysconfig/network
文件中内容
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME= hadoop //写入新的主机名
注意:主机名称不要有“_”下划线
- 修改 /etc/hosts 增加ip和主机的映射
vim /etc/hosts
#在hosts文件中加入
192.168.102.130 test
- 并重启设备,生效
十三、进程管理
1. 显示系统执行的进程 ps
- 指令:ps –aux //显示所有的进程
ps -aux | grep sshd //查看 sshd 进程
指令说明
System V 展示风格
USER:用户名称
PID:进程号
%CPU:进程占用 CPU 的百分比
%MEM:进程占用物理内存的百分比
VSZ:进程占用的虚拟内存大小(单位:KB)
RSS:进程占用的物理内存大小(单位:KB)
TTY:终端名称,缩写 .
STAT:进程状态,其中 S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级
更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
STARTED:进程的启动时间
TIME:CPU 时间,即进程使用 CPU 的总时间
COMMAND:启动进程所用的命令和参数,如果过长会被截断显示 - 指令:ps -ef //以全格式显示当前所有的进程
-e 显示所有进程。-f 全格式。
ps -ef|grep xxx
是BSD风格
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU时间
CMD:启动进程所用的命令和参数
2. 终止进程kill和killall
- 基本语法:
kill [选项] 进程号(功能描述:通过进程号杀死进程 -9 强制终止)
killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用) - 常用选项:
-9 :表示强迫进程立即停止
3. 查看进程树 pstree
- 基本语法:
pstree [选项] 可以更加直观的来看进程信 - 常用选项:
-p :显示进程的 PID
-u :显示进程的所属用户
4. 服务(service)管理
- 介绍:
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程 - service 管理指令:
service 服务名 [start | stop | restart | reload | status]
在 CentOS7.0 后 不再使用 service ,而是 systemctl - 案例:
3.1查看当前防火墙的状况,关闭防火墙和重启防火墙
service iptables status
service iptables stop
service iptables start
这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。
如果希望设置某个服务自启动或关闭永久生效,要使用 chkconfig 指令
- chkconfig 指令
4.1 通过chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭
4.2 基本语法
chkconfig --list|grep xxx [查看服务]
chkconfig 服务名 --list [查看服务]
chkconfig --level 5 服务名 on/off [可以指定(5)某个服务,某各个运行级别,开启或关闭]
chkconfig 服务名 on/off [不管是哪个级别都开启或关闭]
4.3 应用实例
# 1: 请显示当前系统所有服务的各个运行级别的运行状态
chkconfig --list
# 2:请查看sshd服务的运行状态
chkconfig sshd –list 或者 chkconfig –list | grep sshd
# 3: 将sshd 服务在运行级别5下设置为不自动启动,看看有什么效果?
chkconfig –level 5 sshd off
# 4: 当运行级别为5时,关闭防火墙。
chkconfig –level 5 iptables off
# 5: 在所有运行级别下,关闭防火墙
chkconfig iptables off
# 6: 在所有运行级别下,开启防火墙
chkconfig iptables on
4.4 使用细节
chkconfig重新设置服务后自启动或关闭,重启机器就会按设置的状态运行
5.动态监控进程
-
top命令界面详解:
image.png
1.1 第一行:任务队列信息
- 系统当前时间:top - 09:15:52
- 系统运行时间:up 0 min
- 当前登录用户:1 user
- 负载均衡情况:load average: 1.78,0.49,0.17(average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。)
- 注意:load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
1.2 第二行:Tasks — 任务(进程)
- 总进程:95 total
- 运行进程:1 running
- 休眠进程:94 sleeping
- 停止进程:0 stopped
- 僵尸进程:0 zombie
第三行:cpu状态信息
- 0.3 us:用户空间占用CPU的百分比。
- 0.0 sy:内核空间占用CPU的百分比。
- 0.0 ni:改变过优先级的进程占用CPU的百分比
- 99.7 id:空闲CPU百分比
- 0.0 wa:IO等待占用CPU的百分比
- 0.0 hi:硬中断占用CPU的百分比
- 0.0 si:软中断占用CPU的百分比
- 0.0 st:当Linux系统是在虚拟机中运行时,等待CPU资源的时间占比
第四行:内存状态
- total:总内存量
- free:空闲内存
- used:已用内存
- buff/cache:缓存内存
第五行:swap交换分区信息
- total:总内存量
- free:空闲内存
- used:已用内存
- avail Mem:可用内存
第六行:各进程状态监控
- 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 — 进程名称(命令名/命令行)
- 基本语法:
top [选项]
常用命令参数为:
-c :显示整个命令行而不只是显示命令名
-d <时间> :设置间隔时间
-u <用户名> :指定用户名
-p <进程号> :指定进程
-n <次数> :循环显示的次数
-i :使top不显示任何闲置或者僵死进程 - top命令使用举例
# 每隔3秒显式所有进程的资源占用情况
top
# 每隔1秒显式所有进程的资源占用情况
top -d 1
# 每隔3秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -c
# 每隔3秒显示pid是12345和pid是6789的两个进程的资源占用情况
top -p 12345 -p 6789
# 每隔2秒显示pid是123456的进程的资源使用情况,并显式该进程启动的命令行参数
top -d 2 -c -p 123456
- top的交互命令
4.1 过滤用户 u:在top命令显示中,输入u,然后输入用户名,则可以查看相应的用户进程。如按u键,然后输入root,按回车则只显示root用户的进程
4.2 查看各个CPU的使用情况 1:在top命令下,输入1,可以看到各个CPU的使用情况
4.3 隐藏闲置或僵死的进程 i:在top命令下,输入i,可以隐藏闲置或僵死的进程,效果跟输入top -i 是一样的。
4.4 切换内存信息的单位 E/m:top命令默认以K为单位显示内存大小,这让人十分抓狂,我们可以通过大写字母E来切换内存信息区域的显示单位。小写字母m可以控制是否显示内存信息
4.5 切换进程列表中的内存显示单位 e:在进程列表中,内存的单位默认也是KB,我们可以通过小写字母e来切换单位
4.6 粗体显示排序的列 x:f键可以改变排序的列,但界面中看不出是以哪个列来排序的,可以通过小写字母x来粗体显示当前排序的列
4.7 快速切换排序的列:虽然可以通过f键来修改排序的列,但还有一些快速切换排序列的方式:比如大写字母M以%MEM列排序,大写字母N以PID列排序,大写字母P以%CPU列排序,大写字母T以TIME+列排序。大写字母R可以将当前的排序结果反转
4.8 显示完整的执行命令 c:默认COMMAND列只显示程序的名字,并不包含程序的路径,可以通过小写字母c来显示完整的执行命令(效果跟top -c相同)
4.9 终止指定的进程 k:输入“k”回车,再输入要结束的进程ID号 -
更改显示内容
5.1 通过按f键可以编辑显示内容,在top命令显示中,按f键后,会出现下图
image.png
5.2 根据图中描述可知:
- 当前是按照%CPU这一列来排序的
- 可以通过上、下键来导航
- 按右键可以选择整个列,然后按上、下键来移动整个列(调整列的显示位置,前移或后移),按回车确定
- 按空格键来显示/隐藏该列,带的是显示,不带的是不显示
- 按s键可以将当前列设置为排序列
- 按q键退出
6. 监控网络状态
查看系统网络情况
- 基本语法
netstat [选项] - 选项说明
-a 显示所有连线中的Socket。
-A 列出该网络类型连线中的相关地址。
-c 持续列出网络状态。
-C 显示路由器配置的快取信息。
-e 显示网络其他相关信息。
-F 显示路由缓存。
-g 显示多重广播功能群组组员名单。
-h 在线帮助。
-i 显示网络界面信息表单。
-l 显示监控中的服务器的Socket。
-M 显示伪装的网络连线。
-n 直接使用IP地址,而不通过域名服务器。
-N 显示网络硬件外围设备的符号连接名称。
-o 显示计时器。
-p 显示正在使用Socket的程序识别码和程序名称。
-r 显示Routing Table。
-s 显示网络工作信息统计表。
-t 显示TCP传输协议的连线状况。
-u 显示UDP传输协议的连线状况。
-v 显示指令执行过程。
-V 显示版本信息。
-w 显示RAW传输协议的连线状况。
-x 此参数的效果和指定"-A unix"参数相同。
--ip 此参数的效果和指定"-A inet"参数相同。 - 案例
# 查看服务名为 sshd 的服务的信息。
netstat -anp|grep sshd
#如果我们希望查看当前系统有哪些端口在监听
netstat -tlnp
#查看nginx监听的端口
netstat -ntulp|grep nginx