2

Linux概述

Linux背景介绍
环境搭建:云主机,无数据的PC(不推荐多系统混跑),虚拟机.
版本:内核版本,发行版本.其中内核版本,[官网](https://www.kernel.org/)分为三个部分,主版本号,次版本号,末版本号.次版本是奇数为开发版,偶数为稳定版.主要的发行版本有RedHat Enterprise Linux,Fedora,CentOS,Debian,Ubuntu.
虚拟机与镜像安装:  [官网](https://www.virtualbox.org/wiki/Downloads)下载一键安装虚拟机,[官网](http://isoredirect.centos.org/)一键下载安装镜像.在虚拟机点击新建,不断下一步,选择文件保存地址,安装即可完成.命令行界面,开头是`$ `时用户,开头是#时管理员.
终端使用:图像终端,命令行终端,远程终端(SSH,VNC)
根目录结构
/根目录结构  $ls / 查看根目录
/bin 该目录中存放Linux系统常用的可执行文件,如:mv、cp、cat、chomod、chown等常用命令。
/boot 该目录下存放的都是系统启动时要用到的程序。
/dev 该目录存放一些设备文件。例如在系统中键入“cd /dev/cdrom”,就可以看到光驱中的文件。
/etc 该目录存放了系统主要的配置文件,例如网络配置文件、文件系统、X系统配置文件、设备配置信息、设置用户信息等。
/sbin 该目录用来存放系统管理员的系统管理程序。
/home 普通用户的主目录,XX用户登录,/home目录下就有一个对应的“/home/XX”路径。 /home/user 用户目录
/lib 该目录用来存放开机时用到的库文件。
/mnt 该目录在一般情况下也是空的,你可以临时将别的文件系统挂在该目录下。
/proc 可以在该目录下获取系统信息,这些信息是在内存中由系统自己产生的。
/opt  存放第三方软件安装目录。
/root 超级用户的主目录。
/media  --- 媒体目录,可移动设备媒体常用的挂在点
/temp 用来存放不同程序执行时产生的临时文件。
/var    --- 可变目录,用于经常更改的文件,如日志文件
/usr 用户的很多应用程序和文件都存放在该目录下。
SSH工具

Xshell:SSH连接客户端工具,可以用于远程操作Linux系统.下载地址
在虚拟中$ifconfig,获取地址,然后在Xshell中输入账号和密码,端口号22
修改默认启动模式:

# 将默认级别修改为多用户文本模式
systemctl set-default multi-user.target
# 将默认级别修改为图形用户界面模式
systemctl set-default graphical.target
# 重启
reboot
运行级别: 运行级别就是操作系统当前正在运行的功能级别.以下七种运行级别:
0-停机模式(千万不要把initdefault设置为0,否则不能正常启动。)
1-单用户模式,只有root权限,系统维护,禁止远程登录。
2-多用户模式,没有NFS网络支持。
3-完整的多用户模式(标准的运行级),登录后进入控制台命令模式。
4-系统未使用,保留。
5-X11(xwindow),图形化模式。
6-重启模式,(千万不要把initdefault设置为6)。
关机:shutdown -h now/hours:minutes 立刻或者规定时间关机。
重启:shutdown -r now reboot init 6

系统操作篇

查看硬件信息

#使用lshw 无则安装
#查看lshw所有信息
$sudo lshw -short
#列出cpu相关信息
$lscpu
#列出usb设备信息
$lsusb
#列出硬盘/光驱等SCSI/SATA设备信息
$lsscsi
#列出所有总线
$lspci
#猎捕不同分区大小,使用情况,使用率
$df -h
#查看系统使用的,闲置的和ram的总体数量
$free -m
帮助命令man,help,info
#查看ls相关的命令
$man ls
#查看man的第七章命令,共有九章.
$man 7 man
#内部命令使用help帮助
$help cd
#外部命令使用help帮助
$ls --help
#info比help更详细
$info ls
查看主机基本信息
$uanme -a 查看操作系统相关信息
$cat /proc/version  查看内核版本
$cat /etc/issue  查看发行版本信息
$df -h 查看磁盘使用和挂载信息 
$ifconfig  查看网络配置信息
文件查看,操作,创建与删除,通配符与文件内容查看.
#pwd 显示当其目录名称
  注意/root 和 / /root是不同的,一个是根目录一个是用户的目录
#cd 更改当前的操作目录
    $cd /path/to/...  绝对路径
    $cd ./path/to/... 相对路径
    $cd ../path/to/.. 相对路径
    $cd - 回到之前的目录
    $cd .. 回到上一级目录
ls 查看当其目录下的文件,常用参数如下
    -l 长格式显示文件#打开后开头为-为普通文件 开头d为目录 开头为.为隐藏文件
    -a 显示隐藏文件
    -r 逆序显示
    -t 按照时间顺序显示
    -R 递归显示
$ls -lrt  #混合长格式显示文件与逆序显示与时间顺序显示
$ls /root #查看根目录
$ls /root /home  #查看多个目录
$su - root  #切换使用管理员账号
$clear或快捷键CTRL+L #清屏
#在根目录新建文件夹
$mkdir /a
$mkdir a b c #新建多个文件夹
$mkdir /a/b/c #在a的b里面新建c
$mkdir -p /a/b/c/d #新建一个d同时产生层层文件路径
#删除目录,只能删除空目录
$rmdir /a
#删除目录(可删除非空目录)
$rm -r /a
#强制删除目录,危险要注意仔细检查如空格,字母等以防删除错误
$rm -r -f
#复制root目录下的etc到dev下
$cp -r /root/etc /dev
#复制文件etc到tmp
$cp /etc /tmp
#复制文件etc到tmp显示进度
$cp -v /etc /tmp
#复制文件etc到tmp(包括创建时间)
$cp -p /etc /tmp
#mv具有移动和重命名双层功能,将etc改名为etd
$mv /etc /etd
#将目录etc移动端tmp
$mv /etc /tmp
#etc下的etcd移动到tmp且改名etcde
$mv /etc/etcd /tmp/etcde
#通配符*的运用,将etc的文件etca etcb etce复制到tmp中
$cp -v etc* /tmp
#指导复制?
$cp -v etc? /tmp
#linux常用的通配符有如下两种:
\*:代表任意字符(0到多个)
?:代表任意一个字符
#查找与搜索文件
$find路径 标准 查到后的动作
$find /home -type d -ls   找出/home/下所有的目录,并显示目录的详细信息。
查到后的几个命令
    -print: 显示
    -ls:类似ls -l的形式显示每一个文件的详细
    -quit:查找到一个就退出
    -delete:删除匹配到的行
    -ok COMMAND {} \:每一次操作都需要用户确认,{}表示引用找到的文件,是占位符,对于(find等输出的一个列表的内容)依次循环每一个;\是表示 -exec 命令终结的的符号。
    -exec COMMAND {} \:每次操作无需确认
#文本查看命令
$stat filename 查看文件统计信息
$cat 文本内容显示末端
  $cat -b filename 查看文本内容,文本加行号.
$head 查看文件开头
$tail 查看文件结尾
   -f 文件内容更新后,显示信息同步更新
$wc 统计文件内容信息
$more 分行显示
$less 显示文件

#打包和压缩与解压缩
#打包etc到tmp下
$tar cf /tmp/etc.tar /etc
#显示打包后文件大小已M方式显示
$ls -lh /tmp/etc.tar
#打包并压缩etc到tmp下(gz格式)
$tar czf /tmp/etc.tar.gz /etc
#打包并压缩etc到tmp下(bz2格式),压缩更小
$tar cjf /tmp/etc.tar.bz2 /etc
#将打包后的文件etc.tar.gz 解包到root (tar格式去掉z.bz2换成j)
$tar zxf /tmp/etc.tar.gz -C /root
#tbz2和tgz是以上两种压缩的缩写.
文本编辑器vi的操作及其四种模式
四种模式:正常模式(Normal-model),插入模式(Insert-mode),命令模式(Command-mode),可视模式(Visual-model)
#强制退出,先按esc再输入$:q! 保存且退出$:wq
#vi进入与退出   $vi 退出输入$:q
#一开始进入正常,输入则进入插入,操作则进入命令模式,高级操作则可视模式
正常模式: 按ESC返回正常模式.
         复制操作: 在点击需要cpoy的行,双击y,使光标移动到粘贴处按p,当复制多行时,如3行,输入3yy,使光标移动到粘贴处按p. 按y$会复制光标到光标结尾.
         按x删除单个字符   dw/dd:删除词/删除行  P:粘贴 kjhl:上下左右 ctrl+f/b:翻页

插入模式:   底部有“--INSERT--”标记,完成文本的编辑功能。
           输入大小写i,a,o都可进入插入模式
           i:在当前光标前插入文本;a:在当前光标后添加文本;o:在当前光标下一行插入文本;

命令模式:
            #输入vi进入正常模式,按i进入插入模式随机输入进行保存,到root下为a.txt
            :w  /root/a.txt
            wq:保存退出 q!:强制退出不保存。edit:在vi打开另一文件。
            %s /a/b/g  将文本的a全部替换成b,不加g则只作用光标所在行. 
可视模式:
            输入大小写v,或ctrl+v进入可视模式
用户管理命令
#新建用户
useradd  username 
#删除用户
userdel  username 
#修改用户密码 
passwd username
#修改用户属性 
usermod username
#修改用户属性
chage username
#新建用户组
groupadd group1
#新建用户组2为其增加用户ck
groupadd -g group2  ck
#删除用户组
groupdel
# 删除属于该用户的的家目录和邮件
userdel -r username
#切换用户ck
su - ck
#sudo以其它用户身份执行命令,其属性visudo 设置使用sudo的用户(组)
who:查询当前在线的用户 whoami:用户身份查询 groups:查询用户所属的组
跟用户相关的配置文件:
   用户信息文件: /etc/password 
   密码文件: /etc/shadow 
   用户组文件: /etc/group 
   用户组密码文件:/etc/gshadow
#查看当前用户名
$whoami
#查看登录用户
$who 
   who -m/am i  用户名,登录终端,登录时间.
   who -q/--count  登录账号与登录数量
   who -u  最后一次登录的时间间隔
   who -u/heading   显示列标
#退出登录用户
$exit
#切换用户
$su 用户名
#查看用户组信息
$cat /etc/group
#新建组账号
$groupadd 组名 新建组账号
#删除组账号
$grupdel 组名 删除组账号
#修改用户组
$user -g 组  用户名
#新建用户账号
$sudo useradd -G sudo xiaoming
#删除用户
$userdel username

查看文件权限的方法:
1.png
文件类型:
文件类型.png
文件权限的表示方法
3.png4.png5.png

chomd 修改文件,目录权限
  chomd u+x /tmp/testfile
  chomd 755 /tmp/testfile
chown :group1/test更改属主,属组
chgrp 可以单独更改属组,不常用
SUID  用于二进制可执行文件,执行命令时取得文件属主权限
SGID 用于目录,在目录下创建新的文件和目录,权限自动更改为该目录的属组.
SBIT 用于目录,该目录下新建的文件和目录,仅root和自己可以删除.

系统管理篇

网络管理,查看与修改网络配置,网络故障排除命令,网络管理和配置文件.
#网络状态查看
iprouter2命令
    ip
    ss
net-tools命令
     $ifconfig  开头eth0为网络接口,或eno1 板载网卡,ens33 PCI-E网卡 enp0s3 无法获取物理信息的PCI-E网卡  注意普通用户使用/sbin/ifconfig
     route
     netstat
#网络接口命令修改,网卡命名规则受biosdevname和net.ifnames两个参数影响
  编辑$ vim /etc/default/grub文件,增加biosdevname=0 net.ifnames=0 
  更新grub  $grub2-mkconfig -o /boot/grub2/grub.cfg
  重启 $reboot
#查看网络物理链接情况
$mii-tool eth0
#路由命令
#查看网关,使用-n参数不解析主机名
$route -n  
#添加网关
$route add default gw<网关ip>   eg:$route add default gw 10.211.55.1
$route add -host<指定ip> gw<网关ip>
$route add -net<指定网段> netmask子网掩码> gw <网关ip>
#网络配置
$ifconfig<接口><ip地址>[netmask子网掩码]
$ifup <接口>
$ifdown<接口>
#网络故障排除
$ping  当前网络是否有畅通
$traceroute  追踪路由  eg: traceroute -w 1 www.baidu.com
$mtr  检查数据包是否丢失 推荐使用mtr   
$nslookup 查看域名对应的ip    eg:nslookup www.baidu.com
$telnet   检查端口状态  eg:telnet www.baidu.com 80
$tcpdump   分析数据包   eg:tcpdump  -i any -n host 10.0.0.1 adn port 80
$netstat 查看监听范围   eg:netstat -ntpl
$ss 查看监听范围   rg:ss -ntpl
$netstat -an  --查看当前系统的端口使用
$cat /etc/redhat-release 查看Linux版本
$netstat -tulnp   查看系统中启动的监听服务:
$netstat -atunp   查看处于连接状态的系统资源信息
网络服务管理
网络服务管理程序分为两种: SysV和systemd
$service network start|stop|restart  查看网络状态
$chkconfig -list network 查看网络状态
$systemctl list-unit-files NetworkManager.service  查看服务
$systemctl start|stop|restart NetworkManger
$systemctl enable|disable NetworkManger  启用/禁用网络管理 
#常用网络配置文件
ifcfg-eth0和/etc/hosts 
#端口被占用解决
$ netstat -tln  /netstat -tln | grep 8080  查找被占用的端口
$losf -i :8080  查看端口属于那个程序
$kill -9 杀掉占用端口的进程
防火墙
Firewall
--------
#开启防火墙
$systemctl start firewalld
#关闭防火墙
$systemctl stop firewalld
#查看防火墙状态
systemctl status firewalld
#设置开机启动
$systemctl enable firewalld
#禁用开机启动
$systemctl diaable firewalld
#重启防火墙
firewall-cmd  --reload
#开发端口(修改后需要重启防火墙方可生效)
firewall-cmd  --zone=public  --add-port=8080/tcp  --permanent
#查看开放的端口
$firewall-cmd --list-ports
#关闭端口
$firewall-cmd --zone=public  -remove-port=8080/tcp  -permanent

Iptables
--------
#由于CenterOS7.0以上版本并没有预装Iptables,需要自行装。
$systemctl stop firewalld
$yum install iptables
$yum install iptables-services
#开启防火墙
$systemctl start iptables.service
#关闭防火墙
$systemctl stop iptables.service
#查看防火墙状态:
$systemctl status iptables.service
#设置开机启动
$systemctl disable iptables.service
#清除防火墙所有规则
$iptables -F
#查看filter表的几条链规则
$iptables -L -n
软件包管理器,rpm命令与yum包管理器,源代码编辑安装软件包.
### rpm

*   安装软件包:rpm -ivh nginx-1.12.2-2.el7.x86\_64.rpm
*   模糊搜索软件包:rpm -qa | grep nginx
*   精确查找软件包:rpm -qa nginx
*   查询软件包的安装路径:rpm -ql nginx-1.12.2-2.el7.x86\_64
*   查看软件包的概要信息:rpm -qi nginx-1.12.2-2.el7.x86\_64
*   验证软件包内容和安装文件是否一致:rpm -V nginx-1.12.2-2.el7.x86\_64
*   更新软件包:rpm -Uvh nginx-1.12.2-2.el7.x86\_64
*   删除软件包:rpm -e nginx-1.12.2-2.el7.x86\_64

### yum

*   安装软件包: yum install nginx
*   检查可以更新的软件包:yum check-update
*   更新指定的软件包:yum update nginx
*   在资源库中查找软件包信息:yum info nginx\*
*   列出已经安装的所有软件包:yum info installed
*   列出软件包名称:yum list nginx\*
*   模糊搜索软件包:yum search nginx
内核升级,grub配置文件,使用ps和top命令,进程的控制和进程之间的关系,进程的通信方式与信号kill命令,守护进程.
screen命令和系统日志,服务管理工具systemctl SeLinux简介,内存与磁盘管理,内存查看命令,磁盘分区和文件大小查看,文件系统管理.
i节点和数据块操作,分区和挂载,分区和挂载磁盘配额,交换分区swap的查看与创建,软件RAID的使用,逻辑卷LVM的用途与创建,系统综合查看命令sar以及第三方命令

待整理篇

磁盘
#查看磁盘空间占用情况:
df -hT
#查看当前目录下文件及其文件夹所占大小
du -h --max-depth=1 ./*
系统服务管理

#输出系统中各个服务的状态
systemctl list-units --type=service
#查看服务的运行状态:
systemctl status firewalld
#关闭服务:
systemctl stop firewalld
#启动服务
systemctl start firewalld
#重新启动服务(不管当前服务是启动或关闭):
systemctl restart firewalld
#重新载入配置信息而不中断服务:
systemctl reload firewalld
#禁止服务开机自启动:
systemctl disable firewalld
#设置服务开机自启动:
systemctl enable firewalld`
内存
cat/proc/meminfo 查看详细的内存信息

MemTotal:系统总内存 MemFree:系统空闲内存 MemAvailable:应用程序可用内存 Buffres:缓存区内存 Cached:缓存
ree 格式MemTotal = used + free + buff/cache(单位k)
free -h 查看详细参数
dmidecode -t memory 查看内存
vmstat 系统分析与CPU分析
top 进程的内存使用情况

  VIRT: 进程占用的虚拟内存大小.
  RES: 进程常驻内存大小.
  SHR: 共享内存大小.
ps: 查看内存占用情况.
pmap: 查看进程的内存音像信
lscpu 查看CPU配置信息
dmidecode 查看DMI的硬件信息
I/O
fdisk -l 查看磁盘信息
df 查看磁盘使用情况,磁盘使用率.
vmstat 磁盘性能分析

b值:表示因为I/O阻塞排队的任务数.
bi和bo值: 表示每秒读写磁盘的块数
wa 值:表示因为 IO 等待(wait)而消耗的 CPU 比例
iostat -c 查看部分CPU使用情况
iostat -d 查看磁盘使用情况
快捷键
强行终止命令 Ctrl+C
键盘输入结束或退出终端 Ctrl+d
暂停当前程序 Ctrl+s
将光标放到行头 Ctrl+a
将光标放到行尾 Ctrl+e
删除从光标所在位置到行末 Ctrl+k
历史输入命令 ↑
通配符查找文件 ls *.txt
获取帮助 ls --help
Tab:输入任何命令或其部分字符,按tab后会提示。
Ctrl+U:会清空已输入字符。
CTRL+L:快速清屏 
CTRL+R:在历史命令中查找

管道命令:

管道命令使用的是一个符号:"|"。格式: command 1 | command 2 把第一个命令command 1执行的结果作为command 2的输入传给command 2。

**示例:**ls -l | more:列出当前目录中的所有文件和目录,并把输出送给more命令作为输入,more命令分页显示文件列表。ps -ef | grep root:ps -ef显示所有进程,grep root筛选root相关的行,所以整个命令是显示有关root的所有进程

文件查找命令:

linux中主要有两种查找文件命令:find和locate

find:实时查找,通过遍历指定起始路径下文件系统层级结构,根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间。

grep:根据文件内容进行查找,利用正则表达式或者通配符进行模糊查询,返回匹配的一行数据。

格式为:grep \[选项\] 模式 \[文件\]grep 'test' a:显示所有以a开头的文件中包含 test的行

grep 'test' aa bb cc:显示在aa,bb,cc文件中包含test的行

进程查看、终止:

**命令:ps **ps -a/e:查看所有激活进程 ps -f:用ASCII字符显示树状结构,表达程序间的相互关系。

ps -ef |grep xxx:筛选出包含xxx行的进程信息

进程一般会自行退出,但是有的进程一直不结束,需要用户进行强行终止。利用kill 9命令强行杀死该进程。

kill 9 1902:强行停止1902进程。

网络操作:

**ifconfig:**ifconfig查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址使用权限root账户。

**格式:ifconfig -interface \[options\] address**

\-interface:网络接口,如eth0和eth1 参数: up:激活网络接口卡 down:关闭指网络接口

address:接口设备的IP地址 netmask address:子网掩码

fconfig eth0 210.34.6.89 netmask 255.255.255.128 broadcast 210.34.6.127 :设置网卡eth0的IP地址、网络掩码和网络的本地广播地址。

**netstat:**检查整个Linux网络状态,如开启的端口、服务,以及服务的状态等.

**nslookup****:**查询一台机器的IP地址和其对应的域名。解析域名:nslookup [www.sina.com](http://www.sina.com) ip反解析域名:nslookup 202.108.33.60

杂症

CentOS 7 ifconfig命令无法使用提示command not found

激活网卡:在文件 /etc/sysconfig/network-scripts/ifcfg-enp0s3 中
进入编辑模式,将 ONBOOT=no 改为 ONBOOT=yes,之后安装
yum upgrade
yum install net-tools

参考

(1)虚拟机安装


SoapEye
89 声望6 粉丝

历史就是历史,它是客观存在的。