linux学习笔记

不问归期 提交于 2019-12-18 08:06:29

前段时间学的linux系统,过了这么些天感觉又忘了很多,特写此博客加强记忆。

 

运行级别

Linux 系统有 7 种运行级别(runlevel):常用的是级别 3 和 5

  运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动

  运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆

  运行级别 2:多用户状态(没有 NFS),不支持网络

  运行级别 3:完全的多用户状态(有 NFS),登陆后进入控制台命令行模式

  运行级别 4:系统未使用,保留

  运行级别 5:X11 控制台,登陆后进入图形 GUI 模式

  运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动

 

vi和vim的三种常见模式

  1.正常模式  

  在正常模式下,我们可以使用快捷键。

  以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。

  2.编辑模式/插入模式

  在模式下,程序员可以输入内容。

  按下i,I,o,O,a,A,r,R等任何一个字母之后就可以进入编辑模式,一般来说按i。

  3.命令行模式

  在此模式下,可以提供你相关指令,完成读取,存盘,体换,离开vim,显示行号等动作

 

  关系流程图:

  快捷键使用案例(正常模式下):

  1)拷贝当前行  yy,拷贝当前向下的5行  5yy

  2)粘贴 p

  3)删除当前行 dd   , 删除当前行向下的 5 行 5dd

  4)查找某个词   /要查找的词   或 ?要查找的词

  5)设置文件的行号,取消文件的行号.[命令行下     : set nu  和 :set nonu]

  6)移动到第一行gg,移动到最后一行G‘

  7)撤销 u

  8)将光标移动到指定行   先按20,再按shift+g

 

关机重启指令

  1.shutdown:

    shutdown -h now     立刻关机

    shutdown -h 1         一分钟后关机

    shutdown -r now     立刻重启

  2.halt

    就是直接使用,立即关机

  3.reboot:

    重启系统

  4.syn:

    把内存中的数据同步到磁盘(建议每次关机重启都使用一次,以免文件丢失)

  5.logout:

    注销账号

 

文件权限基本介绍:  

  ls    -l 中显示的内容如下:

  -rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

  0-9 位说明:

    1)第 0 位确定文件类型(d, - , l , c , b)

    2)第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限。---User

    3)第 4-6 位确定所属组(同用户组的)拥有该文件的权限,---Group

    4)第 7-9 位确定其他用户拥有该文件的权限 ---Other

 

  rwx 作用到文件
    1) [ r ]代表可读(read): 可以读取,查看
    2) [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
    3) [ x ]代表可执行(execute):可以被执行

  rwx 作用到目录:
    1) [ r ]代表可读(read): 可以读取,ls 查看目录内容
    2) [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
    3) [ x ]代表可执行(execute):可以进入该目录


  文件及目录权限实际案例:

  ls -l 中显示的内容如下:(记住)
  -rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
  10 个字符确定不同用户能对文件干什么
    第一个字符代表文件类型: 文件 (-),目录(d),链接(l)
    其余字符每 3 个一组(rwx) 读(r) 写(w) 执行(x) 第一组 rwx : 文件拥有者的权限是读、写和执行
    第二组 rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行第三组 r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行可用数字表示为: r=4,w=2,x=1 因此 rwx=4+2+1=7
    1 文件:硬连接数或 目录:子目录数
    root 用户
    root 组
    1213 文件大小(字节),如果是文件夹,显示 4096 字节
    Feb 2 09:39 最后修改日期
    abc 文件名

 

任务调度:crontab   

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

  任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等

         2.个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。

  注:如果只是简单的任务,可以不用写脚本,直接在crontab中加入任务即可

    对于比较复杂的任务,需要写脚本(shell编程)

 

  crontab 进行 定时任务的设置:     

    crontab [选项]

      -e  编辑crontab定时任务

      -l  查询crontab任务

      -r  删除当前的所有的crontab任务

    service crond restart  [重启任务调度]

 

  使用步骤如下:

    ①crontab -e

    ②*/1 * * * *  项目

    ③当保存都退出后即开始运行

    ④每过分钟执行一边项目


  五个占位符的含义: 

    项目    含义           范围

    第一个“*”        一小时当中的第几分钟     0-59

    第二个“*”        一天当中的第几小时         0-23

    第三个“*”        一个月当中的第几天        1-31

    第四个“*”        一年当中的第几月            1-12

    第五个“*”        一周当中的星期几            0-7 (0和7都代表星期日)

 

  特殊符号的说明:

    特殊符号                                 含义

    *                                              代表任何时间。比如第一个“* ”就代表一小时中每分钟都执行一次的意思。

    ,                 代表不连续的时间。比如“0 8,12,16 * * *命令”,就代表在每天的8点o分,12点0分,16点0分都执行一次命令

    -                                             代表连续的时间范围。比如“0 5 *  * 1-6命令”, 代表在周一到周六的凌晨5点0分执行命令

    */n                                          代表每隔多久执行一次。比如“*/10* * * *命令”,代表每隔10分钟就执行一遍命令

 

  特定时间执行任务案例:

    时间                                                   含义

    45 22 * * *命令                                   在22点45分执行命令

    017 * *1命令                                      每周1的17点0分执行命令

    0 5 1,15 * * 命令                                每月1号和15号的凌晨5点0分执行命令

    40 4 * * 1-5命令                                 每周一到周五的凌晨4点40分执行命令

    */10 4 * * *命令                                  每天的凌晨4点,每隔10分钟执行一次命令

    0 0 1,15 * 1命令                                每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和

                                                           几号最好不要同时出现,因为他们定义的都是天。非常容易让管
                                                           理员混乱。

  案例一:

    1)    先编写一个文件                       /home/mytask1.sh      date >> /tmp/mydate

    2)    给 mytask1.sh 一个可以执行权限       chmod 744 /home/mytask1.sh

    3)    crontab -e

    4)    */1 * * * *    /home/mytask1.sh

  案例二:

    1)   先编写一个文件   /home/mytask2.sh    date >> /tmp/mycal cal >> /tmp/mycal

    2)   给 mytask1.sh 一个可以执行权限    chmod 744 /home/mytask2.sh

    3)  crontab -e

    4)  */1 * * * *    /home/mytask2.sh

    

 

 进程管理:

  进程基本介绍:

    1)在 LINUX 中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个 ID 号。

    2)每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如 www 服务器。

    3)每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。

    4)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

   

  查看进程指令:ps  

    -a:显示当前终端的所有进程信息
    -u:以用户的格式显示进程信息
    -x:显示后台进程运行的参数

  

  ps显示的信息选项:

    字段                 说明

          PID                 进程识别号

          TTY                终端机号

          TIME              此进程所消CPU时间

          CMD               正在执行的命令或进程名

 

  ps指令详解:    

  指令:ps –aux | grep sshd,比如我看看有没有 sshd 服务(System V 展示风格)

 

    USER:用户名称

    PID:进程号

    %CPU:进程占用的CPU的百分比

    %MEM:进程占用物理内存的百分比

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

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

    TTY:终端名称

    STAT:进程状态,其中 S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等

    STARTED:进程的启动时间

    TIME:CPU 时间,即进程使用 CPU 的总时间

    COMMAND:启动进程所用的命令和参数,如果过长会被截断显示 

 

  指令:ps -ef | more   以全格式显示当前所有的进程,查看进程的父进程(是 BSD 风格)   

      ps -ef 是以全格式显示当前所有的进程

      -e 显示所有进程。-f 全格式。

 

    UID:用户 ID

    PID:进程 ID

    PPID:父进程 ID

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

    STIME:进程启动的时间

    TTY:完整的终端名称

    TIME:CPU 时间

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

 

  终止进程:kill和killall    

    kill    [选项] 进程号(功能描述:通过进程号杀死进程)

    killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)     

      -9 :表示强迫进程立即停止

    

    killall gedit  (终止所有的gedit编辑器(终端))

        

  查看进程树:pstree

    pstree [选项] ,可以更加直观的来看进程信息  

      -p :显示进程的 PID

      -u :显示进程的所属用户

 

  动态监视进程:top    

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

    top [选项]

      -d秒数    指定top命令每隔几秒更新.默认是3秒

      -i                      使top不显示任何闲置或者僵死进程.

      -p                     遇过指定监控进程ID来仅仅监控某个进程的状态

    

    交互操作说明:

      操作       功能

      P            以CPU使用率排序,默认就是此项

      M            以内存的使用率排序

      N            以PID排序

      q             退出top

    

    案例1:监视特定用户     

      top:输入此命令,按回车键,查看执行的进程。

      u:然后输入“u”回车,再输入用户名,即可

    案例2:终止指定的进程

      top:输入此命令,按回车键,查看执行的进程。

      k:然后输入”k“回车,再输入要结束的进程的ID号

    案例3:指定系统状态更新的时间(每格十秒自动更新,默认时3秒)

      top -d 10

  

      

 

 

服务管理: 

  服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是 Linux 中非常重要的知识点。

  在 CentOS7.0 后 不再使用 service ,而是 systemctl

  service管理指令:

    service  服务名 [start | stop | restart | reload | status] 

  查看服务名:

    方式 1:使用 setup -> 系统服务 就可以看到

    方式 2:  /etc/init.d/服务名称  

  每个服务的各个运行级别设置自启动/关闭指令:chkconfig

    chkconfig  --list  |  grep XXX

    chkconfig      服务名     --list

    chkconfig      --level     5     服务名   on/off

  注:chkconfig 重新设置服务后自启动或关闭,需要重启机器 reboot 才能生效.

 

查看网络情况:

  指令:netstat

    netstat [选项]      

      -an    按一定顺序排列输出

      -p    显示哪个进程在调用

 

    查看系统所有的网络服务:

      netstat -anp | more

    

常用指令:

 

  添加用户:useradd    

    useradd    [选项]    用户名

  更改用户密码:passwd

    passwd   用户名 

  删除用户:userdel

    userdel   用户名  

                 -r 删除用户和家目录 

  查询用户信息:id

    id    用户名 

  切换用户:su   

    su   切换用户名(返回上一次的用户:exit)  

  增加组:groupadd

    groupadd 组 名

  删除组:groupdel

    groupdel 组 名  

  增加用户时直接更换组:

    useradd   -g 用户组 用户名(组需要已存在) 

  修改用户所在组:uesrmod

    usermod -g 用户组 用户名 

  查看文件的所用者:ls -ahl 

  修改文件的所有者:chown

    chown  新用户名 文件名

    chown  新用户名:新组  文件名   (改变文件的所有者和所在组)

      -R   如果是目录 则使其下所有子文件或目录递归生效

  修改文件所在组:chgrp

    chgrp 组名 文件名

      -R   如果是目录 则使其下所有子文件或目录递归生效  

  修改文件权限:chmod

    方式①:第一种方式:+ 、-、=  变更权限

        u:所有者   g:所有组   o:其他人   a:所有人(u、g、o 的总和)

            chmod      u=rwx,g=rx,o=x      文件目录名

            chmod      o+w        文件目录名

            chmod   a-x  文件目录名

    方式②:第二种方式:通过数字变更权限

         规则:r=4 w=2 x=1 ,rwx=4+2+1=7

            chmod u=rwx,g=rx,o=x   文件目录名

            相当于

            chmod  751    文件目录名

  切换运行级别:init

    init    级别数   (如果忘记了root密码,可以在开机时将级别改为单用户模式然后更改密码)

  帮助指令: man,help   

    man [命令或配置文件](功能描述:获得帮助信息)

    help 命令 (功能描述:获得 shell 内置命令的帮助信息)

    百度

  获取当前的工作目录的绝对位置:pwd

  获取当前的目录的内容:ls     

    ls [ 选 项] [目录或是文件]

      -a :显示当前目录所有的文件和目录,包括隐藏的。

      -l    :以列表的方式显示信息

  切换目录:cd

    cd    [参数] (功能描述:切换到指定目录)

      回到家目录:cd       或       cd~

      回到上一级目录:cd   .. 

  创建目录:mkdir

    mkdir    [选项]   要创建的目录

      -p :创建多级目录

  删除空目录:rmdir

    rmdir     [选项]   要删除的空目录

      如果需要删除非空目录,需要使用  rm -rf 要删除的目录

  创建新文件:touch

    touch 文件名称

  拷贝文件指令:cp

    cp [选项] source dest   (将当前目录下的source文件拷贝到dest路径下)   

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

  删除文件,目录指令:rm

    rm   [选项]    要删除的文件或目录     

      -r :递归删除整个文件夹

      -f : 强制删除不提示

  移动或重命名文件,目录:mv   

    mv    oldNameFile newNameFile           (功能描述:重命名)

    mv    /temp/movefile   /targetFolder        (功能描述:移动文件)

  以只读的方式打开文件:cat

    cat   [选项] 要查看的文件

    (文件非常长的时候:cat 文件名 | more [分页浏览])

      -n :显示行号  

  以全屏幕的方式按页显示文本文件的内容:more

    more 要查看的文件

      空格键(space) 下翻一页

      Enter                    下翻一行

      q         退出more

      Ctrl+F      向下滚动一屏

      Ctrl+B      返回上一屏

      =                           输出当前的行号

      :f        输出文件名和当前的行号  

  分屏查看文件内容(看到哪儿加载到哪儿):less

    less 要查看的文件

      空格键    向下翻一页

      pagedown    向下翻一页

      pageup      向上翻一页

      /字串       向下搜索【字串】 

      ?字串     向上搜索【字串】

      q              退出less 

  显示文件的开头部分:head  

    head  文件 (功能描述:查看文件头 10 行内容)

    head -n 5 文件    (功能描述:查看文件头 5 行内容,5 可以是任意行数)

  显示文件的结尾部分:tail

    tail 文件  (功能描述:查看文件后10行的内容)

    tail -n 5  文件  (功能描述:查看文件后5行的内容)

    tail -f 文件    (功能描述:实时跟踪该文化的所有更新,工作经常使用)

  追加文件内容及覆盖文件内容:>   和     >>   

    > 输出重定向 : 会将原来的文件的内容覆盖

    >> 追加: 不会覆盖原来文件的内容,而是追加到文件的尾部。

      ls -l > a.txt     将 ls -l 的显示的内容覆盖写入到 a.txt 文件,如果该文件不存在,就创建该文件。      

      cat 文件 1 > 文件 2 (功能描述:将文件 1 的内容覆盖到文件 2)

      echo  【要添加的内容】> 文件(功能描述:将【要添加的内容】添加到文件中)

  输出内容到控制台:echo   

    echo    [选项]    [输出内容]

  配置软连接:ln    

    ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)

    rm -rf [软链接名]    (功能描述:删除软链接)

  查看或执行历史指令:history

    history    显示所有的历史命令

    history   10   显示最近10条的历史命令

    !27     执行编号为27的历史命令    

  显示当前日期:date

    date     (功能描述:显示当前的时间)

    date +%Y    (功能描述:显示当前年份(小写y显示年份后两位))

    date +%m    (功能描述:显示当前月份)

    date +%d  (功能描述:显示当前是哪一天)

    date  "+%Y-%m-%d %H:%M:%S"  (功能描述:显示年月日时分秒(分号一定要加+))

    

    date   -s    字符串时间(设置日期时间)

      date   -s    “2019-12-17  20:00:00” 

  显示日历指令:cal

    cal [选项]      (功能描述:不加选项,显示本月日历)

      cal 2020 (显示2020年每个月的日历)

  查找搜索类指令:find

    find    [搜索范围]    [选项]

    选项:

      -name<查询方式>   按照指定的文件名查找模式查找文件

      -user<用户名>  查找属于指定用户文件

      -size<文件大小>  按照指定的文件大小查找文件

    find /home -name hello.txt     (功能描述:在/home 下查找文件名为hello.txt的文件)

      find /home -name *.txt    (功能描述:在/home 下查找.txt的文件)

    find /home -user nobody     (功能描述:在/home 下查找用户nobodyt的文件)

    find /  -size +20M   (功能描述:查找整个 linux 系统下大于 20m 的文件(+n  大于    -n 小于  n 等于))    

  快速定位文件路径:locate    

·  locaate 指令可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的locate 数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate 时刻。 

  由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库。  

    updatedb

    locate 搜索文件名称 

  过滤查找:grep

  管道符号:|

    grep [选项] 查找内容 源文件

      -n     显示匹配行及行号

      -i      忽略字母大小

    cat hello.txt | grep -ni yes

  压缩和解压缩:

    ①gzip/gunzip 指令:gzip 用于压缩文件, gunzip  用于解压的       

      gzip 文件    (功能描述:压缩文件,只能将文件压缩为*.gz 文件)

      gunzip 文 件.gz   (功能描述:解压缩文件命令)

      注:当我们使用 gzip  对文件进行压缩后,不会保留原来的文件

 

    ②zip/unzip指令:zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的

        

      zip      [选项] XXX.zip    将要压缩的内容(功能描述:压缩文件和目录的命令)

        -r:递归压缩,即压缩目录

      unzip      [选项] XXX.zip (功能描述:解压缩文件)        

        -d<目录> :指定解压后文件的存放目录

 

    ③tar:打包指令,最后打包后的文件是 .tar.gz 的文件

      tar   [选项]    XXX.tar.gz    打包的内容   (功能描述:打包目录,压缩后的文件格式.tar.gz)

        -c   产生.tar打包文件

        -v  显示详细信息

        -f  指定压缩后的文件名

        -z 打包同时压缩

        -x 解包.tar文件

      tar -zcvf a.tar.gz  a1.txt  a2.txt   (将a1.txt和a2.txt打包为a.tar.gz压缩文件)

      tar -zcvf home.tar.gz  /home     (将home文件夹打包为home.tar.gz压缩文件)

      tar -zxvf a.tar.gz     (将压缩文件a.tar.gz解压缩到该目录下)

      tar -zxvf myhome.tar.gz -C /opt/   (将myhome.tar.gz解压到/opt目录下(目录要实现存在))

 

 

        

    

        

    

 

 

 

      

      

 

      

   

  

 

  

  

 

    

  

  

    

  

    

 

 

 

 

 

 

 

 

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!