美文网首页
Linux通用知识

Linux通用知识

作者: long_c2b7 | 来源:发表于2020-11-11 09:45 被阅读0次
    image.png image.png
    图片

    5 用户管理

    刚才说了可以创建自己的用户,那么怎么创建自己的用户呢?

    添加用户

    useradd -d /home/lanj -m lanj
    

    更改密码

    passwd lanj
    

    系统有很多的用户,怎么进行用户的切换?

    su -lanj
    
    su -root
    

    如果需要

    用户之间的切换使用su命令实现。root用户可以无需输入密码切换到lj用户,如果普通用户lj切换到root用户则需要输入密码,我们看看

    su -lj

    su -root

    如何切换路径,绝对路径和相对路径

    6 软件的安装方法

    在Linux安装相关的工具分为三种方式,分别为源码安装,RPM包安装以及YUM安装方式

    源码安装方式

    开源软件都会提供源码下载的方式,对于源代码安装方式的好处即可以定制软件功能,安装需要的模块,不需要的模块可以屏蔽,方便管理,卸载等。

    对于源码安装的步骤如下

    • 下载解压源码

    一般下载下来源码以后都会存在一个Readme文件,首先应该仔细阅读这个文件,可能有很多需要修复的以前人家遇见的问题都会在上面做记录,以免入坑不回头

    • 分析平台环境

    • 编译安装软件

    这里会使用make工具,make工具就会通过makefile文件来实现。makefile文件是一种按照某种语法来编写且定义了各个文件的依赖关系。

    在Linux中,习惯使用Makefile替代makefile,当用户执行configure后,就会在当前目录生成这个makefile文件,然后用户输入make就开始运行。我们看看Makefile是怎么个有样子

    edit : main.o kbd.o command.o display.o \        insert.o search.o files.o utils.o       /*注释:如果后面这些.o文件比edit可执行文件新,那么才会去执行下面这句命令*/    cc -o edit main.o kbd.o command.o display.o \        insert.o search.o files.o utils.omain.o : main.c defs.h    cc -c main.ckbd.o : kbd.c defs.h command.h    cc -c kbd.ccommand.o : command.c defs.h command.h    cc -c command.cdisplay.o : display.c defs.h buffer.h    cc -c display.cinsert.o : insert.c defs.h buffer.h    cc -c insert.csearch.o : search.c defs.h buffer.h    cc -c search.cfiles.o : files.c defs.h buffer.h command.h    cc -c files.cutils.o : utils.c defs.h    cc -c utils.cclean :    rm edit main.o kbd.o command.o display.o \        insert.o search.o files.o utils.o
    

    make和make install的关系

    当我们输入make命令过后即进入了编译阶段,编译时间根据软件的程序规模大小以及硬件配置有关,当输入make install就会开始安装软件,我们可以指定安装目录也可以不指定,系统将给你默认指定目录为/user/local,这样安装完毕。

    RPM安装方式

    RPM是Red Hat公司开发出来的Linux下的软件包管理工具。这些以.rpm结尾的包包含了已经编译好的二进制可执行文件,一句话即将源代码进行编译,安装,然后封装为RPM包

    优点即安装简单,方便,因为已经编译完成,安装只是用来验证和解压过程,缺点也比较明显,过于依赖于操作系统,要求RPM包的安装环境必须和RPM封装时的环境保持一致,

    RPM包是怎么个样子?

    server-2.1.0-22.I386.rpm
    

    其中:server为如那件的名称

    2.1.0:软件的版本号

    22:软件更新发行的次数

    i386:适合硬件发行的次数

    .rpm:rpm软件包的标识

    YUM安装方式

    • 查看是否存在yum
    rpm -qa | grep yum
    
    • 没有则安装
    rpm -ivh yum-*.noarch.rpm
    
    • 自定义yum的配置。我们可以通过打开/etc/yum.repos.d/Centos-Base.repo进行源的配置

    YUM有哪些特点呢

    • 安装方便

    • 可以同时配置多个源

    • 配置文件简单明了

    推荐个不错的yum源

    • EPEL

    是一个针对红帽企业版Linux及衍生发行版的一个高质量附加软件包项目。网址:http://fedoraproject.org/wiki/EPEL/zh-cn

    • RPMForge

    这是一个第三方软件仓库,被centos社区认为是一个最安全最稳定的一个软件仓库

    6 shell

    大部分情况都是Linux操作系统,那么熟悉命令的用法以外,熟悉使用shell脚本能介绍不少时间

    shell是什么

    “ 平时经常在Linux操作系统中使用各种命令,比如查看当前的目录文件,我们会使用"ls"或者"ls -l",这些字符串参数实际上会被"某段程序"执行并启动它。这个负责将用户输入的字符串转换为需要执行程序的东西叫做"shell"。即帮用户更方便使用操作系统接口的“壳”。同样的壳还有当我输入Maven+相关参数的时候是不是就会去执行相应的功能,我们驶入sql语句的时候,数据库引擎是不是也会各种调用,一样的道理

    尝试编写第一个shell

    vim创建打开一个文件,扩展名为.sh。如下所示

    #!/bin/bash #告诉系统使用什么解析器echo "Hello xiaolan !" # echo进行输出
    
    • 执行方法1
     chmod +x ./hello.sh ./hello.sh
    
    • 执行方法2
     /bin/sh hello.sh
    

    变量

    变量名和等号之间不能有空格

    定义变量注意事项

    • 命名首个字符不能是数字,只能使用英文字母、数字和下划线

    • 不能使用标点符号

    • 不能使用bash中关键字

    变量使用

    使用变量(使用变量的过程中,最好加上花括号),只需要在变量前面加上美元符号即可

    #!/bin/bashJames="小皇帝"echo $James
    

    只读变量

    使用readonly将变量定义为只读,只读意味着不能改变

    #!/bin/bashJames="小皇帝"readonly JamesJames="登哥"
    

    删除变量

    使用unset删除变量 变量删除以后不能再次使用,且不能删除只读变量

    #!/bin/bashJames="小皇帝"unset Jamesecho $James #不会有任何输出
    

    变量类型

    • 局部变量

    仅当前shell可用

    • 环境变量

    所有程序都能访问环境变量

    • shell变量

    通过一部分环境变量和shell变量保证shell的正常运行

    字符串

    使用字符串的过程中,既可以用双引号也可以用单引号,也可以不用

    • 单引号

    单引号内容原样输出,不能包含变量,且不能出现单独单引号

    • 双引号

    可以出现转义字符

    #!/bin/bashJames="小皇帝"str="\"$ James\"! oh my gad \n "echo -e $str 
    

    获取字符串长度

    使用#

    string="qwert"echo $(#string)# 提取子字符串echo $(string:1:3)#查找字符串echo 
    

    数组

    支持以为数组

    定义数组

    数组元素使用“空格”隔开

    array=(value1,value2,value3)
    

    读取数组

    value1=${array[0]}
    

    使用@输出数组所有元素

    echo ${array[@]}
    

    获取数组中所有元素以及数组长度

    #! /bin/bash# author:xiaolanarray[0]=aarray[1]=barray[3]=cecho “数组的元素为:${array[*]}”echo “数组的元素为:${array[@]}”echo “数组的个数为:${#array[*]}”echo “数组的个数为:${#array[@]}”
    

    执行

    ./array.sh
    

    结果

    图片

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">result</figcaption>

    注释

    单行注释

    使用#开头的行为注释,会被解释器忽略

    多行注释

    shell传递参数

    在执行shell的时候,命令行指定参数,如下所示

    #!/bin/bashJames="小皇帝"echo "执行的文件名为:$0"echo "第一个参数为:$1"echo "第二个参数为:$2"
    

    执行

    ./param.sh 1 2

    结果

    图片

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">result</figcaption>

    几个特殊字符

    图片

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">result</figcaption>

    案例(partionnal.sh)

    #!/bin/bash# author:xiaolanecho "-- \$* 演示 ---"for i in "$*"; do    echo $idoneecho "-- \$@ 演示 ---"for i in "$@"; do    echo $idone
    

    执行

    ./demo2.sh 1 2 3
    

    结果

    图片

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">img</figcaption>

    相同点:都是会引用所有参数

    不同点:在使用双引号的时候。如果脚本运行时两个参数为a,b,则"*"等价于"ab",而"@"等价于"a","b"

    #!/bin/bash# author:xiaolanecho "-- \$* 演示 ---"for i in "$*"; do    echo $idoneecho "-- \$@ 演示 ---"for i in "$@"; do    echo $idone
    

    8 printf

    使用printf格式化字符串,同时可以指定字符串宽度和对齐方式,格式如下

    printf format-string [arguments...]#!/bin/bash# author:xiaolanprintf "%-8s %-8s %-4s\n" 姓名 科目 分数  printf "%-8s %-8s %-4f\n" 小明 数学 97printf "%-8s %-8s %-4f\n" 小话 语文 89printf "%-8s %-8s %-4f\n" 王三 英语 93
    

    结果

    图片

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">img</figcaption>

    9 test

    shell中的test用于检查某个条件是否成立

    图片

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">result
    </figcaption>

    案例

    #!/bin/bash# author:xiaolannum1=55num2=55if test $[num1] -eq $[num2]then    echo '两个数相等!'else    echo '两个数不相等!'fi
    

    结果

    图片

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">result</figcaption>

    字符串比较

    图片

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">字符串比较</figcaption>

    #!/bin/bash# author:xiaolannum1="xiaolan"num2="xiaolna"if test $num1 = $num2then    echo '两个字符串相等!'else    echo '两个字符串不相等!'fi
    

    结果

    image.gif

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">result</figcaption>

    流程

    if语句语法格式

    if conditionthen    exec1     exec2    ...    execN fi
    

    如果简化为一行

    if [$(ps -ef | grep -c "httpd") -gt 1];then echo "true";fi
    

    if else-if else

    if condition1then    exec1elif condition2 then     exec2else    execnfi
    

    案例 判断两数值是否相等

    #!/bin/bash# author:xiaolana=2b=3if [ $a == $b ]then   echo "a 等于 b"elif [ $a -gt $b ]then   echo "a 大于 b"elif [ $a -lt $b ]then   echo "a 小于 b"else   echo "没有符合的条件"fi
    

    for循环

    for loop in 1 2 3 4 5do    echo "The value is: $loop"done
    

    while语句

    “ 通常用于从输入文件不断读取数据

    while conditiondo    execdone#!/bin/bash# author:xiaolanint=1while(( $int<=6 ))do    echo $int    let "int++"# 用于执行一个或者多个done
    

    无限循环

    while truedo    execdone
    

    case语句

    多选择语句。取值后面为单词in,每一个模式以")"结束。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ";;"。

    #!/bin/bash# author:xiaolanecho '输入 1 到 3 之间的数字:'echo '你输入的数字为:'read aNumcase $aNum in    1)  echo '你选择了 1'    ;;    2)  echo '你选择了 2'    ;;    3)  echo '你选择了 3'    ;;    *)  echo '你没有输入 1 到 3 之间的数字'    ;;esac
    

    输入不同的内容,会有不同的结果,例如:

    输入 1 到 4 之间的数字:你输入的数字为:3你选择了 3
    

    跳出循环

    break

    break命令允许跳出所有循环

    #!/bin/bash# author:xiaolanwhile :do    echo -n "输入 1 到 3 之间的数字:"    read aNum    case $aNum in        1|2|3) echo "你输入的数字为 $aNum!"        ;;        *) echo "你输入的数字不是 1 到 3 之间的! 游戏结束"            break        ;;    esacdone
    

    continue

    跳出当次循环

    #!/bin/bashwhile :do    echo -n "输入 1 到 3 之间的数字: "    read aNum    case $aNum in        1|2|3|4|5) echo "你输入的数字为 $aNum!"        ;;        *) echo "你输入的数字不是 1 到 3 之间的!"            continue            echo "游戏结束"        ;;    esacdone
    

    10 shell函数

    用户定义函数,然后在shell脚本中随便调用,格式如下

    [ function ] funname [()]{    action;    [return int;]}
    

    例子

    #!/bin/bash# author:xiaolanFun1(){    echo "这是我的第一个 shell 函数!"}echo "-----函数开始执行-----"Fun1echo "-----函数执行完毕-----"
    

    带return语句

    #!/bin/bash# author:xiaolanFunReturn(){    echo "这个函数会对输入的两个数字进行相加运算..."    echo "输入第一个数字: "    read aNum    echo "输入第二个数字: "    read anotherNum    echo "两个数字分别为 $aNum 和 $anotherNum !"    return $(($aNum+$anotherNum))}FunReturnecho "输入的两个数字之和为 $? !"
    

    函数参数

    #!/bin/bash# author:xiaolanfunParam(){    echo "第一个参数为 $1 !"    echo "第二个参数为 $2 !"    echo "参数总数有 $# 个!"    echo "作为一个字符串输出所有参数 $* !"}funParam 1 2 3 4
    

    shell重定向

    输出重定向

    command1 > file # 如果file中存在内容将被清空覆盖。如果追加使用command1 >>file

    ls -l > dir.txt
    

    cat dir.txt

    image.gif

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">img</figcaption>

    /dev/null文件

    写入到它的内容都会被丢弃,会起到"禁止输出"的效果,如果希望屏蔽stdout和stderr “ command > /dev/null 2>&1

    注意:Linux命令行都会打开三个文件

    • 标准输入文件:stdin文件描述符为0

    • 标准输出文件:stdout文件描述符为1

    • 标准错误文件:stderr文件描述符2

    12 运算符

    下表列出了常用的算术运算符,假定变量 a 为 2,变量 b 为 3:

    算术运算符

    图片

    算术运算符

    关系运算符

    image.gif

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">关系运算符</figcaption>

    布尔运算符

    图片

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">布尔运算符</figcaption>

    逻辑运算符

    图片

    逻辑运算符

    字符串运算符

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">
    </figcaption>

    图片

    12 shell实战

    • 请将当前目录中demo.txt第二行第三列数据输出到demo2.txt中
     cat demo.txt|awk ’NR==2{print $3}’ >demo2.txt 
    
    • 日志如下统计访问ip最多的前10个
    awk ’{print $1}’ *.log | sort | uniq -c | sort -nr | head -n 
    

    uniq - 删除排序文件中的重复行 sort对于文本进行排序 -l 按照当前环境排序. -m 合并已经排序好的文件,不排序. -n 按照字符串的数值顺序比较,暗含-b -r 颠倒比较的结果.

    • 查看占用内存最大的进程的PID和VSZ
    ps -aux|sort -k5nr|awk ’BEGIN{print ”PID VSZ”}{print ![2,(https://www.zhihu.com/equation?tex=2%2C)2,5}’|awk ’NR<3′ 
    
    • 如何检查文件系统中是否存在某个文件
    if [-f /var/log/messages]thenecho "File exts"fi
    
    • 每个脚本开始的 #!/bin/sh 或 #!/bin/bash 表示什么意思 ?

    !/bin/bash 表示脚本使用 /bin/bash。对于 python 脚本,就是 #!/usr/bin/python

    • &和&&区别

    “ “&” 脚本在后台运行时使用它。“&&”当前一个脚本成功完成才执行后面的命令

    • 脚本文件中,如何将其重定向标准输出和标准错误流到 log.txt 文件 ?
    ./a.sh >log.txt 2>&1
    
    • 如何计算本地用户的数目
    wc -l /etc/passwd | cut -d
    
    • shell中进行字符串比较和数字比较
    [ $A == $B ] – 用于字符串比较[ $A -eq $B ] – 用于数字比较
    
    • 去掉字符串空格

    echo $string | tr -d " "

    • 统计内存使用
    #! /bin/bash# author:xiaolansum=0for mem in `ps aux |awk '{print $6}' |grep -v 'RSS' `do    sum=$[$sum+$mem]doneecho "The total memory is $sum""k"
    

    结果

    图片

    <figcaption style="margin: 10px 0px 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important; line-height: inherit; text-align: center; color: rgb(153, 153, 153); font-size: 0.7em;">result</figcaption>

    • 批量更改文件名

    批量修改123目录下txt为txt.temp。将temp打包为test.tar.gz

    #!/bin/bash##查找txt文件find /123 -type f -name "*.txt" > /tmp/txt.list##批量修改文件名for f in `cat /tmp/txt.list`do    mv $f $f.tempdone##创建一个目录,为了避免目录已经存在,所以要加一个复杂的后缀名d=`date +%y%m%d%H%M%S`mkdir /tmp/123_$d##把.temp文件拷贝到/tmp/123_$dfor f in `cat /tmp/txt.list`do    cp $f.temp /tmp/123_$ddone##打包压缩cd /tmp/tar czf 123.tar.gz 123_$d/
    

    7 awk文本处理工具

    awk是一个处理文本文件的应用程序,几乎所有的Linux系统都自带了这个程序

    依次处理每一行,并读取里面的每一个字段。对于处理生产环境的日志有着非常高校的作用

    基本用法

    # 格式awk 做什么 文件吗awk 'print $0' lan.txt
    

    上面lan.txt是awk需要处理的文本文件。前面单引号里面有一个大括号,单引号里面就是每一行的处理动作。其中print为打印命令,

    上菜

    echo 'my name is lanlan' | awk '{print $0}'
    

    上面代码中,print 0位当前行,所以执行结果就是把每一行原样打印出来∗∗上菜∗∗¨G56G上面代码中,print0即将标准输入my name is lanlan ,c重新打印一遍

    awk根据空格和制表符,将每一行分成若干段,依次为2

    echo 'my name is lanlan'| awk '{print $3}'
    

    为了方便,我们直接使用/etc/passwd文件进行操作,

    awk -F ':' '{ print $1 }' demo.txt
    

    3 变量

    上面我们说了,可以使用符号 “3代表第一个字段,第二个字段,第三个字段¨G57G为了方便,我们直接使用/etc/passwd文件进行操作,¨G58G∗∗3变量∗∗上面我们说了,可以使用符号“+” 数字的方式表示第几个字段,其实还有一些变量可以直接表示相应的字段。比如 “$NFb” 表示最后一个字段

    echo 'my name is lanlan'| awk '{print $NF}'awk -F ':' '{print NR ") " $1}' demo.txtshe
    

    这里出现了双引号,表示原样输出

    其他常用的内置变量

    • FILENAME:当前文件名

    • FS:字段分隔符,默认是空格和制表符。

    • RS:行分隔符,用于分割每一行,默认是换行符。

    • OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。

    • ORS:输出记录的分隔符,用于打印时分隔记录,默认为换行符。

    • OFMT:数字输出的格式,默认为%.6g。

    4 函数

    既然算是一门语言,函数当然少不了,下面看一波常用的函数

    函数toupper()用于将字符转为大写

    awk -F ':' '{ print toupper($1) }' demo.txt
    

    可以发现第一个字段输出的时候变成了大写

    • tolower():字符转为小写。

    • length():返回字符串长度。

    • substr():返回子字符串。

    • sin():正弦。

    • cos():余弦。

    • sqrt():平方根。

    • rand():随机数。

    5 条件**

    通过使用相应的条件,过滤出自己想要的内容

    awk '条件 动作' 文件名
    

    上菜

    $ awk -F ':' '/usr/ {print $1}' demo.txtrootdaemonbinsys
    

    这里/usr/表示只输出包含usr的行

    这个例子输出奇数行

    # 输出奇数行$ awk -F ':' 'NR % 2 == 1 {print $1}' demo.txtrootbinsync# 输出第三行以后的行$ awk -F ':' 'NR >3 {print $1}' demo.txtsyssync
    

    下面的例子输出第一个字段等于指定值的行。

    $ awk -F ':' '$1 == "root" {print $1}' demo.txtroot$ awk -F ':' '$1 == "root" || $1 == "bin" {print $1}' demo.txtrootbin
    

    5 if语句

    通过if语句编写比较复杂的内容

    $ awk -F ':' '{if ($1 > "m") print $1}' demo.txtrootsyssync
    

    上面代码输出第一个字段的第一个字符大于m的行。

    if结构还可以指定else部分。

    8 进程管理与定时任务和后台执行

    crond是什么?

    crond是一个可以在指定时间执行一个shell脚本或者一系列的Linux命令。和Windows下的计划任务类似。当安装完操作系统后,默认会安装这个服务工具,并且会自动启动crond进程。

    在Linux中任务的调度分为两类

    • 系统任务的调度

    系统会周期性的执行一些工作,比如说写缓存的数据到硬盘,清理日志等

    • 用户任务的调度

    用户定期也会执行一些任务,比如用户数据的备份,定时的邮件提醒等,这些都是通过crondtab来设置

    那么crontab到底怎么用么

    首先看看crontab的使用格式:

    crontab -u user file
    

    常见的选项

    • -u user:很明显是需要表明是那个用户的crontab服务,别瞎搞

    • file:file是命名文件的名字,表示将file作为crontab的任务列表文件并载入到crontab中

    • -e:e为edit,表示标记某个用户的crontab文件内容

    • -l:显示用户的crontab文件、

    crontab的含义

    创建的crontab文件,每一行代表一项任务,每个字段都有对应的设置规则,一共分为6个字段,分别为:

    minute hour day month week command
    
    • minute:区间 0-59

    • hour:区间0-23

    • day:区间0-31

    • month:区间1-12

    • week:区间0-7 周日可以是0/7

    • command

    这里的command代表的是需要执行的而命令,通常为脚本文件,

    除了上面几个字段,还需要注意几个特殊字段

    • *:代表所欲呕可能的值

    • ,:通过,来表示区间范围的值

    • _:整数之间的中杠表示一个证书范围

    • 正斜线:表示时间的间隔频率,比如0-23/2表示每两个小时执行一次
      开始放几个例子**

    crontab -e0 5 * * * /root/bin/backup.sh
    

    这代表的是每天早上5点运行backup.sh

    每个工作日11:59pm进行备份作业

    59 11 * * 1-5 /root/bin/backup.sh
    

    每五分钟运行一个命令

    */5 * * * * /root/bin/check-status.sh
    

    crontab有哪些选项

    crontab -e:修 改crontab文件,如果文件不存在会自动创建

    crontab -l:显示crontab文件

    crontab -r:删除crontab 文件

    crontab -ir:删除crontab文件前提醒用户

    9 后台运行

    用途:不挂断的运行命令

    语法:nohup Command [ Arg … ] [&]

    • 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。

    • 如果当前目录的 "nohup.out" 文件不可写,输出重定向到"home/nohup.out"

    • 如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

    退出状态:该命令返回下列出口值:

    • 126 可以查找但不能调用 Command 参数指定的命令。

    • 127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。

    • 否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

    使用&
    用途:在后台运行,一般两个一起用

    nohup command &
    

    唠嗑-----求赞,求在看

    为了方便大家沟通交流,资源共享。小蓝准备创建一个面试交流群,让正在面试或即将面试的小伙伴能够一起沟通交流,当然群里也会不定期的发发小红包,群里不会存在任何的广告。欢迎有兴趣的小伙伴加入,加群方式扫描下方二维码,备注加群即可。

    相关文章

      网友评论

          本文标题:Linux通用知识

          本文链接:https://www.haomeiwen.com/subject/uqhlvktx.html