精华内容
下载资源
问答
  • 学习LINUX

    千次阅读 2013-03-04 21:35:07
    技术的价值不在于这个技术有多么高超,而在于技术本身给我们带来什么价值,所以很多时候我们学习一个技术,不能盲目,是为了使用这个技术,知道这个技术的使用场景,知道这个技术带来的便利性,我们才决定要深入...

    为啥我们要学习Linux

    技术的价值不在于这个技术有多么高超,而在于技术本身给我们带来什么价值,所以很多时候我们学习一个技术,不能盲目学,是为了使用这个技术,知道这个技术的使用场景,知道这个技术带来的便利性,我们才决定要深入学习。

    那我们干嘛要学习Linux?Linux能给我们带来什么价值呢,这样我们的学习才不会麻木。

    Linux给我的感觉就是稳定,免费,性能好。

    稳定,体现在哪里?我们使用PC机,安装的操作系统一般是windows xp,windows 7等,这些操作系统,如果你开一个星期,你的机器就要重启了,因为电脑会变的很慢,但是如果你用Linux,一般可以撑一个月不用重启,当前如果机器比较繁忙就例外了。这里我说的是个人PC,而很多互联网公司使用的是廉价的PC Server,目前价格是每台2-3W,PC Server和个人PC本质上没什么区别,一样的x86处理器架构,一样都是复杂指令集,只是PC Server的稳定性比个人PC高很多,性能和内存也比较高,但是代价就是开机比较久,一般要5分钟,声音也特别吵,家用买PC Server简直没法用。一般PC Server安装Linux可以维持一年不重启。

    免费,这个大家应该清楚,windows操作系统不是免费的,尤其是对企业来说,如果每台服务器都安装windows,那企业要交的操作系统的费用很可观,尤其对互联网公司来说,拥有众多的PC Server,分布全国各地,要交windows的保护费,简直是要命。而在中国,一般企业都是象征性买十几个license,交点保护费也过关了(windows有后门,不找家用电脑麻烦,企业会被找麻烦),但是如果企业比较大,效益好,机器多,十几个license也不够保护费,所以使用免费的Linux是不错的选择。

    性能上,Linux做了很多优化,例如Linux会把空闲的内存缓存文件目录,文件内容,能不用虚拟内存就不用,但是windows一定会用虚拟内存,即使内存足够。

    软件上,Linux有庞大的开源软件支持,web服务器,缓存服务器,数据库服务器,这些都是免费的选择,都是稳定成熟的产品。

    然而本人觉得Linux在服务器领域确实很强大,但是在个人电脑上,我始终觉得不好用,目前还是windows好用,即使是目前个人桌面做的最好的Linux,Ubuntu也不如windows,windows拥有良好的用户体验,操作便利,个人软件支持(例如网银)。

     

    选择一个Linux的发行版本

    学习Linux的第一件事情,就是要选择一个Linux的发行版本,在虚拟机或者物理机安装都可以了,初学者最好用虚拟机。初学Linux的第一件事情,就是看到众多的Linux分支而头晕,这到底有什么区别呢,为啥Linux不是只有一个版本,而是有很多个版本呢?其实是这样的,Linux其实是一个操作系统内核,但是一个操作系统除了内核,还有用户操作界面,应用软件,例如我们使用的windows,也有windows内核,出了windows内核,还有windows的图形界面,windows的office等应用软件。而Linux是一个免费开源的内核,每个厂家都可以去Linux内核官网http://www.kernel.org/下载内核,然后去订制自己的图形界面和应用软件,所以会出现很多Linux分支,但是内核都是一样的。

    目前Linux只要有几个分支:redhat,ubuntu,debian,suse。很多其他linux发行版本是这几个分支的衍生版本,例如国内的红旗,centos都是redhat的衍生版本。

    在服务器领域,个人觉得redhat现在做的最好,桌面领域是ubuntu最好,而我们学习Linux的最大目的是学习Linux的服务器领域,所以我推荐redhat版本。

    学校里的linux课本都比较陈旧,大部分是Redhat Linux 9的教程,但是Redhat Linux 9由于硬盘驱动关系,是无法在现在的物理机上安装的,包括本人,也受过大学课本的误导(坑爹的教科书)。

    Redhat Linux 9之后,redhat公司不在维护Redhat的开源版本,于是直接发行他的商业版本Redhat Enterprise Linux 2,目前已经有Redhat Enterprise Linux 6,但是6的稳定性还不清楚,个人推荐使用Redhat Enterprise Linux 5,请自行去网上下载Redhat Enterprise Linux 5。

    Redhat Enterprise Linux虽然说是商业版本,但是只要你安装的时候,确定你不输入序列号,你还是可以正常使用,只是不能在redhat官网更新软件而已,然后,这里就要提下CentOS了,由于Redhat Enterprise Linux是商业版本,于是CentOS这个组织就和redhat公司买了源代码,并重新编译,免费开放出来,免费让用户可以在centos官网更新软件,包括使用Redhat Enterprise Linux的系统也可以在centos的官网更新软件。大家也可能有疑问,既然centos和redhat都是一模一样,除了名字不一样,为啥不选择centos。其实没任何区别,Centos 5.5就和Redhat Enterprise Linux 5.5是一模一样的,你可以选择centos去安装,去拿redhat的教程学习。

    学习Linux的前言

    选择了Linux发行版本,你就会想如何开始学习Linux了。

    1.当然是安装Linux了,请上网自行google或者百度,下载redhat linux 5的安装光盘,然后再安装vmware,自行安装

    2.多动手,多敲命令。只看书,不实践,一切都是浮云。默认安装redhat 5,启动redhat 5是带有图形界面的,但是图形界面最好少用,对学习Linux不利,一定要尽量用字符界面,慢慢习惯。而工作中,使用Linux,使用图形界面的概率几乎是0。所以你去学习图形界面的技术价值,几乎为0,性价比不高。

    如何学习Linux

    1.学习Linux的第一件事情是学习Linux基础,这方面我推荐鸟哥的私房菜的Linux 基础文件,里面讲解了Linux的文件,磁盘,网络,进程等,看懂了这本书,并且一个个命令去实践,你就开始入门Linux了。

    2.学习Linux的第二事情就是用Linux。前面说过,Linux的最大用处是服务器领域,所以你要学的第二步是学会架设服务器,这方面我推荐鸟哥的私房菜Linux 架站文件,这本书介绍了很多服务器的假设,没有必要把全部服务器的架设步骤都看完。个人觉得可以先看完架设服务器的基础,然后再看看如何搭建web服务器,ftp服务器,telnet服务器,ssh服务器。学会这几个服务器的搭建,管理,再根据个人兴趣和需要选择其他服务器的搭建。

    3.进阶——编程。到了这里,你只是会用Linux而已,或许学会少许shell编程,能够学会简单的shell,编写脚本。但是你要进一步熟悉Linux,就要学会Linux编程。例如,Linux的管道是怎么做,Linux的deamon进程是如何实现的,为什么nohub可以让一个进程可以以daemon形式运行,即使关闭了shell也不会让这个进程也被关闭。这些,你学会了Linux环境编程,你就豁然开朗了。这里我推荐 《UNIX环境高级编程》,此书是Linux/Unix编程的圣经,堪称惊世之作。

    4.到了这里,你就可以对Linux/Unix有所了解,已经有一定的基础了,接下来你就要根据你的兴趣去选择你感兴趣的方向去学习,或许要根据你的工作方向去学习(很多时候工作不是自己的兴趣),师父领进门,修行在个人,以上的学习步骤是我能想到的最简化的步骤,学习的东西越多,只会让初学者更迷茫。

     

    备注:万事开头难,尤其是刚接触Linux的人,会感觉难以入手,如果大家需要的话,我后续会写文章,从Linux安装到简单使用,以step by step的形式贴出来,让大家少走弯路,增加学习Linux的信心,以后大家开始学习鸟哥的私房菜——基础文件篇,就事半功倍了。

    展开全文
  • 如何学习Linux

    2018-06-14 17:19:42
    如何学习Linux1.学习Linux的第一件事情是学习Linux基础,这方面我推荐鸟哥的私房菜的...前面说过,Linux的最大用处是服务器领域,所以你要的第二步是学会架设服务器,这方面我推荐鸟哥的私房菜Linux 架站文件,...

    如何学习Linux

    1.学习Linux的第一件事情是学习Linux基础,这方面我推荐鸟哥的私房菜的Linux 基础文件,里面讲解了Linux的文件,磁盘,网络,进程等,看懂了这本书,并且一个个命令去实践,你就开始入门Linux了。

    2.学习Linux的第二事情就是用Linux。前面说过,Linux的最大用处是服务器领域,所以你要学的第二步是学会架设服务器,这方面我推荐鸟哥的私房菜Linux 架站文件,这本书介绍了很多服务器的假设,没有必要把全部服务器的架设步骤都看完。个人觉得可以先看完架设服务器的基础,然后再看看如何搭建web服务器,ftp服务器,telnet服务器,ssh服务器。学会这几个服务器的搭建,管理,再根据个人兴趣和需要选择其他服务器的搭建。

    3.进阶——编程。到了这里,你只是会用Linux而已,或许学会少许shell编程,能够学会简单的shell,编写脚本。但是你要进一步熟悉Linux,就要学会Linux编程。例如,Linux的管道是怎么做,Linux的deamon进程是如何实现的,为什么nohub可以让一个进程可以以daemon形式运行,即使关闭了shell也不会让这个进程也被关闭。这些,你学会了Linux环境编程,你就豁然开朗了。这里我推荐 《UNIX环境高级编程》,此书是Linux/Unix编程的圣经,堪称惊世之作。

    4.到了这里,你就可以对Linux/Unix有所了解,已经有一定的基础了,接下来你就要根据你的兴趣去选择你感兴趣的方向去学习,或许要根据你的工作方向去学习(很多时候工作不是自己的兴趣),师父领进门,修行在个人,以上的学习步骤是我能想到的最简化的步骤,学习的东西越多,只会让初学者更迷茫。

     

    展开全文
  • 怎么学习Linux

    2018-02-04 17:53:00
    如何学习Linux 1.学习Linux的第一件事情是学习Linux基础,这方面我推荐鸟哥的私房菜的Linux ...前面说过,Linux的最大用处是服务器领域,所以你要的第二步是学会架设服务器,这方面我推荐鸟哥的私房菜Linux 架...

    如何学习Linux

    1.学习Linux的第一件事情是学习Linux基础,这方面我推荐鸟哥的私房菜的Linux 基础文件,里面讲解了Linux的文件,磁盘,网络,进程等,看懂了这本书,并且一个个命令去实践,你就开始入门Linux了。

    2.学习Linux的第二事情就是用Linux。前面说过,Linux的最大用处是服务器领域,所以你要学的第二步是学会架设服务器,这方面我推荐鸟哥的私房菜Linux 架站文件,这本书介绍了很多服务器的假设,没有必要把全部服务器的架设步骤都看完。个人觉得可以先看完架设服务器的基础,然后再看看如何搭建web服务器,ftp服务器,telnet服务器,ssh服务器。学会这几个服务器的搭建,管理,再根据个人兴趣和需要选择其他服务器的搭建。

    3.进阶——编程。到了这里,你只是会用Linux而已,或许学会少许shell编程,能够学会简单的shell,编写脚本。但是你要进一步熟悉Linux,就要学会Linux编程。例如,Linux的管道是怎么做,Linux的deamon进程是如何实现的,为什么nohub可以让一个进程可以以daemon形式运行,即使关闭了shell也不会让这个进程也被关闭。这些,你学会了Linux环境编程,你就豁然开朗了。这里我推荐 《UNIX环境高级编程》,此书是Linux/Unix编程的圣经,堪称惊世之作。

    4.到了这里,你就可以对Linux/Unix有所了解,已经有一定的基础了,接下来你就要根据你的兴趣去选择你感兴趣的方向去学习,或许要根据你的工作方向去学习(很多时候工作不是自己的兴趣),师父领进门,修行在个人,以上的学习步骤是我能想到的最简化的步骤,学习的东西越多,只会让初学者更迷茫。

     

    备注:万事开头难,尤其是刚接触Linux的人,会感觉难以入手,如果大家需要的话,我后续会写文章,从Linux安装到简单使用,以step by step的形式贴出来,让大家少走弯路,增加学习Linux的信心,以后大家开始学习鸟哥的私房菜——基础文件篇,就事半功倍了。

     

    转载于:https://www.cnblogs.com/not-alone/p/8413747.html

    展开全文
  • Linux学习手册大全

    万次阅读 多人点赞 2021-07-17 12:40:41
    Linux大全1、虚拟机安装2、虚拟机网络连接方式3、安装vmtools4、虚拟机目录4.1、目录含义4.2、Linux颜色含义5、远程登录软件6、编辑命令7、用户管理8、CentOS7找回root密码9、文件目录指令pwd指令ls指令cd指令mkdir...

    Linux大全

    1、虚拟机安装

    VMware15.5安装,傻瓜式安装,只记录变动步骤,其余都下一步,软件安装位置自己选择,最好别选c盘,软件地址https://www.nocmd.com/windows/740.html(内含激活码),安装时需要注意它文件不会在一个文件夹下,自己多建一个版本文件夹,方便管理。
    在这里插入图片描述
    在这里插入图片描述
    文件》新建虚拟机
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    点击安装计算机的设置》选择镜像后》点确定
    在这里插入图片描述
    开启虚拟机》选第一个install centos7
    在这里插入图片描述
    等待一段时间不要乱点,乱点会卡死,》软件选择》最小安装或gui服务器或gnome桌面,选好后点完成。开发中一般都选最小安装,需要什么软件在自行选择,但其它安装可以省略jdk,mysql等安装,会自行安装。
    在这里插入图片描述
    在这一步也可以选择自动配置分区,这里更快,这里我选择我要配置分区。
    在这里插入图片描述
    设置好/boot要1G,swap要2G,剩余都在根目录分区大小后,设备类型点标准分区,点完成。
    在这里插入图片描述
    点接受更改
    在这里插入图片描述
    网络和主机名设置,需要联网就打开以太网。
    在这里插入图片描述
    最后一个像一把锁的安检策略可以关闭。

    点开始安装
    在这个页面配置root账号密码,创建用户账号密码。在实际开发中root账号要复杂点,避免被破解。
    在这里插入图片描述
    等待完成后,点击重启。
    在这里插入图片描述
    在这里插入图片描述
    再把网络连接打开。

    2、虚拟机网络连接方式

    1、桥接模式:同一网段中,最多只能连接255台机子,一旦超出容易造成IP冲突。IP地址的前3位就是网段(192.168.0.1)。

    2、NAT(网络地址装换)模式:虚拟机和外部通信,不会造成IP冲突。虚拟机地址不再是以0开头,而是生成1-255之间的数,如192.168.6.1,然后主机会生成一个对应的虚拟网卡如192.168.6.6,两者能通信。这种模式下虚拟机能访问192.168.0.1,由于网段不同,192.168.0.1不能访问虚拟机。

    3、主机模式:虚拟网络对主机可见,虚拟机不能上网。

    3、安装vmtools

    vmtools工具是实现虚拟机和主机文件进行共享,两个地方都能修改同一文件。安装步骤如下

    1、右击虚拟机 install vmware tools
    2、双击VMware Tools,复制XXX.tar.gz压缩包到/opt目录下
    3、桌面上打开终端,cd /opt ,进入到opt目录下,使用解压命令tar -zxvfVM+tab键提示自动补全名称, 得到一个解压文件夹
    4、进入该vm解压的目录cd vmxxx,/opt目录下
    5、安装./vmware-install.pl
    6、全部使用默认设置即可,一直按回车,就可以安装成功
    注意:安装vmtools需有gcc ,可以使用gcc -v查看gcc版本

    共享文件夹设置

    点虚拟机设置》选项》共享文件夹》总是启用》添加》指定文件夹

    4、虚拟机目录

    4.1、目录含义

    /bin :存放着最经常使用的命令

    /home :存放普通用户的主目录,一般该目录名是以用户的账号命名

    /root :该目录为系统管理员,也称作超级权限者的用户主目录(根目录)

    /boot:Linux启动相关文件

    /lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。

    /lost+ found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件

    /etc:系统管理所需配置和子文件目录

    /user:用户应用程序和文件

    /proc[不能动]:是虚拟目录,系统内存映射,访问这个目录获取系统信息

    /srv[不能动]:存放服务启动后所需数据

    /sys[不能动]:该目录安装了2.6内核新出现的文件系统

    /tmp:存放临时文件

    /mnt:存放挂载文件

    /opt:给主机额外安装软件的目录,即软件存放目录

    /user/local:软件安装后的目标目录,一般是编译源码的方式安装的程序

    4.2、Linux颜色含义

    蓝色表示目录,白色表示文件,红色表示压缩文件,绿色表示可执行权限

    5、远程登录软件

    XShell和XFTP下载地址:网站一

    网站二推荐

    虚拟机终端输入ifconfig,找到虚拟机地址,如果找不到ip地址就重新设置网络,编辑》虚拟网络编辑器》更改设置》还原默认设置。

    6、编辑命令

    vi、vim都是编辑命令,vim是vi的增强版,它们有三种模式,一般模式,编辑模式(能输入内容),命令模式。

    一般模式:输入的内容看不见

    编辑模式:可以自由输入内容,可见

    命令模式:在文件末尾位置,可见

    命令模式》一般模式:vimvi

    一般模式》编辑模式:ioar等按键

    编辑模式》一般模式:esc

    一般模式》命令模式::/

    :wq:保存退出

    :q:不保存退出

    :q!:强制退出

    自动补全文件名:tab

    拷贝当前行(一般模式):yy,并粘贴输入p

    拷贝当前行向下的i行:iyy

    删除当前行:dd

    删除当前行向下的iidd

    在文件中查找某个单词(命令模式)敲/,回车查找,输入n就是查找下一个

    设置文件的行号(:进入命令模式):命令行下set nu

    取消文件的行号:set nonu

    使用快捷键到该文档的最末行[G]和最首行[gg](一般模式下)

    在一个文件中输入"hello"然后又撤销这个动作,一般模式下按u

    立即关机:shutdown -h now

    一分钟后关机:shutdown -h 1

    重启计算机:reboot

    获取帮助信息:man 【命令或配置文件】(按空格显示更多帮助信息)

    获取内置命令帮助信息:help 命令

    7、用户管理

    切换用户:su - 用户名

    权限高的用户切换到低权限用户不需要输入密码,反之需要。返回原来用户时,exitlogout

    添加用户:useradd 用户名

    给用户指定密码:passwd 用户名

    显示当前用户所在目录:pwd

    删除用户(保留家目录):userdel 用户名

    删除用户(删除包括家目录):userdel -r 用户名

    查询用户信息:id 用户名

    查看当前登录用户:who am i

    用户组:系统对有权限的用户同一管理

    新增组:groupadd 组名

    删除组:groupdel 组名

    新增用户直接分组:useradd -g 用户组 用户名

    修改用户组:usermod -g 用户组 用户名

    8、CentOS7找回root密码

    1、启动系统,进入开机页面,按e键进入编辑页面

    2、光标向下移动,找到以“Linux16”开头的行数,行末输入init=/bin/sh,接着按ctr+x进入单用户模式。

    3、在光标闪烁位置输入:mount -o remount,rw /,完成后回车

    4、接着输入passwd,完成后回车,输入密码后回车,再次输入密码。修改成功后会显示passwd……

    5、接着在光标位置输入:touch /.autorelabel,完成后回车,等待系统重启,新密码就生效了。

    9、文件目录指令

    pwd指令

    显示当前目录的绝对路径

    ls指令

    查看当前目录的所有内容信息:ls 【选项】【目录或文件】
    常用选项有:

    -a ,查看所有文件和目录包括隐藏文件

    -l,以列表形式显示信息

    cd指令

    切换目录:cd 【参数】

    cd~cd:回到自个家目录

    返回当前目录的上一级目录:cd ..

    mkdir指令

    创建一个目录:mkdir 创建的目录

    创建多个目录:mkdir -p /test/one

    rmdir指令

    删除一级目录:rmdir 删除的空目录

    如果删除的目录下有内容,非得删除的话使用:rm -rf 要删除的目录

    touch指令

    创建空文件:touch 文件名称

    cp指令

    cp 【选项】 源文件 目标文件

    选项:-r 递归复制整个文件夹

    强制覆盖不提示方法:\cp cp -r src dest

    rm指令

    移除文件或目录:rm 【选项】要删除的文件或目录

    常用选项:

    递归删除文件夹:-r

    强制删除不提示:-f

    mv指令

    用于移动文件与目录或重命名

    两个文件同一目录会重命名:mv 旧文件名 新文件名

    两文件不同目录会移动:mv 要移动的文件 移动到的位置

    cat指令

    查看文件内容:cat 【选项】要查看的文件

    常用选项:

    显示行号:-n

    cat只能浏览,不能修改,为浏览方便,一般会带上 管道命令|(|是或符号不是大写i,表示前一个指令结果交给后面的指令处理):|more

    例:cat -n /etc/profile | more

    more指令

    操作 功能
    空格 翻页
    回车 向下一行
    ctr+f 向下滚动一屏
    ctr+b 返回上一屏
    = 输出当前行号
    :f 输出文件名和当前行

    less指令

    less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

    分屏查看文件内容:less 要查看的文件

    操作 功能
    空格 、pagedown 向下翻页
    pageup 向上翻页
    /子串 查找字符串内容,n向下找,N向上找

    echo指令

    输出内容到控制台:echo 【选项】 【输出内容】

    head指令

    用于显示文件开头部分内容,默认只显示前10行:head 文件

    查看文件头5行:head -n 5[数字] 文件

    tail指令

    查看文件中尾部的内容,默认显示文件的尾10行内容:tail 文件

    查看文件尾5行:tail -n 5[数字] 文件

    实时追踪该文档的所有更新:tail -f 文件

    指令>和指令>>

    输出重定向(覆盖)>,追加>>

    将列表内容覆盖写入文件:ls -l > 文件

    将列表内容追加写入文件:ls -al >> 文件

    将文件1内容覆盖到文件2:cat 文件1 > 文件2

    将内容追加到文件:echo 内容 >> 文件

    ln指令

    给源文件创建一个链接:ln -s [源文件或目录] [链接名]

    history指令

    查看所有历史命令:history

    查看最近5条命令:history 5

    执行历史编号为5的命令:!5

    10、日期指令

    显示当前日期:date

    显示今年:date +%Y

    显示当前月份:date +%m

    显示当前天数:date +%d

    指定格式显示年月日时分秒:date "+%Y-%m-%d %H:%M:%S"

    设置日期:date -s 字符串日期

    查看日历:cal 【选项】,不指定选项, 默认当前月日历

    11、查找指令

    1、find指令

    find指令从指定目录向下递归遍历其各个子目录,将满足条件的文件或者目录显示在终端。
    find [搜索范围] [选项]
    常用选项
    -name<查询方式>
    按照指定的文件名查找模式查找文件
    -user<用户名>
    查找属于指定用户名所有文件
    -size <文件大小n>
    按照指定的文件大小查找文件,+n大于,-n小于,n等于,+单位k,M,G

    2、locate指令

    快速查找指定文件的路径:locate 文件

    由于该指令是基于数据库查询,第一次使用必须用updatedb指令创建数据库,

    3、which指令

    查看指令在哪个目录下:which 指令

    4、grep指令

    过滤查找:grep 【选项】 查找内容 源文件

    -n:显示匹配行和行号

    -i:忽略字母大小写

    12、压缩解压指令

    1、gzip和gunzip指令

    压缩文件:gzip 文件,只能将文件压缩为*.gz格式

    解压文件:gunzip 需要解压的文件.gz

    2、zip和unzip指令

    项目打包发布时常用命令

    压缩文件:zip 【选项】 XXX.zip

    常用选项-r:递归压缩目录

    解压文件:unzip 【选项】 XXX.zip

    常用选项-d 目录:指定解压后文件存放目录

    3、tar指令

    既可打包又可解压,打包后文件后缀是.tar.gz

    打包目录:tar 【选项】 XXX.tar.gz

    常用选项 功能
    -c 产生.tar打包文件
    -z 打包同时压缩
    -x 解包.tar文件
    -v 显示详细信息
    -f 指定压缩后的文件名

    例:

    压缩多文件:tar -zcvf dc.tar.gz /hmoe/bbb/cat.txt /home/bbb/dog.txt

    将bbb文件夹压缩成myb.tar.gz:tar -zcvf myb.tar.gz bbb

    将文件解压到当前目录:tar -zxvf myb.tar.gz

    将myb.tar.gz解压到tom目录下:tar -zxvf myb.tar.gz -C tom

    13、Linux组

    一个文件有个所有者,所有者又归于一个组。

    13.1、所有者和组

    所有者:文件谁创建就归谁所有

    查看文件所有者:ls -ahl

    修改所有者:chown 用户名 文件
    在这里插入图片描述
    组的创建:groupadd 组名

    新增用户直接分组:useradd -g 用户组 用户名

    修改文件所在组:chgrp 组名 文件名

    其他组:除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
    改变用户所在组(需要root的管理权限)

    1. usermod -g 新组名 用户名
    2. usermod -d 目录名 用户名 (改变该用户登陆的初始目录,注意这里的用户需要有进入新目录的权限)

    13.2、权限介绍

    Is -I中显示的内容如下:
    d rwx r-x r-x. 2 root root 53 7月 9 20:08 bbb
    0-9位说明
    1.第0位确定文件类型(d,-,I,c,b)

    d是目录,相当于windows的文件夹
    -是普通文件
    l是链接,相当于windows的快捷方式
    c是字符设备文件,如鼠标,键盘
    b是块设备,比如硬盘
    

    2.第1- 3位rwx该文件的所有者拥有该文件的权限。——User
    3.第4 - 6位r-x所属组的用户拥有该文件的权限。——Group
    4.第7 - 9位r-x其他用户拥有该文件的权限——Other

    rwx作用:r表示读,w表示写,x表示可执行(作用到文件是可执行,作用到目录是可进入)

    其他说明:

    数字2 :文件数和子目录数和

    第一个root所有者,第二个root所在组

    53:文件大小(字节),如果是文件夹,显示4096字节

    7月 9 20:08:文件最后修改日期

    13.3、修改权限chmod

    方式一:+、一、=变更权限

    u:所有者,g:所有组,o:其他用户,a:所有人

    给文件的所有者读写执行权限,给所在组读执行权限,给其他用户执行权限:chmod u=rwx,g=rx,o=x 文件/目录名
    给其他人增加写权限:chmod o+w 文件/目录名/所有者/所有组

    该文件不让所有人执行:chmod a-x 文件/目录名/所有者/所有组

    方式二:数字变更权限

    r=4,w=2,x=1

    chmod u=rwx,g=rx,o=x 文件/目录名 相当于 chmod 751 文件/目录名

    13.4、修改文件所有者

    改变所有者:chown 改成的所有者 文件/目录

    改变所有者和所在组:chown 新所有者:新所有组 文件/目录

    14、定时任务调度

    任务调度:系统在某个时间执行特定的命令或程序。

    14.1、任务调度分类

    1.系统工作:某些重要工作周而复始的进行,如病毒查杀

    2.个别用户工作:个别用户执行某些程序,如打开qq

    定时任务的设置:crontab [选项]

    选项 功能
    -e 编辑crontab定时任务
    -l 查询当前任务调度
    -r 删除当前用户所有的定时任务

    14.2、重启任务调度

    service crond restart

    crontab -e 回车然后输入 */1 * * * * ls

    *号位置 含义
    第一个 一小时当中的第几分钟(分钟)
    第二个 一天当中的第几小时(小时)
    第三个 一月当中的第几天(天)
    第四个 一年中第几个月(月)

    | 第五个 | 一周当中的星期几
    范围0-7 ( 0和7都代表星期日) |

    特殊符号说明

    特殊符号 含义
    * 表示任何时间,比如第一个*,表示一小时每分钟执行一次
    , 表示不连续时间,比如“0 8,10 * * * * 命令”,表示每天8点0分,10点0分执行一次命令
    - 表示连续的时间范围,比如“0 2 * * 1-6 命令”,表示周一到周六凌晨2点执行命令
    */n 表示每隔多久执行一次,比如“*/10 * * * * 命令”,表示没10分钟执行一次命令

    特定时间执行案例
    在这里插入图片描述

    14.3、at定时任务

    at命令是一次性定时计划任务 ,at的守护进程atd会以后台模式运行,检查作业队列来运行。默认情况下, atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间四配,则运行此作业。at命令只执行一次。
    在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看

    检测当前进程有哪些:ps -ef

    检测acd进程是否在运行:ps -ef | grep atd

    命令格式:at 【选项】【时间】,ctr+d结束at命令输入

    选项 功能
    -m 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
    -I atq(显示系统中待执行的任务列表)的别名
    -d atrm(删除待执行任务队列中的任务)的别名
    -v 显示任务将被执行的时间
    -V 显示版本信息
    -c 打印任务的内容到标准输出
    -q 队列 使用指定的队列
    -f 文件 从指定文件读入任务而不是从标准输入读入
    -t 时间参数 以时间参数的形式提交要运行的任务

    14.4、at指定时间的方式

    1、hh:mm(小时:分钟)24小时制指定时间,如果该时间已过,会放到第二天执行。

    2、使用midnight (深夜), noon (中午), teatime (饮茶时间,一般是下午4点)等模糊词来指定时间。
    3、采用12小时计时制,即在时间后面加上am (上午)或pm (下午)来说明是上午还是下午。
    4、指定命令执行的具体日期,指定格式为month day(月日)或mm/dd/yy (月/日/年)或dd.mm.yy
    (日.月.年) ,指定的日期必须跟在指定时间的后面。 例如: 09:00 2021-07-1
    5、使用相对计时法。指定格式为: now + count time- units , now就是当前时间, time-units是时间单位,这里能够是minutes、hous、days、weeks。count是时间的数量,几天,几小时。例如 : now + 5 minutes
    6、直接使用today (今天)、tomorrow (明天)来指定完成命令的时间。

    例1:一天后凌晨12点执行 /bin/ls /home

    at 12am + 1 day,然后输入/bin/ls /home,接着ctr+d

    例2 : atq命令来查看系统中没有执行的工作任务
    在这里插入图片描述

    例3 : 2分钟后,输出时间到指定文件内比如/root/date200.log
    在这里插入图片描述
    例4 :删除已经设置的任务, atrm 编号

    atrm 1

    15、Linux磁盘分区

    15.1、分区原理

    Linux来说无论有几个分区,分给哪一目录使用,归根结底就只有一个根目录,一个独立且唯一的
    文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
    Linux采用了一种叫“载入的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一
    个分区和一个目录联系起来。一个分区挂载一个目录。

    15.2、硬盘说明

    1.Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
    2.对于IDE硬盘,驱动器标识符为"hdx~" ,其中"hd" 表明分区所在设备的类型,这里是指IDE硬盘。“x"为盘号( a为基本盘, b为基本从属盘,c为辅助主盘,d为辅助从属盘)。~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。
    3.对于SCSI面则标识为"sdx~” , SCSI硬盘是用"sd" 来表示分区所在设备的类型的,其余的和IDE硬盘的表示方法一样。

    查看设备挂载情况:lsblk或lsblk -f
    在这里插入图片描述

    查询磁盘使用情况:df -h 【/目录】,不写目录默认查询当前目录

    统计/opt下文件个数:ls -l /opt | grep "^-" | wc -l(^-是以-开头的文件,wc统计个数)

    统计/opt下目录个数:ls -l /opt | grep "^d" | wc -l

    统计/opt文件夹下文件的个数,包括子文件夹里的:ls -lR /opt | grep "^-" | wc -l

    统计/opt文件夹下目录的个数,包括子文件夹里的:ls -lR /opt | grep "^d" | wc -l

    以树状显示目录结构:tree 目录,注意默认是没有安装tree的,安装要root权限,安装tree命令:yum install tree

    16、网络配置

    IP地址配置

    1、自动获取

    2、指定IP地址,避免虚拟机因自动获取IP造成地址变更,导致找不到

    修改指定IP命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33

    修改内容如下

    BOOTPROTO=static
    #IP地址
    IPADDR=192.168.200.66
    #网关
    GATEWAY=192.168.200.2
    #域名解析器
    DNS1=192.168.200.2
    

    虚拟机改完IP地址后,vmnet8也要修改在同一网段192.168.200.X,只有在同一网段中才能ping通。

    虚拟机工具栏下》编辑》虚拟网络编辑器》修改子网IP》应用》确定
    在这里插入图片描述
    重启网络服务或重启Linux系统生效:service network restart 或 reboot

    查看主机名:hostname

    修改主机名:vim /etc/hostname,之后需要reboot重启生效

    设置hosts映射

    设置目的是为了通过主机名来ping通

    Windows下:找到C:\Windows\System32\drivers\etc\hosts 文件指定即可,

    指定内容:192.168.200.200 smile200

    Linux下:/etc/hosts 文件指定,内容:192.168.200.200 smile

    17、进程管理

    程序:静态的,是躺在硬盘上。

    进程:动态的,程序运行在内存中就是进程。

    线程:进程的不同执行路径。

    每个进程都可能以两种方式存在的。前台和后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束。

    17.1、查看当前系统中哪些进程正在执行

    ps  【选项】
    

    PS -aux执行后,参数含义
    在这里插入图片描述

    参数 含义

    USER 用户

    PID 进程号

    %CPU 执行命令时候进程占用的CPU

    %MEM 执行命令时候进程占用的CPU

    VSZ 进程占用虚拟内存的大小(单位kb)

    RSS 进程占用物理内存的大小(单位kb)

    TTY 终端机号

    STAT 运行状态

    ​ R: 正在运行

    ​ S:睡眠

    ​ D:短期等待

    ​ T:被跟踪或者被停止

    ​ Z:僵死进程(进程可能死掉,没有释放)

    ​ s:该进程是会话的先导进程

    ​ +:该进程为前台进程

    ​ l:该进程是多线程进程

    ​ N:低优先级进程

    ​ <:高优先级进程

    ​ []:表示这个一个内核线程

    START 执行开始的时间

    TIME 进程消耗cpu的时间

    COMMAND 进程名,执行该进程的指令

    全格式显示所有进程,查看父进程:ps -ef

    UID:用户名

    PPID:父进程

    C : CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;
    数值越小,表明进程是I/O密集型运算,执行优先级会提高

    STIME:进程启动时间

    CMD:启动进程所用命令和参数

    其余和上面一样

    选项 功能
    -a 显示当前终端的所有进程信息
    -u 以用户的格式显示进程信息
    -x 显示后台进程运行的参数
    -e 显示所有进程
    -f 全格式

    17.2、终止进程

    kill 【选项】 进程号

    killall 进程名称

    常用选项:-9:强迫进程立即停止

    17.3、查看进程树

    pstree 【选项】
    常用选项
    -p :显示进程的PID
    -u :显示进程的所属用户

    17.4、服务管理

    service管理指令

    service 服务名 [start I stop | restart | reload | status]
    在CentOS7.0后很多服务不再使用service ,而是systemctl
    查看服务名
    查看全部系统服务:setup

    带*号的服务是自动启动的,光标移至 * 号,按空格就会删除,按tab键进行切换。
    在这里插入图片描述
    查看service指令管理的服务:ls -l /etc/init.d

    17.5、指定运行级别

    CentOS7后运行级别说明
    指定运行级别:init 数字0-6,常用运行级别是3和5

    级别说明

    0:关机
    1:单用户(找回丢失密码用)
    2:多用户状态无网络
    3:多用户状态有网络
    4:系统未使用保留给用户
    5:图形界面
    6:虚拟机重启

    在/etc/initab进行了简化, 如下:
    multi-user.target: analogous to runlevel 3
    graphical.target : analogous to runlevel 5

    查看当前的运行级别是什么:systemctl get-default

    修改运行级别:systemctl set-default multi-user.target

    17.6、chkconfig指令

    查看服务:chkconfig --list [| grep xxx]

    给服务在指定的运行级别下设置开关:chkconfig --level 5 服务名 on/off

    注意:使用了chkconfig指令服务自启或关闭,需要reboot重启生效

    17.7、systemctl指令

    语法:systemctl 服务名 [start I stop | restart | reload | status]

    查看管理的服务:ls -l /usr/lib/systemd/system

    systemctl设置服务的自启动状态

    1. systemctl list-unit-files [ I grep服务名] (查看服务开机启动状态)

    2. systemctl enable 服务名(设置服务开机启动)

    3. systemctl disable 服务名(关闭服务开机启动)

    4. systemctl is-enabled 服务名(查询某个服务是否是自启动的)

    例:查看当前防火墙的状况,关闭防火墙和启动防火墙

    1.systemctl status firewalld.service

    2.systemctl stop firewalld.service

    3.systemctl start firewalld.service

    17.8、防火墙

    在这里插入图片描述

    防火墙打开情况下,xshell6访问Linux需要打开22端口号,不然访问不到。防火墙关闭后,xshell6可以直接访问,不需要打开端口号。

    打开或者关闭指定端口
    在真正的生产环境,往往需要将防火墙打开,但此时外部请求数据包却不能跟服务器监听端口通讯。这时需要打开指定的端口,比如80、22、 3306等。

    17.8.1、firewall指令

    打开端口: firewall-cmd --permanent --add-port=端口号/协议
    关闭端口: firewall-cmd --permanent --remove-port=端口号/协议
    重新载入才能生效: firewall-cmd --reload
    查看所有开放端口:firewall-cmd --zone=public --list-port
    查询端口是否开放: firewall-cmd --query-port=端口/协议

    17.9、动态监控进程

    top与ps命令相似,都是用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。

    指令:top 【选项】

    选项 功能
    -d 秒速 指定top命令每隔几秒更新,默认3秒
    -i 使top不显示任何闲置或者僵死进程
    -P 通过指定监控进程ID来仅仅监控某个进程的状态

    在这里插入图片描述

    交互操作说明

    操作 功能
    P 以CPU使用率排序,从大到小,默认就是此项
    M 以内存的使用率排序,从大到小
    N 以PID排序,从大到小
    Q或q 退出top

    例1:监视特定用户,比如我们监控tom用户
    top命令下,输入“u"回车,再输入用户名,输错可按向下键清空。
    例2 :终止指定的进程
    top命令下,输入"k"回车,再输入要结束的进程ID号

    18、rpm和yum

    18.1、rpm

    rpm用于下载包的打包及安装工具,它生成具有.rpm扩展名的文件。RPM是RedHat Package Manager ( RedHat软件包管理工具)的缩写,类似windows的setup.exe。

    查询所有安装rpm软件包:rpm -qa

    查询软件包是否安装:rpm -q 软件包名

    查询软件包信息:rpm -qi 软件包名

    查询软件包中的文件:rpm -ql 软件包名

    查询文件所属的软件包:rpm -qf 文件全路径名

    卸载软件包:rpm -e 软件包

    安装软件包:rpm -ivh 安装的全路径

    18.2、yum

    yum是个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。

    查询yum服务器是否有需要安装的软件:yum list l grep xx软件列表

    安装指定的yum包:yum install xx下载安装

    19、Java环境安装

    19.1、jdk安装

    安装步骤
    1、创建jdk文件夹:mkdir /opt/jdk
    2、通过xftp传输Linux版本的jdk安装包到/opt/jdk目录下
    3、进入jdk目录:cd /opt/jdk
    4、解压jdk安装包:tar -zxvf jdk-8u261-linux-x64.tar.gz
    5、创建java文件夹:mkdir /usr/local/java
    6、移动jdk安装文件:mv /opt/jdk/jdk1.8.0_261/ /usr/local/java/
    7、配置环境变量:vim /etc/profile
    8、在profile文末添加

    export JAVA_HOME=/usr/local/java/jdk1.8.0_261
    export PATH=$JAVA_HOME/bin:$PATH
    

    9、让编辑过的环境变量生效:source /etc/profile

    19.2、Tomcat安装

    安装步骤

    1、新建tomcat目录:mkdir /opt/tomcat

    2、通过xftp传输Linux版本的tomcat安装包到/opt/tomcat目录下

    3、进入tomcat目录:cd /opt/tomcat

    4、解压tomcat安装包:tar -zxvf apache-tomcat-8.5.69.tar.gz ,下载core核心包地址https://tomcat.apache.org/download-80.cgi
    5、进入tomcat的bin目录:cd apache-tomcat-8.5.69/bin,启动tomcat:./startup.sh
    6、开放端口8080

    防火墙打开8080端口号:firewall-cmd --permanent --add-port=8080/tcp

    重新载入生效:firewall-cmd --reload

    测试是否打开端口号:firewall-cmd --query-port=8080/tcp

    也可以通过虚拟机ip地址:8080/,查看是否可以登录tomcat首页。

    19.3、MySQL安装

    1、新建mysq文件夹,并进入:mkdir /opt/mysql

    2、Xftp将安装包传输到/opt/tomcat目录下,

    下载地址 https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar,

    或直接执行:wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

    3、进入tomcat目录:cd /opt/mysql

    4、解压tomcat安装包:tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

    5、查询mariadb: rpm -qa | grep mari。注意centos7.6自带的类mysql数据库是mariadb,会跟mysql冲突,要先删除。

    5、卸载mariadb:rpm -e --nodeps mariadb-libs ,rpm -e --nodeps marisa

    6、开始安装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 
    

    7、启动服务:systemctl start mysqld.service

    8、开始设置root密码

    Mysql自动给root用户设置随机密码,运行grep “password” /var/log/mysqld.log可看到当前密码
    在这里插入图片描述
    运行mysql -u root -p,复制粘贴输入上述密码

    开发环境中密码要复杂,平时自己用就设简单密码,避免不能输入简单需修改设置策略,默认值为1,带分号输入。

    mysql密码设置有三种策略:0策略密码设置最低8位,1策略要求长度,数字,大小写,特殊符号,3策略在2的基础上还多了个字典文件。

    set global validate_password_policy=0;
    

    最后开始设置密码,带分号

    set password for 'root'@'localhost' = password('root6666');
    

    9、运行如下命令使密码生效

    flush privileges;
    

    20、Shell编程

    Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

    20.1、Shell脚本执行方式

    • 脚本格式要求

      脚本以#!/bin/bash开头,需要可执行权限

    例:创建shell脚本,输出hello world
    在这里插入图片描述
    在这里插入图片描述

    • 常用执行方式

      方式1:输入脚本的绝对路径或相对路径(./xxx.sh)
      说明:首先要赋予hello.sh脚本的 +x权限,再执行脚本

      方式2:sh+脚本
      说明:不用赋予脚本 +x权限,直接执行即可。
      在这里插入图片描述

    20.2、shell变量

    介绍
    1)Linux Shell中的变量分为系统变量和自定义变量。
    2)系统变量: $HOME等
    3)显示当前shell中所有变量: set
    shell变量的定义
    基本语法

    1. 定义变量:变量名=值

    2. 撤销变量: unset 变量

    3. 声明静态变量 : readonly 变量,静态变量不能unset

    变量定义实操

    #!/bin/bash
    #定义变量A
    A=100
    #输出变量需加上$
    echo A=$A
    echo "A=$A"
    #撤销变量,变量A便没了
    unset A
    echo A=$A
    #声明静态的变量B=2
    readonly B=2
    echo "B=$B"
    C=`date`
    D=$(date)
    echo C=$C
    echo D=$D
    

    定义变量的规则
    1.变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
    2.等号两边不能有空格
    3.变量名称一般习惯为大写,这是一个规范,虽然小写也可运行。

    将命令的返回值赋给变量

    A=`date`反引号,运行里面的命令,并把结果返回给变量A,如果没有反引号表示的是将单词date给A
    A=$(date)等价于上面的语句
    

    20.2.1、设置环境变量(全局变量)

    基本语法

    export 变量名=变量值 (功能描述:将shell变量输出为环境变量)
    source 配置文件 (功能描述:让修改后的配置信息立即生效)
    echo $变量名 (功能描述:查询环境变量的值)
    案例
    在/etc/profile文件中定义TOMCAT_ HOME环境变量,profile文件修改后,需刷新生效

    vim /etc/profile
    输入如下内容
    #定义一个tomcat环境变量
    export TOMCAT_HOME=/opt/tomcat
    保存退出
    刷新profile
    source /etc/profile
    

    查看环境变量TOMCAT HOME的值

    echo $TOMCAT_HOME
    

    shell多行注释

    :<<!
    注释内容
    !
    

    20.2.2、位置参数变量

    • 用途

    当我们执行一个shell脚本时 ,如果希望获取到命令行的参数信息,就可以使用到位置参数变量

    • 基本语法

      $n ( 功能描述: n为数字, $0代表命令本身,$1-$9代表第一到第九个参数, 10以上的参数需要用大括号包含,如${10}
      $* (功能描述:命令行中所有的参数,$*把所有参数看成一个整体)
      $@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待,分别输出)
      $# (功能描述:命令行中所有参数的个数)
      

    案例:编写一个shell脚本position.sh,在脚本中获取到命令行的各个参数信息。

    vim myshell.sh
    输入如下内容
    #!/bin/bash
    echo "0=$0 1=$1 2=$2"
    echo "所有的参数=$*"
    echo "$@"
    echo "参数的个数=$#"
    sh myshell.sh 10 20
    

    在这里插入图片描述

    20.2.3、预定义变量

    含义:事先定义好的变量,直接在脚本中使用

    基本语法

    $$(功能描述:当前进程的进程号(PID)
    $! (功能描述:后台运行的最后一个进程的进程号( PID) )
    $? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一 个命令正确执行;
        如果这个变量的值为非0 (具体是哪个数,由命令自己来决定), 则证明上一个命令执行不正确了。)
    

    应用实例
    在一个shell脚本中简单使用一下预定义变量

    vim preVar.sh 
    输入内容
    #!/bin/bash
    echo "当前进程的进程id=$$"
    #以后台方式运行脚本,并获取进程ID
    /root/shcode/myshell.sh &
    echo "最后一个进程的进程号id=$!"
    echo "将执行结果返回=$?"
    

    20.3、运算符

    基本语法

    $((表达式))或 $[表达式] 或expr m + n
    注意expr(expression表达式简写)运算符间要有空格,m,n为数字。
    希望某个结果赋值给变量,使用``反引号,单引号就相当于字符串拼接
    expr m - n
    expr \*(乘),/(除),%(取余)
    

    应用实例

    #!/bin/bash
    #案例1:计算(2+3)*4的值
    #方式1
    RES1=$(((2+3)*4))
    echo "res1=$RES1"
    #方式2,推荐使用
    RES2=$[(2+3)*4]
    echo "res2=$RES2"
    #方式3
    TEMP=`expr 2 + 3`
    RES3=`expr $TEMP \* 4`
    echo "temp=$TEMP"
    echo "res3=$RES3"
    #案例2:请求出命令行的两个参数的和
    SUM=$[$1+$2]
    echo "sum=$SUM"
    

    在这里插入图片描述

    20.4、条件判断

    判断语句基本语法
    [ condition ] (注意condition前后要有空格)
    #非空返回true ,可使用$?验证( 0为true , > 1为false )

    应用实例
    [ smile ] ,返回true
    [ ],返回false
    [ condition ] && echo OK II echo notok,条件满足,执行后面的语句

    常用判断条件

    1)=字符串比较
    2)两个整数的比较
    -It 小于
    -le 小于等于
    -eq 等于
    -gt 大于
    -ge 大于等于
    -ne 不等于
    3)按照文件权限进行判断
    -r 有读的权限
    -w 有写的权限
    -x 有执行的权限
    4)按照文件类型进行判断
    -f 文件存在并且是一 个常规的文件
    -e 文件存在
    -d 文件存在且是一个目录

    20.5、流程控制

    20.5.1、if使用

    基本语法

    #单分支
    if [ 条件判断 ]
    then
    代码
    fi
    
    #多分支
    if [ 条件判断 ]
    then
    代码
    elif [ 条件判断 ]
    then
    代码
    fi
    

    注意事项:[ 条件判断 ],中括号和条件之间必须有空格

    案例

    #!/bin/bash
    #如果输入的参数,大于等于60,则输出及格了,如果小于60,则输出不及格
    if [ $1 -ge 60  ]
    then  
            echo  "及格了"
    elif [ $1 -lt 60  ]
    then
            echo "不及格"
    fi
    

    在这里插入图片描述

    20.5.2、case语句

    基本语法

    case $变量名 in
    "值1")
    如果变量的值等于值1 ,则执行程序1
    ;;两分号代表结束
    "值2")
    如果变量的值等于值2,则执行程序2
    ;;
    其他分支
    *)
    如果变量的值都不是以上的值,则执行此程序
    ;;
    esac
    

    案例

    #!/bin/bash
    #当命令行参数是1时,输出"周一"是2时,就输出"周二”,其它情况输出"other" 
    case $1 in
    "1")
            echo "周一"
    ;;
    "2")
            echo "周二"
    ;;
    *)
            echo “other”
    ;;
    esac
    

    在这里插入图片描述

    20.5.3、for使用

    基本语法

    语法1:
    for 变量 in 值1 值2 ...
    do
    代码
    done
    
    语法2:
    for (( 始值;循环控制条件;量变化 ))
    do
    代码
    done
    

    应用实例

    案例1:打印命令行输入的参数

    #!/bin/bash
    #$*输出方式  
    for i in "$*"
    do 
            echo "num is $i"
    done
    #$@方式
    echo "==========="
    for j in "$@"
    do 
            echo "num is $j"
    done
    

    案例2:从1加到100的值输出显示

    #!/bin/bash
    SUM=0
    for(( i=1; i<=100; i++  ))
    do
    SUM=$[$SUM+$i]
    done
    echo "sum=$SUM"
    

    20.5.4、while使用

    基本语法

    while [ 条件判断式 ]
    do
    代码
    done
    

    案例:从命令行输入一个数n,统计从1+……n的值是多少?

    #!/bin/bash
    SUM=0
    i=0
    while [ $i -le $1 ]
    do
            SUM=$[$SUM+$i]
            i=$[$i+1]
    done
    echo "结果=$SUM"
    

    20.5.5、read读取控制台输入

    基本语法
    read [选项] [参数]
    选项:
    -p:指定读取值时的提示符;
    -t:指定读取值时等待的时间(秒), 如果没有在指定的时间内输入,就不再等待。
    参数
    变量:指定读取值的变量名
    应用实例

    #!/bin/bash
    #案例1 :读取控制台输入一个num1值
    read -p "请输入指定的num1=" NUM1
    echo "输入的num1=$NUM1"
    #案例2 :读取控制台输入一个num2值,在5秒内输入
    read -t 5 -p "请输入num2=" NUM2
    echo "输入的num2=$NUM2"               
    

    在这里插入图片描述

    20.6、函数

    系统函数
    basename基本语法

    basename [pathname] [suffix](功能:返回完整路径最后/的部分,常用于获取文件名)
    basename [string] [suffix]  (功能:basename命令会删掉所有的前缀包括最后一个/,然后将字符串显示出来)
    suffix为后缀,如果suffix被指定了, basename会将pathname或string中的suffix去掉。
    

    dirname基本语法

    dirname 文件绝对路径 (功能描述:绝对路径中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))

    自定义函数

    基本语法

    [function] funname (参数){
      Action;
      [return int;]
    }
    []表示可有可无
    调用直接写函数名: funname [值]
    

    应用实例

    #!/bin/bash
    #案例:计算输入两个参数的和,getSum
    function getSum(){
            sum=$[$n1+$n2]
            echo "和是=$sum"
    }
    #输入两个值
    read -p "第一个值=" n1
    read -p "第二个值=" n2
    #调用函数
    getSum $n1 $n2
    

    在这里插入图片描述

    20.7、数据备份案例

    需求分析
    1.每天凌晨2:30备份数据库smile到/data/backup/db
    2.备份开始和备份结束能够给出相应的提示信息
    3.备份后的文件要求以备份时间为文件名,并打包成.tar.gz的形式,比如: 2021-07-15 230201.tar.gz
    4.在备份的同时,检查是否有7天前备份的数据库文件,如果有就将其删除。

    vim /usr/sbin/mysql_db_backup.sh 内容如下

    #!/bin/bash
    #备份目录
    BACKUP=/data/backup/db
    #当前时间
    DATATIME=$(date +%Y-%m-%d_%H%M%S)
    #数据库地址
    HOST=localhost
    #数据库用户名
    DB_USER=root
    #数据库密码
    DB_PW=root6666
    #备份的数据库名
    DATABASE=smile
    #创建备份目录,不存在就创建
    [ ! -d "${BACKUP}/${DATATIME}" ] && mkdir -p "${BACKUP}/${DATATIME}"
    #备份数据库
    echo "开始备份数据库${DATABASE}"
    mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --databases ${DATABASE} | gzip > ${BACKUP}/${DATATIME}/$DATATIME.sql.gz
    #将备份文件夹处理成.tar.gz的格式
    cd ${BACKUP}
    tar -zcvf $DATATIME.tar.gz ${DATATIME}
    #删除对应的备份目录
    rm -rf ${BACKUP}/${DATATIME}
    #删除7天前的备份
    find ${BACKUP} -atime +7 -name "*.tar.gz" -exec rm -rf {} \;
    echo "备份数据库${DATABASE}成功"
    

    定时脚本

    命令行敲crontab -e ,接着输入如下内容

    30 2 * * * /usr/sbin/mysql_db_backup.sh
    

    在这里插入图片描述

    效果图
    在这里插入图片描述

    21、日志管理

    21.1.系统常用日志

    标红的是重点
    在这里插入图片描述

    日志管理服务rsyslogd

    CentOS7.6日志服务是rsyslogd , CentOS6.x 日志服务是syslogd。rsyslogd 功能更强大,和syslogd兼容。

    查询rsyslogd服务是否启动:ps aux | grep "rsyslog" | grep -v "grep"
    grep -v "grep"表示反向选中前面过滤的内容
    
    查询rsyslogd服务的自启动状态(enable)
    systemctl list-unit-files | grep rsyslog
    

    配置文件: /etc/rsyslog.conf

    编辑文件时的格式为:*.* ,存放日志文件
    其中第个*代表日志类型,第二个代表日志级别

    日志类型分为

    auth					##pam产生的日志
    authpriv				##ssh、ftp等登录信息的验证信息
    corn					##时间任务相关
    kern					##内核
    Ipr						##打印
    mail					##邮件
    mark(syslog)-rsyslog	##服务内部的信息 ,时间标识
    news					##新闻组
    user					##用户程序产生的相关信息
    uucp 					##unix to nuix copy主机之间相关的通信
    local 1-7				##自定义的日志设备
    

    日志级别分为

    debug		##有调试信息的,日志通信最多
    info		##一般信息日志 ,最常用
    notice		##最具有重要性的普通条件的信息
    warning		##警告级别
    err			##错误级别,阻止某个功能或者模块不能正常工作的信息
    crit		##严重级别,阻止整个系统或者整个软件不能正常工作的信息
    alert		##需要立刻修改的信息
    emerg		##内核崩溃等重要信息
    none		##什么都不记录
    注意:从上到下,级别从低到高,记录信息越来越少
    

    日志文件格式有4列信息

    1.事件产生的时间
    2.产生事件的服务器的主机名
    3.产生事件的服务名或程序名
    4.事件的具体信息
    在这里插入图片描述

    21.2、自定义日志

    自定义日志添加在/etc/rsyslog.conf ,编辑内容如图
    在这里插入图片描述

    21.3、日志轮替

    日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围之后,就会进行删除。

    日志轮替文件命名

    1)centos7使用logrotate进行日志轮替管理,要想改变日志轮替文件名字,通过/etc/logrotate.conf配置文件中"dateext" 参数:
    2)如果配置文件中有"dateext" 参数,那么日志文件以日期后缀 ,例如"secure-20210716"。此时不会重名,只需要指定保存日志个数,删除多余的日志文件即可。
    3)如果配置文件中没有"dateext" 参数,那么日志文件就需要改名。当第一次进行日志轮替时,当前"secure"日志会自动改名为"secure.1",然后新建”secure"日志,用来保存新日志。当第二次进行日志轮替时,” secure.1”会自动改名为"secure.2" ,当前的"secure" 日志会自动改名为"secure.1”, 然后也会新建"secure"日志,用来保存新的日志,以此类推。

    4、查看内存日志

    journalctl		##查看全部
    journalctl -n 3 ##查看最新3条
    journalctl --since 19:00 - until 19:10:10 #查看起始时间到结束时间的日志可加日期
    journalctl -p err ##报错日志
    journalctl -o verbose ##日志详细内容
    journalctl_PID=1245 COMM=sshd ##查看包含这些参数的日志 (在详细日志查看)
    或者journalctl| grep sshd
    注意: journalctl查看的是内存日志,重启清空
    

    22、数据备份和恢复

    安装dump和restore

    yum -y install dump
    yum -y install restore
    

    使用dump备份

    • 基本介绍
      dump支持分卷和增量备份(所谓增量备份是指备份上次备份后修改/增加过的文件,也称差异备份)。

    • dump语法说明

      dump [ cu] [-123456789] [ -f <备份后文件名>] [-T <日期>] [ 目录或文件系统]
      dump []-wW
      -C :创建新的归档文件,并将由一个或多个文件参数所指定的内容写入归档文件的开头。
      -0123456789 :备份的层级。0为最完整备份,会备份所有文件。若指定0以上的层级,则备份至上一次备份以来
      修改或新增的文件,到9后,可以再次轮替。
      -f <备份后文件名> :指定备份后文件名
      -j :调用bzlib库压编备份文件,也就是将备份后的文件压缩成bz2格式,让文件更小
      -T <日期> : 指定开始备份的时间与日期
      -u :备份完毕后,在/etc/dumpdares中记录备份的文件系统,层级,日期与时间等。
      -t :指定文件名,若该文件已存在备份文件中,则列出名称
      -W :显示需要备份的文件及其最后一次备份的层级,时间,日期。
      -w :与-W类似,但仅显示需要备份的文件。
      

    dump案例
    案例1
    将/boot分区所有内容备份到/opt/boot.bak0.bz2文件中,备份层级为"0"

    dump -0uj -f /opt/boot.bak0.bz2 /boot
    

    案例2
    在/boot目录下新增文件,备份层级为"1”(只备份上次使用层次"0"备份后发生过改变的数据)

    dump -1uj -f /opt/boot.bak1.bz2 /boot
    

    dump备份文件或者目录
    在备份分区时,是可以支持增量备份的。但如果备份目录或文件,不再支增量备份即只能使用0级别备份。
    案例3
    使用dump备份/etc整个目录

    dump -0j -f /opt/etc.bak.bz2 /etc/
    

    使用restore恢复数据

    基本介绍
    restore命令用来恢复已备份的文件,可以从dump生成的备份文件中恢复原文件
    restore基本语法

    restore [模式选项] [选项]
    说明下面四个模式,不能混用,在一次命令中,只能指定一种。
    -C:使用对比模式,将备份的文件与已存在的文件相互对比。
    -i:使用交互模式,在进行还原操作时, restors指令将依序询问用户
    -r:进行还原模式
    -t:查看模式,看备份文件有哪些文件
    
    选项
    -f <备份设备>:从指定的文件中读取备份数据,进行还原操作
    

    应用案例

    案例1:restore命令比较模式,比较备份文件和原文件的区别

    restore -C -f boot.bak1.bz2 //注意和最新的文件比较
    

    案例2:restore命令查看模式,看备份文件有哪些数据/文件

    restore -t -f boot.bak0.bz2
    

    案例3
    restore命令还原模式注意细节:如果你有增量备份,需要把增量备份文件也进行恢复,有几个增量备份文件就要恢复几个,按顺序来恢复即可。

    mkdir /opt/boottmp
    cd /opt/boottmp
    restore -r -f /opt/boot.bak0.bz2 //恢复到第1次完全备份状态
    restore -r -f /opt/boot.bak1.bz2 //恢复到第2次增量备份状态
    

    23、Linux可视化管理

    23.1、webmin安装

    基本介绍
    Webmin是功能强大的基于Web的Unix/linux系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理操作。

    1.创建webmin文件夹
    	mkdir /opt/webmin
    2.进入webmin
    	cd /opt/webmin
    3.下载webmin包
    	wget http://download.webmin.com/download/yum/webmin-1.700-1.noarch.rpm
    4.安装: rpm -ivh webmin-1.700-1.noarch.rpm
    5.重置密码:/usr/libexec/webmin/changepass.pl /etc/webmin root webminroot
    	root是webmin的用户名,不是OS的,这里就是把webmin的root用户密码改成了webminroot
    6.修改webmin服务的端口号 (默认是10000,出于安全目的修改端口号)
    	vim /etc/webmin/miniserv.conf
    	修改端口
    	将port=10000修改为其他端口号,如port=6868
    	将listen=10000修改为listen=6868
    7.重启webmin
    	/etc/webmin/restart#重启
    	/etc/webmin/start #启动
    	/etc/webmin/stop #停止
    6.防火墙打开6868端口
    	#配置防火墙开放666端口
    	firewall-cmd --zone=public --add-port=6868/tcp --permanent 
     	#更新防火墙配置,生效
    	firewall-cmd --reload
    	#查看已经开放的端口号
    	firewall-cmd --zone=public --list-ports
    7.登录webmin
    http://ip:6868可以访问了
    用root账号和重置的新密码webminroot登录
    

    1.1webmin修改成中文版
    在这里插入图片描述
    在这里插入图片描述

    23.2、BT宝塔安装

    bt宝塔介绍

    bt宝塔Linux面板是提升运维效率的服务器管理软件,支持键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等多项服务器管理功能。

    宝塔安装

    执行以下代码进行安装宝塔6.9.9免费版。宝塔6.9.9版本已经很稳定了,推荐大家直接安装6.9.9版本(注意:宝塔linux6.0版本是基于centos7开发的,务必使用centos7.x 系统)

    创建bt文件夹
    mkdir /opt/bt
    进入bt安装目录
    cd /opt/bt
    执行安装命令
    yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
    

    注意如果之前安装过mysql服务,此时安装需要输入yes强制安装,不要写y
    在这里插入图片描述
    安装完成后显示如下界面

    外网面板地址: http://183.250.125.184:8888/12006102
    内网面板地址: http://192.168.200.66:8888/12006102
    username: svxkakvi
    password: 67cb896d
    

    在这里插入图片描述
    如果bt的用户名,密码忘记了,使用bt default可以查看

    展开全文
  • 【Linux】一步一步学Linux——Linux发展史(01)

    千次阅读 多人点赞 2019-07-04 22:39:46
    Linux概述02. Linux简史03. Linux主要特性04. Linux之父05. Linux相关术语06. Linux其它07. Linux应用领域 01. Linux概述 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多...
  • 如何学习linux

    2013-05-21 15:12:00
    linux太难用了!(一通鼠标点击,进入/etc) 学习linux,你忘记windows的思维方式了吗?...学习linux,你还在浮躁吗?...进入linux,随便按了几下.赶紧重启进入win 学习linux,你用心了吗? ....... 首先
  • Linux系统现在越来越满足人们对技术的要求,因此Linux不论在市场中还是企业里都备受欢迎,所以学习Linux的人越来越多,那么Linux到底应该怎么呢? 现在在互联网时代的潮流下,人们更重视技术的自由性。Linux操作...
  • linux学习

    千次阅读 2011-09-08 19:14:08
    linux太难用了!(一通鼠标点击,进入/etc) 学习linux,你忘记windows的思维方式了吗? 怎么安装软件阿?那一堆文件是干什么的阿? 学习linux,你还在浮躁吗? 进入linux,随便按了几下.赶紧重启进入win 学习linux,...
  • 新手如何学习Linux

    2015-01-02 11:38:06
    技术的价值不在于这个技术有多么高超,而在于技术本身给我们带来什么价值,所以很多时候我们学习一个技术,不能盲目,是为了使用这个技术,知道这个技术的使用场景,知道这个技术带来的便利性,我们才决定要深入...
  • 【Linux】一步一步学Linux——Linux系统目录详解(09)

    千次阅读 多人点赞 2019-07-08 23:10:18
    00. 目录 文章目录00. 目录01. 文件系统介绍02. 常用目录介绍03....Win和Linux文件系统区别 (了解) 在 windows 平台下,打开“计算机”,我们看到的是一个个的驱动器盘符: [外链图片转存失败(img-F...
  • 00. 目录 文章目录00. 目录01. Linux内核版本02. Linux内核官方网站03. Linux发行版本04. Linux发行版本介绍4.1 Ubuntu4.2 RedHat... Fedora4.7 Kali Linux4.8 Arch Linux4.9 OpenSuse4.10 Damn Vulnerable Linux...
  • Linux学习总结

    万次阅读 多人点赞 2018-05-23 21:37:16
    课程:Linux操作系统与应用 参考书:Linux从入门到精通、unix环境高级编程 学习linux之前必须要做好心理准备: 第一,要明白学好linux不是一件一蹴而就的事,一定要能坚持使用它,特别是在使用初期,由于在linux中...
  • Linux中文件类型02. 文件类型详解03. 文件扩展名和文件名04. 附录 01. Linux中文件类型 Linux系统中大致分为7种文件类型。具体7中如下表所示: 前缀 描述 - 普通文件。如文本文件、二进制可...
  • 学习Linux的作用

    万次阅读 多人点赞 2016-06-15 10:51:22
    Linux是一个操作系统的内核,通常用来代表linux系列的操作系统名称,相对于windows操作系统,Linux显得难学很多,那么学linux系统有什么用呢?  首先linux是开放源代码的操作系统,它的每一个操作,你都能够充分...
  • 为何以及如何学Linux系统? 在当今的社会中,linux用处实在是太过广泛了。现在用在服务器和嵌入式上的Linux发行版本数不胜数,桌面上linux只占1%的比例,但这不代表linux比windows和mac 做得差,实际上桌面系统上...
  • Linux十大常见用途

    2014-11-24 23:19:56
    Linux十大常见用途Linux用途,学习Linux必知
  • Linux学习方法

    2015-01-01 13:11:45
    学习任何一门技术,最好的初衷是什么——兴趣,其次是用处,那么学习Linux致歉,请再次问问自己,你确定Linux对你的意义吗,你确定Linux都能干点什么嘛,一个Linux学习视频分享给大家 http://bbs.ingben.com/forum
  • Linux在生活中用处十分广泛,基本上时时刻刻大家都在用着Linux系统,Linux已经成为了我们生活不可或缺的一部分了。你可能会问Linux系统使用广泛,为什么我并没有真正接触过呢?下面来具体了解一下。 Linux系统在...
  • 大数据学习之Linux

    千次阅读 2020-08-30 17:46:11
    Linux笔记总结 学习目标: 了解Linux的发展历程(概述) VM虚拟机和Linux的安装 (熟练掌握) 掌握Linux的文件目录结构 熟练掌握Linux中的文本编辑器 - VI/VIM(重点) 掌握Linux中的网络配置系统管理操作 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,338
精华内容 26,935
热门标签
关键字:

学linux的用处

linux 订阅