Linux
网络连接三种模式
- 桥接模式
虚拟机可以与外部系统通讯但容易造成ip冲突
-
nat模式
网络地址转换模式,虚拟系统可以和外部系统通讯,不造成Ip冲突
-
主机模式
独立的系统
关机&重启命令
shut dowm -h now 立即关机 h代表halt
shutdown -h 1 一分钟后关机
shutdown -r now 现在重启计算机 r代表reheat
halt 关机
reboot 现在重启计算机
sync 把内存的数据同步到磁盘
vim 使用
vim xxx 一般模式
i或者a 进入编辑模式
esc键后 :wq(保存退出) :q(退出) :q!退出
正常模式下
yy 拷贝当前地 p 粘贴 5yy复制5行
dd 删除当前行 5dd删除五行
/关键字 进行查找 输入n进行下一个
:set nu 设置文件的行号 :set nonu 取消文件的行号
G 来到文件末行 gg 来到文件的首行
u 撤销刚刚输入的
行号+shift+g 快速定位一行
用户管理
su -用户名 切换到高级用户
logout/exit 返回原来用户
who am i 输出第一次登录的信息
id 用户名
passwd 用户名 修改用户密码 如果没有指定用户名就是当前登录的用户
userdel 用户名 删除用户
id 用户名 查询用户
用户组
系统可以对有共性的用户建组
新增组
groupadd 组名
删除组
groupdel 组名
增加用户时直接加上组
useradd -g 用户组 用户名
修改用户的组
usermod -g 用户组 用户名
- /etc/passwd 文件
用户user的配置文件,记录用户的各种信息,每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
-
/etc/shadow 文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
-
/etc/group 文件
组的配置文件,记录linux包含的组的信息,
每行含义:组名:口令:组标识号:组内用户列表
指定运行级别
- 关机
- 单用户[找回丢失密码]
- 多用户状态没有网络服务
- 多用户状态有网络服务
- 系统未使用保留给用户
- 图形界面
- 系统重启
常用运行级别是3和5,也可以指定默认运行级别
init 加运行级别切换
在centos 以前/etc/inittab文件中进行了简化
看当前默认的级别用 systemctl get-default
假设root用户密码错误,我们需要进入单用户重新设置密码
帮助指令
在linux中.是结尾的是隐藏文件
man 获得帮助信息
基本语法: man[命令或配置文件] (获得帮助信息) man ls
help 指令
基本语法:help 命令(获得shell内置命令)
文件目录类
rmdir [选项] 要删除的空目录
rmdir如果要删除非空目录需要使用 rm -rf 要删除的目录
touch 指令创建空文件
touch 文件名
cp 指令拷贝文件到指定目录
cp [选项] source dest
-r:递归复制整个文件夹
使用细节强制覆盖不提示:\cp
rm 指令移除文件或目录
rm [选项] 要删除的文件或者文件夹
-r:递归删除整个文件夹
-f:强制删除不提示
mv 指令移动文件与目录或者重命名
mv oldNameFile newNameFile
mv /temp/movefile /targetFolder 移动文件
cat 指令查看文件内容
cat [选项] 要查看的文件
-n 显示行号
为了更好的使用我们可以用管道命令 | more
管道命令即将上一步的结果交给下一个指令来处理
less 要查看的文件名
echo 指令输出内容到控制台
head 用于显示文件的开头部分内容,默认情况显示前10行
head -n 5 文件
tail -n 5 用于输出文件中尾部的内容,默认10行
tail -f 文件(实时追踪该文档的所有更新)
> 指令与>>指令
> 输出重定向和>>追加
> 覆盖写 >>追加
基本使用
ls -l > 文件
ls -al >> 文件
cat 文件1 > 文件2
echo "内容" >> 文件(追加)
ln 指令类似于快捷方式
基本语法 ln -s[原文件或目录][软链接名]
history 指令查看已经执行过历史命令,也可以执行历史命令
显示最近使用过的10条 history 10
执行最近执行的第10条指令 !10
date指令-显示当前日期
date 显示当前时间
date "+%Y-%m-%d %H:%M:%S"
搜索查找类
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的显示在终端
find [搜索范围][选项]
选项
-name<查询方式> 按照指定的文件名查找模式查找文件
-user<用户名> 查找属于指定用户名所有文件
-size<文件大小> 按照指定的文件大小查找文件 +n大于 -n小于 n等于
find / -size +200M 大于200M
locate 指令快速定位文件路径,locate指令利用系统事先建立的所有文件名称及路径的locate数据库实现快速定位给定文件,它无需遍历整个文件系统为了保证查询结果的准确度,管理员必须定期更新locate时刻
第一次使用必须使用updatedb 创建数据库
which 命令可以查看某个指令在哪个文件夹下
grep [选项] 查找内容 源文件 管道符号
-n显示匹配行及行号
-i忽略大小写
写法1. cat hello.txt | grep "hello"
写法2. grep -n "hello" /opt/ddd/hello.txt
压缩与解压类
gzip 文件名 指令用于压缩文件
gunzip 文件.gz 指令用于解压文件
zip 用于压缩文件,unzip 用于解压的
-r 递归压缩,即压缩目录
unzip 解压
-d <目录> 指定解压后文件的存放目录
将/home下所有的文件/文件夹压缩成myhome文件
zip -r myhome.zip /home/
将myhome.zip 解压到 /opt/tmp 目录
unzip -d/opt/tmp myhome.zip
tar 指令打包指令最后打包后的文件是.tar.zip
基本语法
tar [选项] xxx.tar.gz 打包的内容
选项
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解压.tar 文件
压缩多个文件,将 /home/pig.txt 和/home/cat.txt压缩成pc.tar.gz
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
将文件解压到指定目录下
tar -zxvf /home/myhome.tar.zip -C /opt/tmp
Linux 网络配置
虚拟机有一个ip地址 本机也有一人 vmnet
文件/目录权限
ls -ahl 查看文件的所有者
或者 ll
chown 用户名 文件名 修改文件所有者
某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
修改文件所在组
chgrp 组名 文件名
改变用户所在组
usermod -d 目录名 用户名 改变该用户登录的初始目录
0-9位说明
1. 第0位确定文件类型
l 是链接,相当于windows的快捷方式
d 是目录,相当于windows的文件夹
c 是字符设备文件,鼠标,键盘
b 是块设备,比如硬盘
2. 第1-3位确定所有者拥有该文件的权限
3. 第4-6位确定所属组拥有该文件的权限
4. 第7-9位确定其他用户拥有该文件的权限
drwxr-xr-x. 2 root root 23 11月 30 10:15 ddd
d 表明是个目录 rwx 表明root可对这个目录可读可写可执行 r-x表明所在组可读可执行 r-x表明其它用户对该目录可读可执行
chmod 指令可以修改文件或者目录的权限
u:所有者 g:所有组 o:其他人 a:所有人
chmod u=rwx,g=rx,o=x 文件/目录名
chmod o+w 文件/目录名
chmod o-x 文件目录名
r=4 w=2 x=1 共7种组合,也可以通过数字进行修改权限
修改文件所有者
chown newowner 文件/目录 改变所有者
chown newowner:newgroup 文件/目录 改变所有者和所在组
chown -R tom /home/test 将/home/test 目录下的所有文件和目录的所有者修改成tom
修改文件/目录所在组
chgrp newgroup 文件/目录
Linux 底层细节
crondtab 进行定时任务的设置
任务调度:指系统在某个时间执行的特定的命令或程序
1. 系统工作:有些重要的工作必须周而复始地执行,个别用户工作:个别用户可能希望执行某些程序
crontab [选项]
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
设置个人任务调度,crontab -e 命令
*/1 * * * * ls -l 、/etc/ > /tmp/to.txt
第小时的每分钟执行这条命令
5个占位符说明
第一个* 一小时当中的第几分钟 0-59
第二个* 一天当中的第几小时 0-23
第三个* 一个月当中的第几天 1-31
第四个* 一年当中的第几个月 1-12
第五个* 一周当中的星期几 0-7
at定时任务
1. at命令是一次定时计划任务,at的守护进程atd会以后台模式运行检查作业队列来运行
2.默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配则运行此作业
3. at命令是一次性定时计划任务,执行完后不再执行
4. 在使用at 命令的时候,一定要保证atd进程的启动可以使用相关的指令来查看 ps -ef 查看当前所有进程 ps -ef | grep atd 查询atd相关
at [选项] [时间]
ctrl+D 结束 at 命令的输入
用atq查看当前队列里面的任务
atrm [编号] 删除队列中的任务
linux 分区
1. linux 来说无论有几个分区,分给哪一目录来使用,它只有一个根目录,一个独立且唯一的文件结构,linux中每个分区都是用来构成整个文件系统的一部分
2. linux 采用一种叫"载入"的处理方法,它的整个文件系统包含一整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间在一个目录下获得
lsblk -f 查看当前磁盘分区
关于磁盘添加挂载新磁盘 https://www.cnblogs.com/superlsj/p/11610517.html
磁盘情况查询
du -lh
du/目录
-h 带计量单位
-s 指令目录占用磁盘大小
-c 列出明细,并显示汇总值
--max-depth=1 子目录深度
修改主机名与hosts映射
1. 可以给linux系统设置主机名,也可以根据需要修改主机名
2. 指令hostname: 查看主机名
3. 修改文件在 /etc/hostname 指定
4. 修改后,重启生效
nmtui 可以进入一个图形化的配置工具编辑后直接生效
Linux 进程管理
- 在linux 中,每一个执行的程序都称为一个进程,每一个进程都分配一个进程号
- 每个进程都可能以两种方式存在,前台与后台
- 一般系统的服务都是以后台进程的方式存在
ps命令查看目前系统中,有哪些正在执行,以及它们执行的状况,可以不加任何的参数
ps -aux 显示当前所有在后台的进程
ps -aux | grep sshd 显示 sshd连接使用的进程
ps -ef 也可以全格式显示当前所有的进程
-e 显示所有的进程 -f 全格式
若是某个进程执行一半需要停止,可以使用kill指令来完成此项任务
kill [选项] 进程号 通过进程号来杀死进程
killall 进程名称 通过进程名称杀死进程
终止远程登录服务 sshd,在适当的时候再开
kill sshd对应的进程号 /bin/stystemctl start sshd.service
当这个进程正在运行,你需要让它停止,我们需要加上 -9 选项
pstree [选项] 可以更加直观地来看进程信息
-p 显示进程的pid
-u 显示进程所属用户
服务本质就是进程,但运行在后台,因此我们也称为守护进程
service 服务名 [start|stop|restart|reload|staus]
在centos7后很多服务不再使用 service 而是使用systemctl
service指令管理的服务在/etc/init.d中查看
setup ->系统服务可以看到全部
开机流程
开机->bios->/boot->systemd进程1->运行级别->运行级对应的服务
chkconfig命令可以给服务的各个运行运行级别设置自启动与关闭
chkconfig --list[| grep xxx] 查看服务
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off 设置这个服务在这个运行级别是否自动开启
systemctl 管理指令
systemctl 指令管理的服务在 /usr/lib/systemd/system中查看
systemctl list-unit-files [|grep]
systemctl enable 服务名(开机启动)
systemctl disable 服务名(关闭启动)
systemctl is-enabled 服务名 (查询某个服务是否启动了)
关闭或者启动防火墙后,立即生效,但开机即失效,如果需要永久生效就需要
systemctl disable 服务名
打开或者关闭指定端口
打开端口 firewall-cmd --permanent --add-port=端口号/协议
关闭端口 firewall-cmd --permanent --remove-port=端口号/协议
重新载入生效 firewall-cmd --reload
查询端口是否开放:firewall-cmd --query-port=端口号/协议
top [选项] top 显示的是正在执行的进程状态
-d 秒数 指定几秒更新,默认是3秒
-i 使top不显示显示任何闲置或者僵死进程
-p 通过指定监控进程id来仅仅监控某个进程的状态
显示中使用交互指令进行按照对应的指标进行排序
w 命令查看登录用户正在使用的进程信息
p 以cpu使用率排序,默认
M 以内存的使用率排序
N 以PID排序
q 退出top
监控tom用户
top回车 u+用户名
终止指定的进程
top回车 k+进程号
netstat [选项]
-an 按一定顺序排列输出
-p 显示哪个进程在调用
如果需要建立一个网络连接双方都要一个端口
rpm包的管理
rpm用于互联网下载包的打包及安装工具,它包含在某些linux分发版中,它生成具有.rpm扩展名的文件名
查询已安装的rpm列表 rpm -qa|grep xx
rpm -q 软件包名:查询软件包是否安装
rpm -qi 软件包名:查询软件包信息
rpm -ql 软件包名:查询软件包中的文件
rpm -qf 文件全路径名 查询文件所属的软件包
删除rpm包 rpm -e rpm包名称 //erase
当有其它依赖依赖于它时,我们可以使用 rpm -e --nodeps rpm包
安装rpm包
rpm -ivh rpm包全路径名称 i=install,v=verbose 提示,hash进度条
yum是一个shell前端软件包管理器,基于rpm包管理,能够从指定服务器自动下载rpm包并且安装
yum list|grep xx软件列表 查询yum服务器是否有需要安装的软件
如果有直接 yum install 软件名称 就可以了
shell 编程
脚本格式以 #!/bin/bash开头
脚本需要有可执行权限
脚本常用执行方式
#!/bin/bash
echo "hello,world"
- 赋予该权限+x权限,再执行脚本 chmod u+x hello.sh
- 不用赋予脚本+x权限,直接执行该脚本 sh hello.sh
shell 变量介绍
- linux shell中变量分为 系统变量与用户自定义变量
- 系统变量: H O M E , HOME, HOME,PWD, S H E L L , SHELL, SHELL,USER
- 显示当前 shell中所有变量:set
shell 变量定义
- 定义变量:变量名=值
- 撤销变量:unset 变量
- 声明静态变量:readonly变量 注意:不能unset
变量名称一般使用大写
行号两侧不能有空格
将命令的返回值赋给变量
A=`date`反引号,运行里面的命令,并将结果返回给A
A=$(date) 等价于反引号
设置环境变量
export 变量名=变量值 (将shell变量输出为全局变量)
source 配置文件 (让修改后的文件立即生效)
echo $变量名 (查询环境变量的值)
多行注解
:<<!
注释内容
!
执行shell脚本希望获取命令行的参数信息,可以使用位置参数变量
$n (n为数字 $0代表命令命令本身,$1-$9代表1-9参数 10以上的参数要用 ${10})
$* 所有的参数
$@ 也代表所有的参数不过进行了区别对待
$# 代表命令行中所有参数的个数
预定义变量
$$ 当前进程号(pid)
$! (后台运行的最后一个进程的进程号)
$? (功能描述:最后一次执行的命令返回值状态,0表示正确执行非0表上次执行的不正确)
后台运行一个脚本 /root/myshell.sh & &代表在后台运行
系统日志
/var/log目录就是系统日志保存的位置
echo ‘’>secure 将secure 日志清空
centos 7.6服务是 rsyslogd ,centos6.x日志服务是syslogd
/etc/rsyslog.conf 文件限制了日志应该放的位置
/etc/logrotate.conf [全局的日志轮替策略,也可以单独给某个日志文件指定策略]
bt忘记密码可以使用 bt default 查看
常用命令
pwd (print work directory) 显示当前工作目录绝对路径
ls
-a 显示当前目录所有的文件和目录,包括隐藏的
-l 以列表的方式显示信息
-lh 文件的容量用mb或者k或者g的方式显示
cd [参数] 切换到指定的目录
cd:回到家目录
cd .. 回到当前目录的上一级目录
mkdir [选项] 目录名 mkdir 创建一个目录
-p:创建多级目录