用户管理
useradd 用户名
创建一个新用户
passwd 用户名
为用户指定一个密码
当创建用户成功后,会自动创建和用户名同名的家目录 /home/用户名
也可以通过 useradd -d 指定目录 用户名
给创建的新用户指定家目录
passwd
如果没带用户名,会给当前登录的用户修改密码
userdel 用户名
删除指定用户,但是会保留家目录
userdel -r 用户名
删除用户且删除用户家目录
id 用户名
查询用户信息
su - 用户名
切换到用户
exit
返回到原来的用户
su -
不带用户名默认切换到 root 用户
组管理
groupadd 组名
新增一个组
useradd -g 用户组 用户名
创建用户时指定加入组
groupdel 组名
删除指定组
删除的前提是这个组没有用户了,才能删除
usermod -g 新组 用户名
修改用户所在组
用户和组的相关文件
/etx/passwd
文件
用户的配置文件,记录用户的各种信息
每行的含义: 用户名:口令:用户标识号:组标识号:注释行描述:主目录:登录 Shell
/etc/shadow
文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:保留
etc/group
文件
组的配置文件,记录了系统包含的组的信息
每行的含义:组名:口令:组标识号:组内用户列表
运行级别
0
关机1
单用户【此模式可以帮助找 root 密码】2
多用户无网络3
多用户有网络4
系统未使用5
图形界面6
系统重启
常用运行级别是 3
和 5
,要修改默认运行级别可修改文件
修改 /etc/inittab
文件的 id:x:initdefault
这行中的 x
指定为数字
命令 init [0123456]
修改运行级别
找回 root 密码
开机时按 enter
-> 输入 e
光标移动到 kernal
项 -> 输入 e
在该行的最后追加 1
,即 进入单用户模式【临时生效】
回车,然后输入 b
【boot】启动到单用户模式
启动成功后可以直接修改用户密码
帮助命令
man 命令或配置文件
获得帮助信息
help
获得 shell 内置命令的帮助信息
文件目录相关
pwd
显示当前工作目录的绝对路径
ls [选项] [目录或文件]
查看当前目录内容
选项:
-a
显示当前目录的所有文件和目录,包括隐藏文件-l
以列表的方式显示-h
显示文件大小时,以 K,M,G 单位
mkdir -p 多级目录
创建多级目录
rmdir 空目录
删除指定空目录
若要删除非空目录,使用 rm -rf 目录
-r
表示递归删除目录下的文件和目录
-f
表示强制删除
cp -r 源 目标
递归复制整个目录到目标地址
cp
强制覆盖不提示
cat [选项] 文件
查看文件内容
选项:
-n
显示行号(翻页enter
退出q
)
more 文件
基于 VI 编辑器的文本过滤器,以全屏幕的方式按页显示文本内容
快捷键:
空白键
向下翻一页enter
向下翻一行q
离开Ctrl + F
向下滚动一屏Ctrl + B
向上滚动一屏=
输出当前行号:f
输出文件名和当前行号
less 文件
分屏查看文件内容,在显示文件时,并不是一次将整个文件加载后显示,而是根据显示需要加载内容,通常用来显示内容多的文件
快捷键:
空白键
向下翻一页[pagedown]
向下翻一行[pageup]
向上翻一行/字符串
向下搜寻【字符串】,n
向下查找,N
向上查找?字符串
向下搜寻【字符串】,n
向上查找,N
向下查找q
离开
echo [选项] [输出内容]
输出内容到控制台
可以输出环境变量:echo $变量名
echo env
输出系统所以环境变量
head -n [数量] 文件
查看文件前 n 行内容,默认 10 行
tail -n [数量] 文件
查看文件后 n 行内容,默认 10 行
也可以使用 tail -f 文件
实时追踪该文件的更新
>
和 >>
>
输出重定向
>>
追加
echo "内容" > 文件
将 "内容" 写入文件(覆盖)
echo "内容" >> 文件
将 "内容" 写入文件末尾(追加)
ln
指令(link)
软链接(符号链接),主要存放链接其他文件的路径
ln -s [源文件或目录] [软链接名]
给源文件或目录创建一个软链接
rm -rf 软链接名
删除软链接
history
查看已经执行过的历史命令,也可以执行历史指令
history n
查看最近使用过的 n 条指令
history !n
执行历史编号为 n 的指令
日期时间
date
显示当前时间
date +%Y-%m-%d %H:%M:%S
显示当前 年月日分秒时
date -s 字符串时间
设置当前系统时间
cal [选项]
默认显示本月日历
cal 2020
显示 2020 年日历
搜索查找
find [搜索范围] [选项]
从指定目录向下递归地遍历子目录,将满足条件的文件或目录显示在终端
选项:
-name<查询方式>
按指定文件名查找文件,可以使用通配符*?
user<用户名>
查找属于指定用户的文件size<文件大小
按指定文件大小查找文件+
大于-
小于
locate 搜索文件
利用事先建立的系统文件名称及路径的 locate 数据库实现快速定位文件,无需遍历整个文件系统
第一次运行期,须使用 updatedb
创建 locate 数据库
|
管道符,将前一个命令的处理结果输出传递给后面的命令处理
grep [选项] 查找文件 源文件
过滤查找
选项:
-n
显示匹配行和行号-i
忽略字母大小写
压缩解压
gzip/gunzip
压缩、解压 *.gz
文件
zip/unzip
压缩、解压 *.zip
文件
选项:
zip -r 目录
递归压缩,即压缩指定目录unzip -d <目录> *.zip
将文件解压至指定目录
tar [选项] *.tar.gz
打包指令
选项:
-c
产生*.tar
打包文件-v
显示详细信息-f
指定压缩文件名-z
打包同时压缩-x
解包*.tar
文件
打包 tar -zcvf *.tar.gz 文件1 文件2 ... 文件n
将文件打包并压缩
解包 tar -zxvf *.tar.gz -C 目标路径
将 *.tar.gz
文件解包至指定路径
组管理和权限管理
文件、目录的所有者
一般为文件的创建者
chown 用户名 文件名
修改文件的所有者,使用 -R
对下所有子文件或目录递归生效
chgrp 组名 文件名
修改文件所在组
usermod -g 组名 用户名
改变用户所在组
usermod -d 目录 用户名
改变用户登录的初始目录
定时任务调度
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
- 系统工作:有些重要的工作必须周而复始地执行,如病毒扫描
- 个别用户工作:个别用户可能希望执行某些程序,如对mysql数据库的备份
crontab [选项]
进行定时任务的设置
常用选项:
-e
编辑 crontab 定时任务-l
查询 crontab 任务-r
删除当前用户的所有 crontab 任务
快速入门
- 设置任务调度文件
/etc/crontab
- 设置个人任务调度,执行
crontab -e
- 输入任务到调度文件
*/1****ls -l /etc/ > /tmp/to.txt
每小时的每分钟执行 ls -l /etc/ > /tmp/to.txt
命令
参数
分区、挂载
Linux采用了一种叫载入(mount)
的处理方法,它的整个文件系统中包含了-整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得
对于IDE硬盘,驱动器标识符为hdx~
,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),~
代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3 表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分
对于SCSI硬盘则标识为sdx~
,SCSI 硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。sdbl [表示第2块scsi硬盘的第1个分区]
lsblk
或 lsblk -f
查看所有设备挂载情况
挂载步骤
增加1块硬盘,重启系统
给 sdb 硬盘分区
fdisk /dev/sdb
开始分区
m
显示命令列表p
显示磁盘分区,同fdisk -l
n
新增分区d
删除分区w
写入并退出
输入 n
新增一个分区,然后选择分区类型为主分区
,设定分区号
和分区的开始和结束扇区
使用 mkfs -t ext4 /dev/sdb1
将创建的分区格式化为 ext4
创建一个文件夹 mkdir /home/newdisk
使用 mount /dev/sdb1 /home/newdisk
将创建的目录挂载到 sdv1
分区上
使用 mount
命令挂载的分区只是临时的,当系统重启后就需要重新挂载
配置 Linux 的分区表 /etc/fstab
,实现系统启动时,自动挂载
使用这种方式,重启后挂载依旧存在
如果希望卸载挂载,使用 umount 设备名 | 挂在路径
磁盘情况查询
使用 df -h
查询系统磁盘整体使用情况
使用 du [选项] 目录
查询指定目录的磁盘占用情况
选项:
-s
指定目录占用大小汇总-h
人类可读的单位-a
含文件--max-depth=1
子目录深度-c
列出明细的同时,增加汇总值
常用磁盘指令
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
文件夹下目录的个数(包括子目录)
网络配置
配置固定的 ip 地址,配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0
修改完配置文件,重启系统并使用 service network restart
重启网络服务
使用 hostname
查看当前主机名
Linux 的主机映射文件 /etc/sysconfig/network
在配置文件 /etc/hosts
增加 ip地址和主机的映射
重启设备生效
进程管理
在LINUX中,每个执行的程序(代码)都称为一个进程,每一个进程都分配一个ID号
每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程
每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的;后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行[sshd,crond]
一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才才结束
使用 ps aux
显示所有进程
使用 ps aux | grep sshd
可以查看 sshd 进程
ps
详解
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
:启动进程所用的命令和参数,如果过长会被截断显示
使用 kill [选项] 进程号
通过进程号杀死进程,使用 -9
强制终止
使用 killall 进程名称
通过进程名杀死进程,支持通配符
也可以通过 pstree [选项]
更直观的查看进程信息
选项:
-p
显示进程 PID-u
显示进程所属用户
服务管理
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql,sshd防火墙 等),因此我们又称为守护进程
服务的管理指令 service 服务名 [start|stop|restart|reload|status]
在 CentOS7 之后,不再使用 service
而是 systemctl
使用 service
对某个服务启用或关闭是临时生效的,如果需要永久生效,需要使用 chkconfig
给每个服务的运行级别设置自启动、关闭
使用 chkconfig --list | grep xxx
可以查看 xxx 服务的情况
使用 chkconfig --level n 服务名 on/off
将指定的服务的第 n 运行级别开启或关闭
使用 chkconfig 服务名 off
不管那种运行级别都关闭
动态监控进程
top
与 ps
命令很相似,它们都用来显示正在执行的进程,top
与 ps
最大的不同之处,在于 top
在执行一段时间可以更新正在运行的的进程(默认每3秒变化一次)
选项:
-d 秒数
指定几秒更新,默认 3 秒-i
不显示闲置或者僵尸进程-p
指定监控进程 ID
交互操作:
P
以 CPU 使用率排序,默认M
以内存使用率排序N
以进程 PID 排序q
退出
输入 u
回车,再输入用户名,即可监视特定用户
输入 k
然后输入要结束的进程 ID 号即可终止指定进程
监控网路状态
使用 netstat [选项]
查看系统网络情况
选项:
-an
按一定顺序排序输出-p
显示哪个进程在调用
使用 netstat -anp | grep sshd
查看 sshd 服务的信息
使用 netstat -tlnp
查看当前系统有哪些端口正在监听
RPM 和 YUM 软件安装
RPM 包管理
一种用于互联网下载包的打包及安装工具,它包含在某些 Linux 分发版中。它生成具有 .RPM
扩展名的文件。RPM 是 RedHat Package Manager (RedHat软件包管理工具)的缩写,类似 Windows 的 setup.exe ,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。Linux的分发版本都有采用(suse,redhat, centos等等),可以算是公认的行业标准了
常用指令
rpm -ql 软件包名
:查询软件包中的文件rpm -qa
:查询所安装的所有 rpm 软件包rpm- qf 文件全路径名
:查询文件所属的软件包rpm -q 软件包名
:查询软件包是否安装rpm -qi 软件包名
:查询软件包信息
使用 rpm -e 包名
卸载 RPM 包
如果其他软件包依赖于要卸载的包,会产生错误信息
使用 rpm -e --nodeps 包名
强制卸载,依赖于此包的也无法运行
使用 rpm -ivh 包文件
安装 RPM 包
-i
表示 install、-v
表示 verbose、-h
表示 hash(进度条)
YUM
Yum 是一个 Shell 软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包
使用 yum list | grep xx
查询 YUM 服务器是否有需要安装的软件包
使用 yum install xxx
下载安装需要的软件包