对某一个特定文件系统在某一个特定时间内的一个具有只读属性的镜像。当你需要重复的返回到某一系统状态,又不想创建多个虚拟机的时候,就可以使用快照功能。
是原始虚拟机全部状态的一一个拷贝,或者说-个镜像。克隆的过程并不影响原始虚拟机,克隆的操作一但完成, 克隆的虚拟机就可以脱离原始虚拟机独立存在,而且在克隆的虚拟机中和原始虚拟机中的操作是相对独立的,不相互影响。
cat /proc/cpuinfo # 查看cpu信息
cat /proc/meminfo # 查看内存信息
free # 查看内存使用情况
uname -r # 查看内核版本
cat /etc/redhat-release # 查看发行版信息
hostname # 查看主机名
ifconfig、ip a # 查看ip信息
getenforce # 查看SeLinux状态
setenforce 0 # 临时关闭Selinux
setenforce 1 # 开启Selinux
systemctl status firewalld # 查看防火墙状态
systemctl stop firewalld # 临时关闭防火墙
systemctl disable firewalld # 永久关闭防火墙
poweroff
halt
init 0
shutdown -h now
shutdown -r now
reboot
init 6
Linux中, 一切皆文件
多用户操作系统
模块化
如何操作Linux
命令格式:
命令(command) 选项(option) 参数(argument)
如何获得命令帮助
对于内部命令:使用help,系统shell自带的命令
[ root@localhost ~ ]# help type
对于外部命令:使用–help,是安装其他的程序产生的命令。
[ root@localhost ~ ]# type --help
可以通过type查看命令是内部还是外部命令: type 命令关键字
man命令
[ root@localhost ~ ]# man tree
info命令
[ root@localhost ~ ]# info tree
百度、Geogle
一切从 / 开始
设备文件:
tree:以树状格式显示目录内容
[ root@localhost ~ ]# tree -C /boot
ls:列出目录的内容
pwd:打印当前工作目录
mkdir:创建空目录
rmdir:删除空目录
rm: 删除目录或文件
mv:移动或重命名文件或目录
cp: 复制目录或文件
vim
命令模式下的操作:
末行模式的操作:
grep:目的是过滤出用户感兴趣的内容
语法:grep [选项] 模式或关键字 文件列表
语法:cut -f 指定的列 -d ‘分隔符’
去除相邻重复行;一般与sort联用
将/etc/passwd文件中的小写字母转换成大写字母
[root@web test]# cat /etc/passwd | tr '[a-z]' '[A-Z]'
useradd:添加用户
useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u <uid>][用户帐号]
passwd:设置用户密码
usermod:修改用户
userdel:删除用户
-r:可以干净的删除一个用户(连同家目录一起删除)
chage:查看和修改用户密码信息
groupadd:添加组
gpasswd:向组内添加用户
groupdel:删除组
chfn:改变用户信息
finger:查看用户信息
id username:查看当前用户的ID
whoami:查看当前用户的名字
文件:
目录:
rwx
r--:只读
r-x:读和执行
---:无权限
0 000 ---:无权限
1 001 --x: 执行
2 010 -w-: 写
3 011 -wx: 写和执行
4 100 r--: 只读
5 101 r-x: 读和执行
6 110 rw-: 读写
7 111 rwx: 读写执行
用户:
chmod: 修改文件的权限
修改三类用户的权限:
u,g,o,a
chmod 用户类别=MODE file,...
修改某类用户的某位或某些位权限:
u,g,o,a
chmod 用户类别+|-MODE file,...
使用chmod a+[-]x 全部添加或者删除相应权限
chown:用于设置文件所有者和文件关联组的命令
chown 需要超级用户 root 的权限才能执行此命令。
chown [-cfhvR] [--help] [--version] user[:group] file...
将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup :
chown runoob:runoobgroup file1.txt
SUID
运行某程序时,相应进程的属主是程序文件自身的属主,而不是 用户本身了,只对二进制程序有效,执行者对于程序需要有x权限
例子
passwd命令 需要在/etc/shadow中写入密码
ls -l /bin/cat
ls -l /etc/shadow
chmod u+s file (如果本身具有x,为s,否则为S)
SGID
Sticky (BIT)
只针对目录有效,当用户对目录拥有wx权限时,用户在该目录创建的文件或目录,只有 自己与root才可以删除
在一个公共目录,每个人都可以创建文件,删除自己的文件, 但是不能删除别人的文件(冒险位,粘贴位)
例子:
chmod o+t dir
SUID是4 SGID是2 SBIT是1
chmod 7755 filename # 第一个7代表的就是这三个特殊命令,后面的755是普通权限。
sudo:某个用户能够以另外一个用户的身份通过某主机执行某命令
sudo 的配置文件 /etc/sudoers
基本配置格式
<user list> <host list> = <operator list> <tag list> <command list>
user list 用户/组,或者已经设置的用户的别名列表, 用户名直接 username,用 户组加上%
host list 主机名或别名列表
operator list runas用户,即可以以哪个用户、组的权限来执行
command list 可以执行的命令或列表
tag list 这个经常用到的是 NOPASSWD: ,添加这个参数之后可以不用输入密码 别名机制:类似定义了一个组
4类:
注意事项:
使用示例:
sudo命令
记录sudo日志到指定的文件:
visudo -c 可以检查配置文件语法
网络命令
ifconfig:用于显示或设置网络设备
ip a
ip addr show # 显示网卡IP信息
ip addr add 192.168.0.1/24 dev eth0 # 设置eth0网卡IP地址192.168.0.1
ip addr del 192.168.0.1/24 dev eth0 # 删除eth0网卡IP地址
ip link
ip link show # 显示网络接口信息
ip link set eth0 up # 开启网卡
ip link set eth0 down # 关闭网卡
hostname
hostnamectl
nmtui
ethtool
ens33网卡配置文件解析:
DEVICE=eth0 # 设备名
TYPE=Ethernet # 设备类型
UUID=52a6bbc3-917c-4828-8ab5-45369ab90d4b # 设备唯一标识符
ONBOOT=yes # 是否随系统启动而启动
NM_CONTROLLED=yes # 是否受NetworkManager服务管理
#BOOTPROTO=dhcp # 自动获取地址
static # 静态设置IP地址
none # 静态设置IP地址
DEFROUTE=yes
IPADDR=192.168.1.3 # 设置IP地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.1.254 # 网关
DNS1=8.8.8.8 # DNS服务器
NAME="System eth0"
PREFIX=24 # 设置网络前缀长度
HWADDR=00:0C:29:C1:5D:CF # 设置MAC地址
设置以后要重启服务才能生效:
DNS配置:
nmcli
示例:
nmcli connection add con-name test-con ipv4.addresses "10.1.1.100/24" ipv4.gateway 10.1.1.1 ipv4.dns 202.106.0.20 ipv4.method manual connection.autoconnect yes type ethernet ifname ens33
# con-name:逻辑名字
# ifname 物理设备名字
# ipv3.method manual:手动配置IP地址
# autoconnect:开机自动连接网络
测试连通性
解析dns
查看路由表
netstat -rn
route -n
ip route show
netstat
ss
ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计. 它比其他工具展示等多tcp和state信息. 它是一个非常实用、快速、有效的跟踪IP连接和sockets的新工具。
ss -l 显示本地打开的所有端口
ss -pl 显示每个进程具体打开的socket
ss -t -a 显示所有tcp socket
ss -u -a 显示所有的UDP Socekt ss -o state established ‘( dport = :smtp or sport = :smtp )’ 显示所有已建立的 SMTP连接
ss -o state established ‘( dport = :http or sport = :http )’ 显示所有已建立的HTTP 连接
ss -x src /tmp/.X11-unix/* 找出所有连接X服务器的进程
ss -s 列出当前socket详细信息: ss做地址筛选
ss src ADDRESS_PATTERN src:表示来源 ADDRESS_PATTERN:表示地址规则
ss做端口筛选
运算符如下:
iperf
一个 TCP/IP 和 UDP/IP 的性能测量工具,能够提供网络吞吐率信息,以及震动、丢包率、最大段和最大传输单元大小等统计信息;从而能够帮助我们测试网络性能,定位网络瓶颈。
tcpdump
tcpdump是一个用于截取网络分组,并输出分组内容的工具
yum install tcpdump -y
常用参数介绍:
tcpdump的表达式介绍
第一种是关于类型的关键字
第二种是确定传输方向的关键字
第三种是协议的关键字
如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
# tcpdump tcp port 23 host 210.27.48.1
对本机的udp 123 端口进行监视 123 为ntp的服务端口
# tcpdump udp port 123
iftop
iftop可以用来监控网卡的实时流量(可以指定网段)、反向解析IP、显示端口信息等
yum install iftop -y
常用参数
进入iftop操作命令
按h切换是否显示帮助;
按n切换显示本机的IP或主机名;
按s切换是否显示本机的host信息;
按d切换是否显示远端目标主机的host信息;
按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
按N切换显示端口号或端口服务名称;
按S切换是否显示本机的端口信息;
按D切换是否显示远端目标主机的端口信息;
按p切换是否显示端口信息;
按P切换暂停/继续显示;
按b切换是否显示平均流量图形条;
按B切换计算2秒或10秒或40秒内的平均流量;
按T切换是否显示每个连接的总流量;
按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;
按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
按j或按k可以向上或向下滚动屏幕显示的连接记录;
按1或2或3可以根据右侧显示的三列流量数据进行排序;
按<根据左边的本机名或IP排序;
按>根据远端目标主机的主机名或IP排序;
按o切换是否固定只显示当前的连接;
按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!
按q退出监控。
开启Linux主机路由功能
永久开启,更改配置文件
vim /etc/sysctl.conf
net.ipv4.netip_forward = 1 # 默认值为0
sysctl -p # 令修改立刻生效
临时修改
echo 1 > /proc/sys/ipv4/ip_forward
临时添加路由条目
使用route命令添加的路由,机器重启或者网卡重启路由就失效了
添加到主机的路由
route add -host 192.168.119.10 dev ens33
route add -host 192.168.119.11 gw 192.168.119.1
添加到网络的路由
route add -net 192.168.119.10 netmask 255.255.255.0 ens33
route add -net 192.168.119.10 netmask 255.255.255.0 gw 192.168.119.1
route add -net 192.168.119.0/24 ens33
添加默认网关
route add default gw 192.168.119.1
删除路由条目
route del -host 192.168.119.10 dev ens33
route del default gw 192.168.119.1
route del -net 192.168.119.0/24
查看命令
ip addr # 查看地址信息
ip route # 查看路由表
route -n # 查看路由表
netstat -rn # 查看路由表
ip rule # 查看路由策略
设置永久路由
在**/etc/rc.local里添加,需要chmod -x /etc/rc.d/rc.local**
route add -net 192.168.1.0/24 dev ens33
route add -net 192.168.2.0/24 gw 192.168.2.1
/etc/sysconfig/static-routes : (没有static-routes的话就手动建立一个这样的文件)
any net 192.168.3.0/24 gw 192.1 68.3.254
any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129
编辑网卡静态路由文件,在/etc/sysconfig/network-scripts 目录中编写,格式:route-网卡名
ADDRESS0= 192.168.100.0
NETMASKO= 255.255.255.0
GATEWAYO= 192.168.154.2
ADDRESS1= 192.168.200.0
NETMASK1= 255.255.255.0
GATEWAY1= 192.168.154.2
telnet 远程登陆,明文登录
ssh 远程登陆,密文登录
curl命令
wget 下载工具
Linux系统中的wget是一个下载文件的工具, 它用在命令行下。
wget支持HTTP, HTTPS和FTP协议,可以使用HTTP代理。所谓的自动下载是指,wget可以在用户退出系统的之后在后台执行。
命令格式
使用案例
#实例1:使用wget下载单个文件
wget http://www.minjieren.com/wordpress-3.1-zh _CN.zip
#实例2:使用wget -0下载并以不同的文件名保存
wget -0 wordpress .zip http://www.minjieren.com/download.aspx?id=1080
#实例4:使用wget -c断点续传
wget -C http://www.minjieren.com/wordpress-3.1-zh_ _CN.zip
#实例5:使用wget -b后台下载
wget -b http://www.minjieren.com/wordpress-3.1-zh _CN.zip
#你可以使用以下命令来察看下载进度:
tail -f wget-log
axel 下载工具
Axel是Linux下一个不错的HTTP/FTP高速下载工具。支持多线程下载、断点续传,可以从多个地址或者从一个地址的多个连接来下载同一个文件。
适合网速不给力时多线程下载提高下载速度。
命令格式
常用参数
例如:
#下载Inmp安装包指定10个线程,保存到/tmp/目录
axel-n 10 -0 /tmp/ http://soft.vpser .net/lnmp/nmp0.7-full.tar.gz
主要选项
-q query—查询 查询已安装的软件包的信息
[hostname Packages]# rpm -q zsh
zsh-4.3.10-5.el6.x86_64
[hostname Packages]# rpm -q asd
package asdf is not installed
查询系统中所有已经安装的软件包有哪些
[hostname Packages]# rpm -qa
# 统计已经安装的软件包的个数
[hostname Packages]# rpm -qa | wc -l
1120
f 查询某个文件是由哪个软件包安装的
rpm -qf 文件的绝对路径
[hostname ~]# rpm -qf `which vim`
vim-enhanced-7.2.411-1.8.el6.x86_64
c 查询软件的配置文件
[hostname ~]# rpm -qc httpd
......
l 安装某个软件时,都安装了哪些文件
[hostname ~]# rpm -ql setup
i 查询安装的软件包的信息
[hostname ~]# rpm -qi setup
-qp 查询未安装的软件包的相关信息
-qpi 未安装的软件包的完整路径和包名:查询未安装的软件包的详细信息
[hostname ~]# rpm -qpi /mnt/cdrom/Packages/gcc-4.4.7-3.el6.x86_64.rpm
-qpl:如果安装未安装的软件,会安装哪些文件在系统中
-qpR:查询未安装的软件包的依赖情况
主要选项
-e : erase
[hostname ~]# rpm -e zsh
[hostname ~]# rpm -q zsh
package zsh is not installed
主要选项
-V:验证软件包生成的文件或命令是否被人修改过 —— 为了安全,防止恶意代码
rpm -V 已安装的软件包的名字
[hostname ~]# rpm -V setup
.......T. c /etc/bashrc
S.5....T. c /etc/printcap
S.5....T. c /etc/profile
rpm -Va 检测所有的包
S file Size differs # 大小改变
M Mode differs (includes permissions and file type) # 文件的类型或权限改变
5 digest (formerly MD5 sum) differs # md5值改变
D Device major/minor number mismatch # 设备的主从号改变
L readLink(2) path mismatch # 符号链接文件找不到链接对象
U User ownership differs # 用户改变
G Group ownership differs # 组改变
T mTime differs # 修改文件内容的时间改变
P caPabilities differ # 兼容性改变
常用yum命令
示例
[root@localhost ~]# yum list pam*
Installed Packages # 已安装的
pam.i386 0.99.6.2-3.27.el5 installed
pam_ccreds.i386 3-5 installed
......
Available Packages <==底下则是『可升级』的或『未安装』的
pam.i386 0.99.6.2-4.el5 base
pam-devel.i386 0.99.6.2-4.el5 base
pam_krb5.i386 2.2.14-10 base
过程
首先备份/etc/yum.repos.d/CentOS-Base.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)
wget -c http://mirrors.aliyun.com/repo/Centos-7.repo
mv Centos-7.repo aliyun.repo
生成缓存
yum clean all # 清除所有缓存
yum makecache # 生成缓存
过程
cd /etc/yum.repos.d/ 进入存放源的目录
首先备份/etc/yum.repos.d/ 下的 .repo 结尾的文件
用vim编辑一个 .repo 结尾的文件
[name] # 容器名称,一定要放在[]中。
name=user_name # 容器说明,可以自己随便写。
baseurl=file:///mnt/cdrom # 光盘挂载路径,即软件源的位置
enabled=1 # 此容器是否生效,如果不写或写成 enabled 则表示此容器生效,写成 enable=0 则表示此容器不生效。
gpgcheck=0 # 如果为 1 则表示 RPM 的数字证书生效;如果为 0 则表示 RPM 的数字证书不生效
**例如:**获取一个python3版本的源码包
wget -c https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz
解压源码包
根据源码包解压格式选择解压所需要的命令
例如:解压python3的包
unxz Python-3.9.0.tar.xz
tar -xf Python-3.9.0.tar.xz
过程
需要提前安装依赖包:
wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git libffi-devel
安装依赖包
yum install -y sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git libffi-devel
编译python3
cd Python-3.9.0/ # 进入解压出来的文件夹
./configure --prefix=/usr/python3 --enable-shared CFLAGS=-fPIC # --prefix 后面是指定安装的路径
make # 对软件源代码文件进行编译
make install # 开始安装python库文件
创建软连接
ln -s /usr/python3/bin/python3.9 /usr/bin/python3
ln -s /usr/python3/bin/pip3 /usr/bin/pip3
#/usr/bin/
主要放置一些应用软件工具的必备执行档,即可执行文件,执行命令会查找/usr/bin/等目录
错误提示及解决
# 错误:
python3.5: error while loading shared libraries: libpython3.5m.so.1.0: cannot open shared object file: No such file or directory
#原因是因为python运行时没有加载到libpython3.5m.so.1.0 这个库文件将其复制到响应目录OK
#解决方法:
cp libpython3.9.so.1.0 /usr/lib64/
cp libpython3.9.so.1.0 /usr/lib
cp libpython3.9.so.1.0 /usr/local/lib64/