一、Linux介绍
1、什么是Linux/h3>
Linux操作系统是一种免费使用和自由传播的类UNIX操作系统。其内核由林纳斯·托瓦兹于1991年10月5日首次发布,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统;它能运行主要的Unix工具软件、应用程序和 络协议,是一个性能稳定的多用户 络操作系统。
 2、Linux发行版
Radhat、Cent OS、Ubuntu、dedian、SUSE、Deepin、银河麒麟、中标麒麟、优麒麟、统信UOS、Euler(欧拉)等
二、Linux目录结构
1、Linux中的目录是树形的结构
 2、目录的名称是规定的,文件类型也是规定的  ——>一切皆文件
 3、/bin :常用指令
 4、/sbin :系统管理员使用的系统管理程序
 5、/home:普通用户主目录
 6、/root:超级用户主目录
 7、/lib:系统开机所需要的最基本的动态链接共享库
 8、/etc:系统管理所需要的配置文件和子目录
 9、/usr:常用的重要目录,用户的很多应用程序都存放于此
 10、/boot:存放Linux启动文件,比如镜像和一些连接文件
 11、/proc:一个虚拟目录它是系统内存的映射
 12、/tmp:存放临时文件
 13、/dev: 类似玉Windows的设备管理器,把所有硬件以文件形式存储
 14、/mnt:用于存放用户零时挂载的文件系统
 15、/media:挂在设备的。比如U盘、光驱等
 16、opt:给主机额外安装软件所摆放的目录
 17、/usr/local:这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序
 18、/var:这个目录存放着不断扩充的文件
 19、/selinux:安全子系统
三、指令
2、关机、重启
shutdown -h now 立刻关机
 shutdown -h 1  一分钟后关机
 shutdown -r  now   现在重新启动计算机
 init 0  现在关机
 reboot  现在重启
 sync    把内存的数据同步到磁盘
 halt     关机
3、用户登录和注销
logout  用户名  注销用户
 su -用户名   切换用户/账户,如:su -root
4、用户管理
useradd  用户名    添加用户,useradd -d /home/test axiang:在home/test下创建用户axiang
 passwd  用户名   给该用户设置密码
 pwd  显示当前所在的目录
 userdel 用户名   删除用户
 userdel -r 用户名   删除用户及用户家目录(可以理解为用户信息)    一般情况下不建议使用
修改文件所有者:
     chown 用户名 文件名
5、切换用户
su -所要切换的用户名      注意:权限高的切换到权限低的不需要输入密码,权限低的切换到权限高的需要密码
     返回到原来的用户用 exit或者logout
6、查看当前登录用户信息
who am i
7、用户组
创建:groupadd  组名
     删除:groupdel   组名
     如果没有创建组,创建用户时,默认创建一个与用户名一样的组
     在创建用户时创建(分配)组:useradd  用户名 -g 组名 
创建组:group 组名
     useradd -g yunjisuan axiang 创建一个用户axiang,并放入到yunjisuan组中
     修改文件所在组:chgrp 组名 文件名
改变用户所在组
     usermod -g 新组名 用户名
     usermod -d 目录名 用户名 ————>改变该用户登录的初始目录(用户需要有进入该目录的权限)
 权限的基本介绍
 -rwxrw-r–
 第一位:代表文件类型:
         l :链接文件
         d :目录
         b :块设备(硬盘)
         c :设备文件(鼠标、键盘)
第二位:r 可读
 第三位:w 可写
 第四位:x 可执行
 另外:也可用数字表示权限
     r=4  w=2  x=1  rwx=4+2+1=7
 权限修改的方式——————>u: 所有者,g: 所属组,o: 其他人,a: 所有人
     第一种:
         #chmod u=rwx,g=rx,o=r 文件/目录名 ————>赋予该文件的所有者可读可写可执行的权限和所有组可读可执行的权限以及所有人可读的权限
         #chmod o+w 文件名 ————>赋予其他人该文件写的权限
         #chmod a-x 文件名 ————>赋予所有人该文件的执行权限
         #chmod u=rwx,g=rx,o=r 文件/目录名 相当于:#chmod 754 文件名
8、、修改组
usermod -g 组名 用户名
 /etc/passwd :用户的配置文件,用于记录用户的信息每行的含义如下
 用户名:口令:用户标识 :组标识 :注释描述性:主目录:登录shell
 /etc/shadow:口令的配置文件,每行的含义如下
 登录名:加密口令:最后一次修改的时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
     /etc/group:组的配置文件,记录Linux包含的组的信息,每行的含义如下
     组名:口令:组标识 :组内用户列表
9、、指定运行级别
0  关机
     1  单用户  (可以在这里找回丢失的密码)
     2  多用户  无 络连接
     3  多用户  有 络
     4  保留
     5  图形界面
     6  重启
     应用案例:init 0  关机
     查看当前运行级别:systemctl get-default
10、如何找回用户密码(基于centOS 7)
重启时 三秒内按“E”,找到以Linux16开头的那一行,在该行的最后输入init=/bin/sh,按CTRL+X,输入mount -0 remount,rw /,完成后回车
     输入passwd再回车,输入新的密码,回车再次输入密码再回车,接着输入touch /.autorelabel回车,最后输入exec /sbin/init然后回车
     然后耐心等待。
11、帮助指令:man 、help
man 指令
     help 指令
     Linux下隐藏文件是以点开头的,加参数-a显示
12、显示当前工作绝对路径:
pwd(显示的是绝对路径)
13、显示文件信息:ls
-a:显示当前目录下的所有文件,包括隐藏文件
     -l:以列表的形式显示相对路径与绝对路径
     相对路径:从当前目录开始
     绝对路径:从根目录开始
查看文件所有者————>ls -ahl -h显示文件大小,-a 显示隐藏文件,-l 以树形显示
14、cd指令
cd ~:回到自己的家目录
     cd .. :返回当前目录的上一层目录
15、mkdir用法
 用法:mkdir 目录名
     参数:mkdir -p :创建多级目录,例如:mkdir /etc/yunjisuan/axiang
16、touch用法:
touch表示创建一个空文件,或者修改文件时间,用法
     touch 文件名 ,如:touch axiang
17、cp用法:
cp :拷贝文件
     参数:-r :递归复制整个文件夹,用法如下
     cp (-r)文件名,例如,将/etc/groupd下的文件axiang.txt拷贝到/home/yunjisuan目录下
     cp /etc/groupd/axiang.txt /home/yunjisuan  
     强制覆盖不提醒:cp
18、rm用法:
移除文件或者目录,参数
     -r:递归删除整个文件
     -f:强制删除不提醒
19、mv用法:
mv:移动文件与目录或者重命名,用法:
 mv 文件与目录名,如果两个文件在同一个目录叫重命名
20、cat用法:
cat:查看文件内容,选项:
     -n:显示行 
less用法:用来分屏查看文件内容,功能强大
     less 需要查看的文件名
     空白键:向下翻一页
     /字串,n:向下查找,N:向上查找,
head用法:查看文件开头部分内容(默认前10行)
     head 文件名
     head -n 6 文件名:显示文件前6行内容
tail用法:显示文件结尾的内容(默认后十行)
     -f:实时追踪该文件的所有更新——>实时监控
21、echo用法:输出内容到控制台
echo “hello-world” :输出hello-world到控制台
>:输出重定向,即我可以把一个内容输入或者输出到一个文件里(覆盖)
     echo “hello-world” >opt/nihao.txt
     把hello-world输出到opt/nihao.txt
>>:追加
22、ln用法创建链接,类似于快捷方式
-s:创建文件软连接
 ln -s 原文件或者目录名  软连接名
23、history用法:
查看已经执行过的历史命令,也可以执行历史命令,只看最近执行的10个指令:history 10
24、crontab进行定时任务的设置
25、crond任务调度
 -r 终止任务调度
  -l 列出当前有哪些任务调度
     service crond restart重启任务调度
26、ps -a 显示现行终端下的所有应用程序包括其他用户的程序
ps -A 显示所有程序
 ps -ef 用于查看当前所有的进程
27、at定时任务
at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行
     默认情况下atd守护进程每60s检查一次作业队列
     ps -ef | grep atd 只查看atd是否运行
     用法:at [选项] [时间]    ctrl+D结束at命令的输入
     选项
         -m 当指定的任务完成后,给用户发邮件,即使没有标准输出
         -I atq的别名
         -d atrm的别名
         -v 显示任务将被执行的时间
         -c 打印任务的内容到标准输出
         -V 显示版本信息
         案例:两天后下午五点执行/bin/ls /home
         #at 5pm +2 days
         #at > /bin/ls /home  输入两次CTRL + D  atq查看结果
         atrm 删除任务,用法 atrm 进程 
28、Linux分区
硬盘说明
 ①、Linux硬盘分IDE硬盘和SCSI硬盘两种,目前常用的是SCSI硬盘
     对于IDE硬盘,驱动器标识符为hdx~,其中hd表明分区所在的设备类型,在这里指IDE硬盘
     其中X为盘 (a为基本盘、b为基本从属盘、c为辅助主盘、d为辅助从属盘,~代表分区,
     前四个分区用1-4表示,它们是主分区或者扩展分区,从第5个开始为逻辑分区
对于SCSI硬盘标识为sdx~,sd表示硬盘类型为SCSI硬盘
②、查看所有设备挂载情况
 lsdlk或者lsdlk -f
 如何增加一块硬盘
     虚拟机添加硬盘
     分区
         分区指令:fdisk /dev/sdb
     格式化建立文件系统
         mksf -t ext4 /dev/sdb1
     挂载
         先创建一个文件mkdir /newdisk,然后将硬盘挂载到这个文件下,mount /dev/sdb1 /newdisk/
         卸载:umount /dev/sdb1 或者umount newdisk
     设置可以自动挂载
         永久挂载/自动挂载:
         修改/etc/fstab实现挂载,添加完成后执行mount -a即刻生效
         注意:UUID可以换成/dev/sdb1
③、磁盘情况查询
     查询系统整体磁盘使用情况
     df -h
     查询指定目录:du -h 目录    默认查询当前目录
     -s 指定目录的磁盘占用大小汇总
     -h 带计量单位
     -a 含文件
     -c 列出明细的同时增加汇总值
以树状显示目录结构
     tree 目录    注意,默认情况下,tree并未安装
29、进程管理
①、ps显示系统的进程
     -a 显示当前终端的所有进程信息
     -u 已用户的格式显示进程信息
     -x 显示后台进程运行的参数
 ②、kill终止进程
     -9 强制停止
     kill [选项] 进程 
     killall 进程名称
     杀死多个进程:killall gedit 进程名称
 启动进程:/bin/systemctl start 进程名称
 ⑥、pstree查看进程树
     -p 显示进程的PID
     -u 显示进程的所属用户
 ⑦、服务管理,从centos7以后大部分服务管理都由systemctl负责,只有少部分指令支持service
     目前service管理的服务在/etc/init.d里面,用法:
     service 服务名 [start | stop | reload | status],例如
     service network restart
systemctl start network
⑧、开放端口:例如开放TCP的8080端口
     #firewalld -cmd –permanent –add-port=8080/tcp
     #firewalld -cmd -reload
     当然更干脆的办法,直接关掉防火墙
systemctl可以管理在/usr/lib/systemd/system下的服务,可对该目录下的服务进行开启、关闭、设置开机自启动等等
     systemctl is-enabled 服务名——————>查询某个服务是否是开机自启,对3和5两个运行级别都同时用
30、动态监控进程
①、top与ps都是用来显示正在运行的进程,与之不同的是,top在执行一段时间后可以更新正在运行的进程
     用法:top [选项]
             -d 指定top每隔几秒更新,默认是3秒
             -i 不显示任何闲置或僵尸进程
             -p 通过指定监控进程id来仅仅监控某个进程的状态
             按P键:以CPU使用率排序,默认为此项
             按M键:以内存的使用率排序
             按N键:以PID进行排序
             按Q键:退出,或者CTRL+D
             按u键:监控指定用户
             按k键:结束指定进程PID
②、netsat监控 络状态,用法:netstat
     -an :按一定的顺序排列输出
     -p :显示那个进程在调用
31、RPM与yum
rpm用于互联 下载包的打包及安装工具,它包含在某些Linux发行版中,他生成具有.RPM扩展名的文件
     rpm -qa:查询已安装的所有RPM包
     rpm -q 软件包名 :查询该软件包是否安装
     rpm -ql 软件包名 :查询软件包中的文件
     rpm -qi 软件包名 :查询该软件包的详细信息
     rpm -qf 文件全路径名 :查询文件所属的软件包,例如:
         #rpm -qf /etc/yum/
     rpm包的卸载:rpm -e rpm包的名称,强制删除可加参数–nodeps,例如:卸载wget
         #rpm -e wget
     安装rpm包,基本语法:rpm -ivh RPM包的全路径名称
         -i:install 安装
         -v:verbose 提示
         -h:hash 进度条
①、yum
     yum是一个shell前端软件包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,
     可以自动处理依赖性关系,并且一次性安装所有依赖的软件包
     yum list 查询yum服务器是否有需要安装的软件,例如:
     yum list |grep xx软件列表
     yum install -y 软件包名 下载安装某软件包(-y:回复确认)
32、MySQL安装
#mkdir /opt/mysql
 #cd /opt/mysql
 #wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar    获取MySQL
 #tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar      解压MySQL
 #rpm -qa |grep mari      查询是否有mari,
 # rpm -e –nodeps mariadb-libs-5.5.60-1.el7_5.x86_64      因为maridb与MySQL会产生冲突,
 安装相关依赖包
 # rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
 # rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
 # rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm 
 # rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
 # systemctl start mysqld.service             开启MySQL
     设置随机密码,运行grep “password”/var/log/mysqld.log可看到当前密码
三、Linux之shell
1、Linux之shell编程
shell是什么:shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便于运行程序的界面系统级程序
     用户可以用shell来启动、挂起、停止甚至编写一些程序
     #./hello.sh   执行hello.sh
2、脚本格式要求:
脚本以#!/bin/bash开头
 脚本需要有可执行权限
 #chmod u+x 脚本名
3、例如:
[root@赵庆想 opt]# vim hello.sh
 #!/bin/bash
 echo “这是一个测试文件”
 执行的时候可以这样写(未赋予可执行权限前)
  #sh hello.sh  或者使用绝对路径
 赋予权限后:
 [root@赵庆想 opt]# ./hello.sh
4、shell变量介绍
shell变量分为系统变量和用户自定义变量
     系统变量:$HOME ,$PWD ,$SHELL ,$USER等,比如:echo $HOME等等
         显示当前shell中所有变量:set
5、shell变量的定义
基本语法:
         定义变量:变量=值
         撤销变量:unset 变量
         声明静态变量:readonly变量,静态变量的特点:不能被unset
     注意:
         shell在定义变量的时候等 两边不能打空格
         变量名称可以由字母、数字、下划线组成,但是不能以数字开头
         变量名称一般习惯为大写
6、将命令的返回值赋给变量变量需要加反引 ,反引 在esc下面
例如
         A=`date`   运行里面的命令,并把结果返回给变量A
         A=`date`等价于A=$(date)
7、设置环境变量
export 变量名=变量值 ————>将shell变量输出为环境变量
 source 配置文件 ————>让修改后的配置信息立即生效
 echo $变量名 ——————>查询环境变量的值
8、位置参数变量:
当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
 基本语法
     $n:(功能描述:n代表数字,$0代表本身,$1-$9代表第一到第九个参数,十个以上的需要用大括 ,${10})
     $*:这个变量代表命令行中的所有参数,把所有的参数看为一个整体
     $@:这个变量代表命令行中的所有参数,不过$@把每个参数区分对待
     $#:这个变量代表命令行中所有参数的个数
9、预定义变量
shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
10、基本语法:
         #一后台的方式运行一个脚本
         /root/shcode/var &
         echo “最后一个后台方式运行的进程id=$!”
         echo “执行的结果是=$
         [root@赵庆想 opt]# sh 测试.sh
         当前执行的进程id=7454
         最后一个后台方式运行的进程id=7455
         执行的结果是=0 
11、运算符
基本语法:
         “$((运算式))”或”$[运算式]”或者expr m +n ————>注意空格,m和n代表数字
         例如:
             #!bin/bash
             one=$(((999+888)*8889578457478457957464785927485389898988888889))
             echo “one=$one”
             #第二种写法
             too=$[(65535+32768)*255]
             echo “too=$too”
             [root@赵庆想 opt]# sh jisuan.sh 
             one=801204074711884071
             too=25067265
12、条件判断
基本语法
         [ condition ]————>注意前后空格
         非空返回true,0为true,1为false
     常用判断条件
         = 字符串比较
         -lt 小于
         -le 小于等于
         -eq 等于
         -gt 大于
         -ge 大于等于
         -ne 不等于
13、流程控制
if判断基本语法
     if[ 条件判断式 ]
     then
     代码
     fi
     或者多分枝
     if[ 条件判断式 ]
     then
     代码
     elif [ 条件判断式 ]
     then
     代码
     fi
注意中括 之间必须有空格
四、Linux系统命令
1、日志记录
日志是重要的系统信息文件,其中记录了许多的重要系统事件
 系统常用的日志
     系统常用的日志文件通常保存在/var/log下
     boot.log   系统启动日志
     cron       记录与系统定时任务相关的日志
     lasllog       记录系统中所有用户最后一次时间的日志,二进制文件,需用lastlog命令查看
     mailog     记录邮件信息的日志
     message    记录系统重要信息的日志,他会记录Linux系统中绝大多数重要信息文件,如果系统出现问题,应该首先查看该文件
     secure     记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录
     ulmp       记录当前已经登陆的用户的所有信息,不能用vi查看,可用w、who、usrts等命令查看
2、日志管理服务rsyslogd
查询日志服务是否启动
 #ps -aux |grep rsyslog
 查询日志服务是否自启动
 # systemctl list-unit-files |grep rsyslog
3、Linux内核
Linux 0.01
4、备份(dump)与恢复(restore)
 # yum install -y dump
  # yum install -y restore
5、Linux可视化管理
  webmin和bt运维工具
         webmin是功能强大的基于web的Linux系统管理工具,管理员可通过浏览器webmin的各种管理功能
         并完成相应的操作。
             安装和配置:
                 下载地址:http://download.webmin.com/download/yum/  用下载工具下载即可
                 也可以用wget http://download.webmin.com/download/yum/webmin-1.700-1.noarch.rpm
                 # yum install -y wget
                 # wget http://download.webmin.com/download/yum/webmin-1.700-1.noarch.rpm
                 因为文件包后缀名是rpm,所以建议用下面的方法安装
                 # rpm -ivh webmin-1.700-1.noarch.rpm 
                 # /usr/libexec/webmin/changepass.pl /etc/webmin root test ——————>重置密码
                     把webmin的root用户的用户密码改为test
                 # vim /etc/webmin//miniserv.conf ——————>修改端口,
                 将port=10000修改为其他端口 ——————>出于安全考虑
                 还有监听端口(listen)尽量与port保持一致,然后再进行如下操作
                 # /etc/webmin/restart  ——————>重启webmin
                 # firewall-cmd –zone=public –add-port=3355/tcp –permanent ——————>开放端口
                 # firewall-cmd –reload ——————>更新防火墙配置
                 # firewall-cmd –zone=public –list-ports ————>查看开放的端口 
                 然后浏览器http://IP地址:端口    就可以在浏览器访问了
                 http://192.168.80.129:3355
                 进去后点击 webmin——>webmin configuration进行IP、语言等相关设置
6、bt宝塔
bt宝塔Li
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!