linux基礎命令

Linux 命令

解釋:
    [root@linux01 Desktop]#
    root    用戶,是超級用戶
    linux01 主機(主機名:linux01.hadoop.com)
    Desktop    用戶所在目錄 (工做目錄)
    #         超級用戶($表明普通用戶)
經常使用操做
    歷史命令(使用 ↑ ↓ ,獲取歷史命令 )

    tab補全(輸入文件名補全或提示)

    clear (ctrl+l)

    pwd (print name of current/working directory)
        查看當前位置
        家目錄    root用戶           /root
                普通用戶hadoop    /home/hadoop

    man    命令     按q退出
    命令 -help
1. ls (list directory contents)
2.  cd
./  當前目錄
../  上一級目錄
cd ~
cd  回到家目錄
3. mkdir:建立目錄
多級目錄 -p
mkdir -p a/b/c
4. touch:改變文件屬性
5. rmdir 刪除空目錄
rmdir test
6. rm 刪除文件或目錄
-r 迭代
-f 強制:不要問我直接刪
7. cp:複製
-r:遞歸複製目錄
8. mv (移動剪切、重命名)
9. cat(查看較少內容)
10. more
分頁向下查看(空格)
逐行向下查看(回車)
按q或者Ctrl+C終止退出查看的狀態
11. less
12. head
13. tail -3 文件
查看文件後三行
-f 動態查看,跟文件描述符
-F 動態查看,跟隨文件名
14. 關機
shutdown -h now
init 0
15. 重啓
reboot
init 6

vi編輯器

  1. 命令模式
    ndd 刪除當前行開始的n行
    nyy 複製當前行開始的n行
    p 粘貼到當前行後面
    u 撤銷
  2. 插入模式
    在命令行模式,按a, i, o
    a:光標夠
    i:光標位置
    o:光標下一行插入
  3. 底行模式
    在命令行模式下
    鍵入:進入底行模式

    w保存,q退出,!強制
    wq保存並退出
    q!強制退出,不保存修改java

網絡配置

su -  切換爲超級用戶
1) 主機名不能以數字,.開頭,包含特殊字符(*@$)
    hostname            查看主機名
    hostname centos01    臨時修改主機名,重啓失效
    vi /etc/sysconfig/network    永久修改,重啓生效
2) 修改ip
    1) 界面修改
    2) # vi  /etc/sysconfig/network-scripts/ifcfg-eth0
        ONBOOT=yes         //開機自動鏈接網絡
        BOOTPROTO=static  //設置爲靜態  dhcp爲動態, none爲不指定
        # service network restart
    3) 修改主機映射虛擬機
    # vi /etc/hosts
    192.168.247.110    centos01

    Windows
    C:\Windows\System32\drivers\etc\hosts


windows ping  服務器
    ping ip
    ping 主機名
服務器 ping 網關

用戶和用戶組

用戶組:方便管理用戶,舉例: 學校爲了方便管理學生,對學生進行分班node

  • 查看用戶

cat /etc/passwd

root​ ​ ​:x:​0:0:root:/root:/bin/bash
​ root 用戶名
​ x 密碼
​ 0 用戶id
​ 0 用戶組id
​ root 用戶描述
​ /root 用戶家目錄
​ /bin/bash 用戶所用的shelllinux

  • 查看用戶組

cat /etc/group

當建立一個用戶,系統會默認建立一個和用戶名相同的用戶組shell

1. 用戶類型

  1. root用戶, 超級用戶,最高權限,在實際的生產環境中,儘可能不要使用root用戶
    用戶UID 0
  2. 普通用戶
    用戶UID 500開始
  3. 僞用戶 系統給一些進程,分配ID號,這部分爲僞用戶,不能真正的登陸,也沒有家目錄
    UID在1~499

2. 建立刪除用戶

  1. 建立用戶
    ​ # useradd xiefei
    ​ # passwd 密碼 設置或修改密碼
  2. 刪除用戶
    ​ # userdel -r xiefei 完全刪除用戶編程

    -r遞歸刪除用戶家目錄

3. 建立用戶組

​ #groupadd 用戶組windows

4. 切換用戶

​ #su - 切換爲root用戶
​ #su - hadoop 切換爲hadoop
​ su 和 su - 的區別:前者切換用戶, 後者切換用戶及用戶環境
​ # exit 退出用戶centos

用戶文件和目錄權限

drwxr-x--x
​ d 表明目錄
​ - 表明文件
​ rwx 所屬用戶(u)的權限
​ r-x 所屬用戶組(g)的權限
​ --x 其餘用戶(o)的權限
​ ( 用戶是學生, 所屬組是班級, 其餘學生 舉例分析 )api

r 可讀
​w 可寫
​x 可執行
​rwx 可讀可寫可執行
​r-x 可讀可執行安全

rwx 也能夠表示爲 111 7
rw- 110 6
r-x 101 5
r-- 100 4bash

  1. 修改權限

​ # chmod 764 test.c 修改成可讀可寫可執行
​ # chmod u+x test.c 爲所屬用戶添加執行權限
​ # chmod g+w test.c 爲所屬用戶組添加寫權限
​ # chmod o-x test 刪除其餘用戶的執行權限
​ # chomd 777 -R test/ 遞歸修改test的全部文件權限

  1. 修改所屬用戶

​ # chown hadoop msg.txt 把msg.txt修改成hadoop全部

  1. 修改所屬用戶組

​ # chgrp hadoop msg.txt

  1. 修改所屬用戶及所屬用戶組

​ # chown hadoop:hadoop -R hadoop/

  1. 向用戶組添加用戶及刪除用戶,查看用戶所屬用戶組

    # gpasswd -a hadoop mygroup
    # gpasswd -d hadoop mygroup
    # groups hadoop

管道符|, 追加/覆蓋符號

  1. 管道符 |

把前一個命令的輸出結果傳遞給後面的命令處理
​ # cat /etc/passwd | more

  1. 使用grep過濾

​ # cat /etc/passwd | grep 'root'

  1. 過濾條件

​ # ll /etc/ | grep 'sysconfig'
​ # ifconfig | grep 'inet' 查看ip

  1. 添加 >>, 覆蓋>

​ # ll > test.txt
​ # ll >> test.txt

  1. wc (word count)

​ -l 統計行
​ -w 統計word
​ # wc -l /etc/passwd
​ # wc -w test.c

  1. 統計文件或目錄大小

​ # du -sh /lib

  1. 顯示當前系統進程

​ # ps -ef
​ # ps -ef | grep 'java'

搜索命令 find

​ 語法格式:

​ find 範圍 條件

  1. 按文件名

​ # find / -name init
​ 模糊查詢帶有關鍵字的: $ find /etc/ -name *work
​ 查找關鍵字開頭的文件: $ find /etc/ -name init*
​ 匹配單個字符 $ find /etc/ -name ???work
​ 不區分大小寫匹配 $ find /etc/ -iname ???work

  1. 按文件大小

​ 選項:-size
​ 指定方式:+大於, -小於,不加符號表示等於
​ $ # find /etc/ -size +2M

  1. 按所屬用戶,用戶組

​ # find /root -user hadoop
​ # find /root -group hadoop

  1. 按文件類型

​ # find /etc/ -name *work -type f 文件
​ # find /etc/ -name *s -type d 目錄

sudo權限(# visudo)

​ root ALL=(ALL) ALL
​ user01 ALL=(root) NOPASSWD: ALL

​ 第一個ALL是指網絡中的主機,它指明user01用戶能夠在此主機上執行後面的命令。
​ 第二個括號裏的ALL是指目標用戶,也就是以誰的身份去執行命令。
​ 最後一個ALL是指命令。

壓縮解壓

​ windows常見: .rar .zip
​ linux常見: .tar .tar.gz .gz

  1. 壓縮解壓爲.tar

​ tar cvf content.tar Main.java msg.txt 將Main.java msg.txt壓縮爲 context.tar
​ tar xvf content.tar -C test 將content解壓到test文件夾下

  1. 壓縮解壓爲 .tar.gz

​ # tar -zcvf test.tar.gz ./ 將當前目錄壓縮
​ # tar -zxvf test.tar.gz -C ./ 壓縮文件加壓到當前目錄

  1. 壓縮解壓: .gz 不保留源文件

​ 壓縮
​ $ gzip hello.mp4
​ 解壓
​ $ gunzip hello.mp4.gz
​ 選項:
​ -z, --gzip, --gunzip, --ungzip filter the archive through gzip
​ -c, --create create a new archive
​ -x, --extract, --get extract files from an archive
​ -v, --verbose verbosely list files processed
​ -f, --file=ARCHIVE use archive file or device ARCHIVE
​ f後面必須跟上要處理的文件名

rpm包管理

  1. 查看安裝軟件

​ $ rpm -qa | grep jdk
​ 查看某個文件屬於哪一個rpm包安裝的
​ # rpm -qf /etc/ntp.conf

  1. 安裝卸載

​ a) 安裝:
​ # rpm -ivh tree-1.5.3-3.el6.x86_64.rpm
​ 用法: rpm -ivh 軟件名(.rpm)
​ 選項:-i install 表明安裝
​ -vh 顯示詳細的進度
​ # rpm -ivh tree-1.5.3-3.el6.x86_64.rpm
​ b) 卸載
​ 選項: -e 表明卸載 --erase
​ 用法: rpm -e 軟件名(.rpm) --nodeps (不驗證依賴卸載)
​ # rpm -e tree-1.5.3-3.el6.x86_64 --nodeps
​ c) 卸載自帶jdk
​ $ sudo rpm -e java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64 --nodeps
​ $ sudo rpm -e java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64 --nodeps
​ //從新生效
​ $ source /etc/profile

  1. 安裝jdk

    1. 建立兩個目錄

​ $ sudo mkdir /opt/software //安裝包的存放目錄
​ $ sudo mkdir /opt/modules //解壓安裝的目錄

2. 修改目錄的所屬用戶及所屬用戶組

​ $ sudo chown user01:user01 /opt/software/ /opt/modules/

3. 上傳並解壓jdk

​ $ tar -zxf jdk-7u67-linux-x64.tar.gz -C ../modules/

4. 配置環境變量

​ # vi /etc/profile
​ 末尾添加
​ #JAVA_HOME
​ export JAVA_HOME=/opt/modules/jdk1.7.0_67
​ export PATH=$PATH:$JAVA_HOME/bin

5. 使生效

​ #source /etc/profile

6. 檢查是否成功

​ java -version

yum

  • 前提是必須鏈接外網
  • 用來解決rpm依賴性問題
  • 方便、快捷、自動解析依賴
  1. 查詢

​ # yum list //查看yum源上擁有的軟件
​ # yum list installed | more //查看系統中已經安裝好的rpm包 等同於 rpm -qa
​ $ sudo yum list installed | grep tree

  1. 安裝

​ # yum install httpd-devel.x86_64
​ 選項:install 後綴不須要加.rpm 能夠直接使用命令
​ 選項:-y , 表示直接自動確認
​ # yum -y install httpd-devel.x86_64
​ $ sudo yum install tree

  1. 卸載

​ # yum -y remove httpd-devel.x86_64
​ $ sudo rpm -qa | grep tree

  1. 常見問題

​ 不通外網,網絡質量不佳

系統管理命令

  1. top 查看系統資源 -->至關於任務管理器

​ 每隔3秒更新一次
​ 按q退出瀏覽狀態

  1. free 查看內存信息 --》yuan 可能會用到

​ 選項:-m, 就是以MB格式顯示

  1. df -l 查看硬盤分區信息
  2. ps -ef 查看系統進程
    ps -ef | grep crond

​ jps 查看系統正在運行的java進程

  1. kill 殺死正在進行的進程 -》結合jps一塊兒使用

​ 選項:-9
​ kill -9 【pid】

  1. ifconfig
  2. ping 檢測網絡質量和網絡鏈接

​ ping 主機名
​ ip地址
​ 域名

  1. netstat 查看網絡端口

​ 選項:
​ -t #監控tcp協議的進程
​ -l #listenning
​ -n #顯示端口號信息
​ -p # 顯示進程的PID
​ netstat -antp

  1. jps 查看正在運行的java進程
  2. vmstat 2 5

​ 能夠展示給定時間間隔的服務器的狀態值,包括服務器的CPU使用率,內存使用,虛擬內存交換狀況,IO讀寫狀況
​ 2 表示間隔時間
​ 5 表示採集次數

關閉防火牆和安全子系統

​ --》在聯機應用(分佈式)中,通常會關閉防火牆。防火牆默認狀況下,出於安全考慮會限制一些應用的網絡訪問(好比rpc通訊端口),爲了保證多機通訊的穩定,能夠選擇關閉防火牆

  1. 關閉防火牆而且不開機啓動 (/etc/inittab 啓動級別)
1. 關閉Linux 防火牆

    # service iptables stop     ##關閉防火牆
    # service iptables status   ##查看防火牆狀態
     iptables: Firewall is not running.

    2. 設置不開機啓動防火牆
    #  chkconfig iptables off   ##不隨機啓動  設置開機啓動使用 on

    3. 查看防火牆的開機啓動設置
    $ sudo chkconfig --list | grep iptables
  1. 關閉安全子系統
# vi /etc/sysconfig/selinux

​修改下面SELINUX=enforcing爲 SELINUX=disabled

shell 編程

shell腳本的規範

  1. 第一行:#!/bin/sh開頭 或 #!/bin/bash開頭

​ 聲明是什麼類型的shell

  1. 註釋:#
  2. shell腳本以.sh結尾
  3. 執行shell基本的兩種方式:

​ 1)sh hello.sh #執行shell腳本
​ 2)./hello.sh #這種方式要求這個腳本擁有執行權限

​ shell的變量 num=123;str="hello world"
​ 定義變量沒有數據類型
​ 引用變量須要在變量前面添加$符號

shell變量類型

環境變量

保存系統運行時使用的變量
》用戶變量
​ .bash_profile 每一個用戶主目錄下都有這麼這個文件,用來保存每一個用戶的環境變量
》系統變量
/etc/profile:系統全局生效的配置文件

位置變量

將傳遞給腳本的參數保存在位置變量中
以便於在腳本中引用這些變量
Bash 定義9個位置變量:$1 ... $9
$0:表明的是當前腳本的名稱

#! /bin/sh

echo "這是第一個變量$1"
echo "這是第一個變量$2"
echo "這是第一個變量$3"
echo "這是第一個變量$4"
echo "這是第一個變量$9"

預約義變量

​ $0:腳本名稱
​ $!:後臺運行的最後一個進程的PID號
​ $$:當前進程的ID號
​ $#:當前shell的參數個數
​ $*顯示全部的參數內容(總體)
​ $@:顯示全部的參數內容(逐個讀取)
​ $?:判斷,表示程序退出的表明(返回0表明成功,非0表明失敗)

#! /bin/sh
echo "腳本名稱:                $0"
echo "當前進程的ID號:              $$"
echo "當前shell的參數個數:   $#"
echo "顯示全部的參數內容(逐個讀取:$@"

aaaaa
# 這裏會打印一個非0的值, 表示前一行命令執行出錯
echo $?

自定義變量

  1. 語法格式:

​ name=value
​ 等號兩邊不能有空格
​ 變量對大小寫敏感
​ 調用變量的值$name

  1. 變量的賦值

​ 1. 直接賦值 tag1=112
​ 2. tag2=$tag1
​ 3. szie=ls ~/ 將命令賦值給變量 飄號或者反引號
​ shell的字符串/命令(echo ):

#! /bin/sh
# 賦值號先後不能有空格
# 變量沒有類型
numOfPerson=100;
echo $numOfPerson


# 取變量numOfPerson賦值給n
n=$numOfPerson
echo "n=$numOfPerson"

# 將ls -l /etc執行的內容賦值給str
str=`ls /etc`

"" '' 的區別

​ echo 能夠不加引號 #能夠正常輸出的輸出變量
​ echo 加單引號 #單引號內容原樣輸出,單引號將剝奪其中的全部字符的特殊含義
str='hello $num'
​ echo 加雙引號 #雙引號能夠輸出變量,輸出"等,需轉義
str="hello $num"

​ shell的字符串拼接
​ str="hadoop"
​ a="你好$str"

a="你好"\$str

shell運算

  1. 算術

​ 第一種寫法 $(( ))
​ 第二種寫法 $[]
​ 第三種寫法 expr表達式 只能接受數值,expr自己是shell命令,輸出的時使用反引號

​            a=6;b=5

​            echo $((a+b))

​            echo $(( $a * $b ))



​            echo $[a+b]

​            echo $[ $a * $b ]



​            expr $a - $b

​            expr $a \* $b

  1. 邏輯運算

​ -》 && 邏輯與 (命令控制符)
​ cmd1 && cmd2 //前面的命令執行成功纔會執行後面的命令
​ -》 || 邏輯或
​ cmd1 || cmd2 //前面的命令執行失敗纔會執行後面的命令
​ -》 ;無邏輯符號
​ cmd1 ; cmd2

內置測試判斷

  1. 兩種寫法
​            a=6

​            b=9

​        #第一種     變量和比較符之間空格可省略

​            if test 6 -gt 9

​            then

​                echo bigger

​            fi

​        #第二種    變量和比較符之間的空格必須

​            if [ $a -lt $b ]

​            then

​                echo smaller

​            fi
  1. 數值比較

​ -eq #equal 等於
​ -ne #not equal 不等於
​ -gt #greater than 大於
​ -ge #greater equal 大於等於
​ -lt #little than 小於
​ -le #little equal 小於等於
​ 注意:在數值的比較中,不能使用」>「 "<"等符號來進行比較
​ 在test 或 [] 進行測試的時候,必需要有空格

test $1 -gt 60* **-a** *$1 -lt 70 同一個條件內使用

[ $1 -ge 70* **-a** *$1 -lt 80 ]

elif [ $1 -ge 60 ] && [ $1 -lt 70 ]

​ $ [ "990" -le "995" ] && [ "123" -gt "33" ] 這裏要用&&

  1. 字符串的比較

​ = 等於
​ != 不等於
​ -z $str 長度爲0則爲真
​ -n "$str" 長度不爲0則爲真
​ $str 字符串不爲空則爲真

​            #!/bin/sh

​            str1="abc"

​            str2="abc"

​            str3="cde"

​            str4=

​            if [ $str1 = $str2  ]

​            then

​                    echo  str1和str2相等

​            fi

​            if [ $str1 != $str3  ]

​            then

​                    echo str1和str3不相等

​            fi



​            if [ -z $str1  ]

​            then

​                    echo  str1長度爲0

​            fi

​            if [ -n "$str3"  ]

​            then

​                    echo  str3長度不爲0

​            fi

​            if [ $str1  ]

​            then

​                    echo  str1不爲空

​            fi

​            if [ $str4  ]

​            then

​                    echo  str4不爲空

​            fi
  1. 文件的測試

​ -d (directory) 若是是目錄則爲true
​ -f (file) 若是是文件則爲true
​ -r 若是是可讀則爲true
​ -w 若是是可寫則爲true
​ -x exec 若是是可執行則爲true
​ 注意:可讀可寫可執行是針對於執行腳本的用戶而言的權限

​            #!/bin/sh

​            if [ -d $1  ]

​            then

​                echo 是目錄

​            fi

​            if [ -f $1  ]

​            then

​                    echo 是文件

​            fi

​            if [ -r $1  ]

​            then

​                    echo 是可讀的

​            fi

​            if [ -w $1  ]

​            then

​                    echo 是可寫的

​            fi

​            if [ -x $1  ]

​            then

​                    echo 是可執行

​            fi
  1. 邏輯鏈接符:

​ 三種:
​ 1.非 !
​ 2.與 -a
​ 3.或 -o

​            if [ -f  $1 -a $2 -gt 5]

​            then

​                echo  \$2  is $2

​                echo  "\$2 is bigger than 5 "

​             fi

流程控制

  1. if

​ if 條件判斷
​ then
​  command
​ elif 條件判斷
​ then
​  command
​ elif 條件判斷
​ then
​  command
​ ...
​ else
​  command
​ fi

​        #!/bin/sh

​        echo please type age

​        read age

​        if  test $age -ge 0 -a $age -lt 3

​        then

​            echo  baby

​        elif [ $age -ge 3  -a $age -lt 7 ]

​        then

​            echo child

​        elif [ $age -ge 7 ] && [ $age -lt 18 ]

​        then

​            echo teenager

​        elif test $age -ge 18 && test $age -lt 40

​        then

​            echo youth

​        elif test $age -ge 40 && [ $age -lt 60  ]

​        then

​            echo man

​        else

​            echo older

​        fi
​        #!/bin/sh

​        # read socre  and choose level

​        # read 至關於Java中的scanner 是一種交互式命令,讀取設備的輸入

​        echo "請輸入學生成績score:"

​        read score

​        if test $score -ge 90;

​        then

​                echo level A;

​        elif [ $score -ge  80  -a  $score -lt 90 ]

​        then

​             echo "level B";

​        elif test  $score -ge  70  -a  $score -lt 80

​        then

​             echo "level C";

​        elif [ $score -ge  60 ] && [ $score -lt 70 ]

​        then

​             echo "level D";

​        else

​                echo 不及格;

​        fi
  1. 循環語句

​ 1)for 循環
​ I)
​ for((初始化變量值;結束循環條件;循環控制語句))
​ do
​ 循環體
​ done

​                #!/bin/sh

​                sum=0

​                for ((i=0;i<10;i++))

​                do

​                    echo $i

​                    sum=$[ $sum + i ]

​                done

​                echo $sum

2)第二種語法格式:

​ for 變量 in 值1 值2 ...值N

​ do

​ 循環體

​ done

​                #!/bin/sh

​                for MONTH in Jan Feb Mar Apr May Jun July Aug Sep Oct Nov Dec

​                do

​                    echo $MONTH

​                done
​                #!/bin/sh

​                for file in `/bin/ls $1`;

​                do

​                echo $file;

​                done
  1. while 循環

    1.

​ while [ condition #循環條件 ]
​ do
​ #statements
​ #【循環體】
​ #【循環控制】
​ done

​            #!/bin/sh

​            i=1

​            while [ $i -le 10 ]

​            do

​                sum=$((sum+i))

​                i=$[ i + 1 ]

​            done

​            echo $sum
​            #!/bin/sh

​            i=1

​            sum=0

​            while test $i -le 10

​            do

​                sum=$[ $sum + $i ]

​                i=`expr $i + 1`

​            done

​            echo $sum
  1. 第二種語法格式:

​ while read -r line

​ do

​ #【循環體】

​ done

​            #!/bin/sh

​            #Read /ect/sysconfig/network-scripts/ifcfg-eh0 and print out

​            FILE=/etc/sysconfig/network-scripts/ifcfg-eh0

​            while read -r line

​            do

​                echo $line

​            done < $FILE

read中

參數 -r 屏蔽,

若是沒有該選項,則做爲一個轉義字符,有的話 就是個正常的字符了。
command < file 將輸入重定向到 file。

  1. case 相似於java中的 swich case

​ 第一種語法格式:

​            #!/bin/sh

​            echo '輸入 1 到 4 之間的數字:'         echo '你輸入的數字爲:'         read aNum         case $aNum in             1)  echo '你選擇了 1'              ;;             2)  echo '你選擇了 2'              ;;              3)  echo '你選擇了 3'              ;;              4)  echo '你選擇了 4'              ;;              *)  echo '你沒有輸入 1 到 4 之間的數字'              r'm;;         esac

​ 第二種語法格式:

​            #!/bin/sh

​            echo "input from :one two three ....."

​            read input

​            case $input in

​                one | two) echo "your input is one or two"

​                ;;

​                three | four) echo "your input is three or four "

​                ;;

​                five) echo "your input is five"

​                ;;

​                *) echo your input is $input

​    ;;

​            esac

​ shell腳本的調用(在一個腳本中去調用另一腳本)

which touch # 查看shell位置

​            #!/bin/sh

​            source /home/hadoop/shell/hello.sh

date 命令

  1. 顯示系統時間

​ 1.date CST中央標準時間
​ Mon Jun 5 15:11:44 CST 2017
​ 2.date -R 帶時區的時間
​ Mon, 05 Jun 2017 15:14:44 +0800

  1. 格式化日期

​ $ date '+%Y-%m-%d %H:%M:%S'
​ 2017-05-02 11:20:10

設置時間

​ 選項:-s
​ 用法:# date -s "2016-12-08 10:43:00"

ntpdate 命令

​ 用法:# ntpdate 網絡時間服務器(182.92.12.11)

​ sudo ntpdate ntp.api.bz

Crontab計劃任務

  1. )-->週期性執行計劃任務
  2. 選項使用:

​ crontab -l (list ) #查看目前的計劃任務列表
​ crontab -r (remove) #刪除計劃任務
​ crontab -e (eidt) #編輯週期性計劃任務

  1. 進程名稱是crond

​ ps -ef | grep crond $查看此進程是否開啓
​ 默認進程是開啓的,若是沒有開啓,可使用命令手動開啓
​ # service crond status
​ # service crond start
​ # service crond stop
​ # service crond restart

  1. Example of job definition:
​        # .---------------- minute (0 - 59)
​        # |  .------------- hour (0 - 23)
​        # |  |  .---------- day of month (1 - 31)
​        # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
​        # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
​        # |  |  |  |  |
​        # *  *  *  *  * user-name command to be executed
​         *    *      *            *             *
​        分鐘 小時  天(of月)  月(of年)  星期(of周)

特殊字符

""表明全部的取值範圍內的數字,如月份字段爲,則表示1到12個月;

"/"表明每必定時間間隔的意思,如分鐘字段爲*/10,表示每10分鐘執行1次。

"-"表明從某個區間範圍,是閉區間。如「2-5」表示「2,3,4,5」,小時字段中0-23/2表示在0~23點範圍內每2個小時執行一次。

","分散的數字(不必定連續),如1,2,3,4,7,9。

注:因爲各個地方每週第一天不同,所以Sunday=0(第一天)或Sunday=7(最後1天)。

實例)

每一分鐘執行一次command(因cron默認每1分鐘掃描一次,所以全爲*便可)
*/1 * * * * /bin/date  >> /root/Desktop/date.txt

每小時的第3和第15分鐘執行command
3,15 * * * * /bin/cp /root/Desktop/date.txt /root/date.log

天天上午8-11點的第3和15分鐘執行command:
3,15  8-11  *  *  *  command

每隔2天的上午8-11點的第3和15分鐘執行command:
3,15  8-11  */2  *   *  command

每一個星期一的上午8點到11點的第3和第15分鐘執行command
3,15  8-11   *   *  1 command

每晚的21:30執行command:
30  21   *   *  * command

天天晚上6點到次日早上6點 每15分鐘記錄一次時間到/home/uer01/2.log文件中
*/15  18-23,0-6 * * * /bin/date  >> /home/user01/2.log
0,15,30,45  18-23,0-6 * * * /bin/date  -R >> /home/user01/2.log

克隆虛擬機

1 拍快照

​ 右擊虛擬機-> 快照-> 拍攝快照

2 克隆

​ 從快照中克隆

​ 從虛擬機中克隆

​ 管理-> 克隆->選擇從快照(虛擬機當前狀態)->完整克隆

3.修改網卡信息

​ 克隆出來的虛擬機 要修改主機名,映射,還有ip地址,關鍵是要修改網卡信息

​ 1) 修改主機名

​ # vi /etc/sysconfig/network #修改主機名

​ 2) 修改映射

​ # vi /etc/hosts #修改主機映射(linux,windows都要改)

​ 3) 修改 網卡

​ # vi /etc/udev/rules.d/70-persistent-net.rules # 網卡的信息(mac地址HWADD)

​ 刪除原來的網卡信息(經過mac地址來區分)

​ 並將新的網卡的name信息改成eth0

​ 修改後內容

​ # PCI device 0x8086:0x100f (e1000)

​ SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?", ATTR{address}=="00:0c:29:b6:46:5d", ATTR{type}=="1", KERNEL=="eth", NAME="eth0"

​ 4) 修改ip

​ # vi /etc/sysconfig/network-scripts/ifcfg-eth0

​ 刪除uuid,修改mac地址,IPADDR,ONBOOT,BOOTPROTO

​ ONBOOT=yes

​ BOOTPROTO=static

​ HWADDR=00:0c:29:b6:46:5d

​ IPADDR=192.168.239.201

​ PREFIX=24

​ GATEWAY=192.168.239.2

​ DNS1=192.168.239.2

​ NAME="System eth0"

​ # reboot 重啓虛擬機(由於修改了主機名)

相關文章
相關標籤/搜索