用户管理

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 -ln新增分区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 下载安装需要的软件包