Linux 基礎學習訓練教材 - CentOS 8.x

課程問題參考解答

單純提供一個相對的解答,並不是標準答案!

最近更新時間: 2020/06/11

單純就是個解答的參考,寫完之後再來這邊查查看答案跟你想的一樣不一樣!?

第 11 堂課

  • 例題 11.1.1-1:
    1. con-name:該界面的連線名稱,可以被修改,只是一個連線的名稱,通常取名為與介面卡名稱相同。
    2. ifname:就是介面卡的名稱,如本教材的 ens3。
    3. type:達成連線的類型,包括有乙太網路、wifi 無線網路、pppoe 撥接、bluetooth 藍芽等等類型。
  • 例題 11.1.1-2:
    1. 設定屬於自己的網路連線,其實重點就是老師給予的 IP 位址與網路參數要正確喔!
      # 先設定好網路參數,所有的參數通通設定好再啟用!
      [root@localhost ~]# nmcli connection modify ens3 ipv4.method manual \
      > ipv4.addresses 172.16.60.200/16 ipv4.gateway 172.16.200.254 ipv4.dns 168.95.1.1
      # 比較重要的,就是上面反白的部份!每個同學都要不一樣!
      
      [root@localhost ~]# nmcli connection up ens3
      [root@localhost ~]# hostnamectl set-hostname station200.centos
      
    2. 接下來則是檢查上述的設定是否能夠順利的生效!非常重要的測試喔!
      # a. 先經過 nmcli 來檢查剛剛設定的是否正確的生效了!
      [root@station200 ~]# nmcli connection show ens3
      connection.id:                          ens3
      connection.interface-name:              ens3
      connection.autoconnect:                 是
      ipv4.method:                            manual
      ipv4.dns:                               168.95.1.1
      ipv4.addresses:                         172.16.60.200/16
      ipv4.gateway:                           172.16.200.254
      IP4.ADDRESS[1]:                         172.16.60.200/16
      IP4.GATEWAY:                            172.16.200.254
      IP4.DNS[1]:                             168.95.1.1
      # 比較需要注意的,大概就是這幾個設定項目與實際運作的項目了!
      
      # b.1. 檢查各種訊息,先找到上述 ipv4.gateway 後面接的那個 IP,直接 ping 她!
      [root@station200 ~]# ping 172.16.200.254
      PING 172.16.200.254 (172.16.200.254) 56(84) bytes of data.
      64 bytes from 172.16.200.254: icmp_seq=1 ttl=64 time=0.302 ms
      64 bytes from 172.16.200.254: icmp_seq=2 ttl=64 time=0.301 ms
      64 bytes from 172.16.200.254: icmp_seq=3 ttl=64 time=0.315 ms
      ^C   <==這裡使用 [crtl]+c 中斷指令
      --- 172.16.200.254 ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 70ms
      rtt min/avg/max/mdev = 0.301/0.306/0.315/0.006 ms
      
      # b.2. 如上所示,要出現 time=xxx ms 的字樣,才是真的連到該通訊閘喔!很重要!
      
      # b.3. 那個 ms 指的是 10-3 秒,就是 0.001 秒,很小的單位。
      # 意義是,將訊息在 Server/Client 兩端傳送所經過的時間,越小越好!
      
      # c. 使用 dig 可以觀察 DNS 由主機名稱找到 IP 的資訊。
      [root@station200 ~]# dig www.google.com
      
      ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el8 <<>> www.google.com
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60556
      ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
      
      ;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags:; udp: 4096
      ; COOKIE: 15d71555225eb80855fcf4d25ec0df934fd9517a795492fb (good)
      ;; QUESTION SECTION:
      ;www.google.com.                        IN      A  <==指的是 Address 的縮寫
      
      ;; ANSWER SECTION:
      www.google.com.         104     IN      A       172.217.27.132  <==找到正確的 IP 囉!
      
      ;; Query time: 4 msec
      ;; SERVER: 168.95.1.1#53(168.95.1.1)   <==我們是向這部主機詢問的結果!
      ;; WHEN: 日  5月 17 14:54:08 CST 2020
      ;; MSG SIZE  rcvd: 87
      # 透過 QUESTION 分析問題,透過 ANSWER 回答問題,透過 SERVER 確認哪個伺服器的回應,
      # 所以,當然由 ANSWER 回答了我們的問題,得到了上述 172.217.27.132 這個 IP 位址。
      
      # d. 要找到本機的主機名稱,通常有兩個常用的指令如下:
      [root@station200 ~]# hostname
      station200.centos
      [root@station200 ~]# hostnamectl
         Static hostname: station200.centos
               Icon name: computer-vm
                 Chassis: vm
              Machine ID: 502dbaaf2a074134909a59ef9ab651c1
                 Boot ID: b2952f724af0470cafc231c72afbcf9e
          Virtualization: kvm
        Operating System: CentOS Linux 8 (Core)
             CPE OS Name: cpe:/o:centos:centos:8
                  Kernel: Linux 4.18.0-147.el8.x86_64
            Architecture: x86-64
      
      [root@station200 ~]# cat /etc/hostname
      station200.centos
      # 事實上,主機的名稱記載在 /etc/hostname 嚕!
      
  • 例題 11.1.2-1:
    1. 先透過 --help 或 man 等方式,查詢到時區列表的功能,之後列出所有時區列表
      [root@station200 ~]# timedatectl --help
      timedatectl [OPTIONS...] COMMAND ...
      
      Query or change system time and date settings.
      .......
      
      Commands:
        status                   Show current time settings
        show                     Show properties of systemd-timedated
        set-time TIME            Set system time
        set-timezone ZONE        Set system time zone
        list-timezones           Show known time zones
        set-local-rtc BOOL       Control whether RTC is in local time
        set-ntp BOOL             Enable or disable network time synchronization
      .......
      
      [root@station200 ~]# timedatectl list-timezones
      Africa/Abidjan
      Africa/Accra
      Africa/Addis_Ababa
      ......
      Pacific/Tongatapu
      Pacific/Wake
      Pacific/Wallis
      UTC
      lines 383-426/426 (END)
      
      可以找到標準時區的 UTC,但是找不到日本時區喔!
    2. Linux 標準時區其實列在 /usr/share/zoneinfo 目錄內,所以我們也到該目錄去找找:
      [root@station200 ~]# find /usr/share/zoneinfo -name '*Japan*'
      /usr/share/zoneinfo/posix/Japan
      /usr/share/zoneinfo/right/Japan
      /usr/share/zoneinfo/Japan
      
      [root@station200 ~]# find /usr/share/zoneinfo -name '*Taipei*'
      /usr/share/zoneinfo/Asia/Taipei
      /usr/share/zoneinfo/posix/Asia/Taipei
      /usr/share/zoneinfo/right/Asia/Taipei
      
      其實是有日本時區喔!等等使用 /usr/share/zoneinfo/Japan 來檢查看看!
    3. 目前的台灣、日本時間差異多少呢?檢查看看:
      [root@station200 ~]# date
      日  5月 17 15:23:22 CST 2020
      
      [root@station200 ~]# timedatectl set-timezone Japan
      [root@station200 ~]# date
      日  5月 17 16:23:35 JST 2020
      
      原來時間差異 1 個小時喔!台灣與日本。
    4. 繼續將時間改為格林威治標準時間 (UTC/GMT) 看看!
      [root@station200 ~]# date
      日  5月 17 16:25:49 JST 2020
      [root@station200 ~]# timedatectl set-timezone UTC
      [root@station200 ~]# date
      日  5月 17 07:25:55 UTC 2020
      
      格林威治時間比日本時間慢了 9 個小時啊~
    5. 將時間改回來啊~
      [root@station200 ~]# timedatectl set-timezone Asia/Taipei
      [root@station200 ~]# date
      日  5月 17 15:27:14 CST 2020
      [root@station200 ~]# man timedatectl
      [root@station200 ~]# timedatectl set-time "2020-05-17 15:28:20"
      [root@station200 ~]# date
      日  5月 17 15:28:22 CST 2020
      
  • 例題 11.1.4-1:
    1. 先確認系統服務的相關資料
      [root@station200 ~]# firewall-cmd --get-services
      RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit 
       bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet 
       bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit 
       ......
      
      [root@station200 ~]# firewall-cmd --permanent --list-services
      cockpit dhcpv6-client http ssh
      
      # 底下先刪除所有的服務
      [root@station200 ~]# firewall-cmd --permanent --remove-service=cockpit
      success
      [root@station200 ~]# firewall-cmd --permanent --remove-service=http
      success
      [root@station200 ~]# firewall-cmd --permanent --remove-service=dhcpv6-client
      success
      [root@station200 ~]# firewall-cmd --permanent --remove-service=ssh
      success
      [root@station200 ~]# firewall-cmd --permanent --list-services
      
      # 再加入需要的服務囉!
      [root@station200 ~]# firewall-cmd --permanent --add-service=http
      success
      [root@station200 ~]# firewall-cmd --permanent --add-service=https
      success
      [root@station200 ~]# firewall-cmd --permanent --add-service=ssh
      success
      [root@station200 ~]# firewall-cmd --permanent --add-service=ftp
      success
      [root@station200 ~]# firewall-cmd --permanent --list-services
      ftp http https ssh
      
    2. 針對非服務的其他設定來說,規則比較麻煩!需要額外透過 firewalld.richlanguage 來查詢才可以!
      [root@station200 ~]# man firewalld.richlanguage
      EXAMPLES
             These are examples of how to specify rich language rules. This format
             (i.e. one string that specifies whole rule) uses for example firewall-cmd
             --add-rich-rule (see firewall-cmd(1)) as well as D-Bus interface.
      .......
         Example 3
             Allow new IPv4 connections from address 192.168.0.0/24 for service tftp
             and log 1 per minutes using syslog
      
                 rule family="ipv4" source address="192.168.0.0/24" service name="tftp" 
                 log prefix="tftp" level="info" limit value="1/m" accept
      .......
         Example 6
             White-list source address to allow all connections from 192.168.2.2
      
                 rule family="ipv4" source address="192.168.2.2" accept
      .......
      
      [root@station200 ~]# firewall-cmd --permanent \
      > --add-rich-rule="rule family='ipv4' source address='172.16.100.254' accept"
      
      [root@station200 ~]# firewall-cmd --permanent --add-rich-rule="rule family='ipv4' \
      > source address='172.16.0.0/16' service name='ssh' accept"
      
      [root@station200 ~]# firewall-cmd --permanent --list-all
      public
        target: default
        icmp-block-inversion: no
        interfaces:
        sources:
        services: ftp http https ssh
        ports:
        protocols:
        masquerade: no
        forward-ports:
        source-ports:
        icmp-blocks:
        rich rules:
              rule family="ipv4" source address="172.16.100.254" accept
              rule family="ipv4" source address="172.16.0.0/16" service name="ssh" accept
      
    3. 直接將 firewalld 重新啟動,規則就能夠立刻更新了!
      [root@station200 ~]# firewall-cmd --list-all
      public (active)
        target: default
        icmp-block-inversion: no
        interfaces: ens3
        sources:
        services: cockpit dhcpv6-client http ssh
        ports:
        protocols:
        masquerade: no
        forward-ports:
        source-ports:
        icmp-blocks:
        rich rules:
      
      [root@station200 ~]# systemctl restart firewalld.service
      [root@station200 ~]# firewall-cmd --list-all
      public (active)
        target: default
        icmp-block-inversion: no
        interfaces: ens3
        sources:
        services: ftp http https ssh
        ports:
        protocols:
        masquerade: no
        forward-ports:
        source-ports:
        icmp-blocks:
        rich rules:
              rule family="ipv4" source address="172.16.100.254" accept
              rule family="ipv4" source address="172.16.0.0/16" service name="ssh" accept
      
  • 例題 11.2.1-1:
    1. 進行環境的建置:
      [root@station200 ~]# cd /dev/shm
      [root@station200 shm]# mkdir zip
      [root@station200 shm]# cd zip
      [root@station200 zip]# ll -Sr /etc
      .....
      -rw-r--r--.  1 root root     60352  5月 11  2017 mime.types
      -rw-r--r--.  1 root root     67225  4月 13 08:53 ld.so.cache
      -rw-r--r--.  1 root root    692241  9月 10  2018 services
      
      [root@station200 zip]# cp /etc/services filename.1
      [root@station200 zip]# cp /etc/services filename.2
      [root@station200 zip]# cp /etc/services filename.3
      [root@station200 zip]# cp /etc/services filename.4
      [root@station200 zip]# ll
      -rw-r--r--. 1 root root 692241  5月 17 16:39 filename.1
      -rw-r--r--. 1 root root 692241  5月 17 16:39 filename.2
      -rw-r--r--. 1 root root 692241  5月 17 16:39 filename.3
      -rw-r--r--. 1 root root 692241  5月 17 16:39 filename.4
      
    2. 開始處理壓縮功能
      [root@station200 zip]# time gzip filename.1
      
      real    0m0.029s
      user    0m0.027s
      sys     0m0.002s
      [root@station200 zip]# time bzip2 filename.2
      
      real    0m0.069s
      user    0m0.063s
      sys     0m0.002s
      [root@station200 zip]# time xz filename.3
      
      real    0m0.381s
      user    0m0.337s
      sys     0m0.009s
      
      [root@station200 zip]# man xz
             -T threads, --threads=threads
      
      [root@station200 zip]# time xz -T 2 --block-size=128K filename.4
      
      real    0m0.212s
      user    0m0.358s
      sys     0m0.024s
      
      [root@station200 zip]# ll
      -rw-r--r--. 1 root root 142551  5月 17 16:39 filename.1.gz
      -rw-r--r--. 1 root root 129788  5月 17 16:39 filename.2.bz2
      -rw-r--r--. 1 root root 105872  5月 17 16:39 filename.3.xz
      -rw-r--r--. 1 root root 113896  5月 17 16:39 filename.4.xz
      
      基本上,xz 透過多執行緒進行壓縮時,最好給予一個固定的 block size 作為每個執行緒分到的量,然後個別進行壓縮, 這樣的效率會好上很多。因為我們的檔案容量不大,因此採用比較小的 128K 作為切割,你可以看到 user 的時間花費大約是 0.358s, 跟預設的 xz 單執行緒沒有差很多!不過,因為用到兩顆 CPU,那個 0.358s 其實是兩顆 CPU 使用時間的總和!所以, 事實上人類時間花費只有 0.212s,是比單執行緒好很多的!另外,因為我們上面測試的是小型的檔案,所以, xz 的多執行緒效果不明顯。如果是大型的檔案,使用 xz 的多執行緒,其速度效能要比其他兩個好喔!
    3. 開始解壓縮:
      [root@station200 zip]# time gzip -d filename.1.gz
      
      real    0m0.007s
      user    0m0.006s
      sys     0m0.001s
      [root@station200 zip]# time bzip2 -d filename.2.bz2
      
      real    0m0.027s
      user    0m0.023s
      sys     0m0.004s
      [root@station200 zip]# time xz -d filename.3.xz
      
      real    0m0.016s
      user    0m0.014s
      sys     0m0.001s
      
      [root@station200 zip]# ll
      -rw-r--r--. 1 root root 692241  5月 17 16:39 filename.1
      -rw-r--r--. 1 root root 692241  5月 17 16:39 filename.2
      -rw-r--r--. 1 root root 692241  5月 17 16:39 filename.3
      -rw-r--r--. 1 root root 113896  5月 17 16:39 filename.4.xz
      
    4. 開始使用 gzip 壓縮
      [root@station200 zip]# gzip -c filename.1 > filename.1.gz
      [root@station200 zip]# ll filename.1*
      -rw-r--r--. 1 root root 692241  5月 17 16:39 filename.1
      -rw-r--r--. 1 root root 142551  5月 17 16:49 filename.1.gz
      
  • 例題 11.2.2-1:
    1. 先來查詢如何解壓縮:
      # 解壓縮的方式,當然就是 -x 這個支援項目
      
      # 先在本目錄底下解開:
      [root@station200 zip]# ll
      -rw-r--r--. 1 root root 3726192  5月 17 20:15 etc.tar.xz
      
      [root@station200 zip]# tar -Jx -f etc.tar.xz
      [root@station200 zip]# ll
      drwxr-xr-x. 135 root root    5280  5月 17 15:47 etc
      -rw-r--r--.   1 root root 3726192  5月 17 20:15 etc.tar.xz
      
      # 在非本目錄解開,可以透過 -C 來處理
      [root@station200 zip]# ll -d /tmp/etc*
      ls: 無法存取 '/tmp/etc*': 沒有此一檔案或目錄
      
      [root@station200 zip]# tar -Jx -f etc.tar.xz -C /tmp
      [root@station200 zip]# ll -d /tmp/etc*
      drwxr-xr-x. 135 root root 8192  5月 17 15:47 /tmp/etc
      
    2. 由於 xz 可以支援多執行緒,同時現今 CPU 多有多核心,因此,可以嘗試使用 xz 的支援來處理喔!
      # 先測試單執行緒的時間
      [root@station200 zip]# time tar -Jc -f etc2.tar.xz /etc
      tar: 從成員名稱中移除前端的 /
      
      real    0m15.025s
      user    0m14.779s
      sys     0m0.138s
      
      # 使用管線的方式,來處理一下資料的壓縮:
      [root@station200 zip]# tar -Jc -f - /etc | cat > etc3.tar.xz
      [root@station200 zip]# ll etc*tar*
      -rw-r--r--. 1 root root 3726192  5月 17 20:26 etc2.tar.xz
      -rw-r--r--. 1 root root 3726192  5月 17 20:27 etc3.tar.xz
      -rw-r--r--. 1 root root 3726192  5月 17 20:15 etc.tar.xz
      
      # 使用多執行緒來處理看看:
      [root@station200 zip]# cat /proc/cpuinfo  | grep processor
      processor       : 0
      processor       : 1
      # 出現幾行就是有幾顆 CPU 的意思。不過,這裡應該指的是執行緒喔!
      
      [root@station200 zip]# time tar -c -f - /etc | xz -c > etc4.tar.xz
      tar: 從成員名稱中移除前端的 /
      
      real    0m15.405s
      user    0m15.281s
      sys     0m0.129s
      
      [root@station200 zip]# time tar -c -f - /etc | xz -T 2 --block-size=1M -c > etc4.tar.xz
      tar: 從成員名稱中移除前端的 /
      
      real    0m6.788s
      user    0m13.428s
      sys     0m0.073s
      # 你只要看 real 項目就好,真的速度有差喔!雖然壓縮後的容量會稍微放大!
      
      [root@station200 zip]# ll -d etc*
      drwxr-xr-x. 135 root root    5280  5月 17 15:47 etc
      -rw-r--r--.   1 root root 3726192  5月 17 20:26 etc2.tar.xz
      -rw-r--r--.   1 root root 3726192  5月 17 20:27 etc3.tar.xz
      -rw-r--r--.   1 root root 3950316  5月 17 21:24 etc4.tar.xz
      -rw-r--r--.   1 root root 3726192  5月 17 20:15 etc.tar.xz
      
  • 例題 11.2.3-1:
    [root@station200 ~]# mkdir /backups
    [root@station200 ~]# cd /backups/
    [root@station200 backups]# vim backup_system.sh
    #!/bin/bash
    
    mysource="/etc /home /root /var/spool/mail /var/spool/cron /var/spool/at"
    mytarget="/backups/backup_system_$( date +%Y_%m_%d ).tar.gz"
    
    tar -zc -f ${mytarget} ${mysource}
    
    [root@station200 backups]# sh backup_system.sh
    tar: 從成員名稱中移除前端的 /
    tar: 從硬式連結目標中移除前端的 /
    
    [root@station200 backups]# ll
    -rw-r--r--. 1 root root 8094681  5月 17 21:33 backup_system_2020_05_17.tar.gz
    -rw-r--r--. 1 root root     184  5月 17 21:33 backup_system.sh
    
  • 例題 11.3.1-1:
    # 某些小型系統確實不會啟動 atd 的,所以,如果發現沒啟動,就啟動它即可!
    [root@station200 backups]# systemctl restart atd
    [root@station200 backups]# systemctl enable atd
    
  • 例題 11.3.1-2:
    [root@station200 backups]# at 17:00 2020-12-31
    warning: commands will be executed using /bin/sh
    at> wall 'This system will shutdown at 17:30. Please backup your work and logout system'
    at> sleep 30m
    at> poweroff
    at> <EOT>
    job 2 at Thu Dec 31 17:00:00 2020
    
  • 例題 11.3.1-3:
    [root@station200 ~]# at now + 4 hours
    warning: commands will be executed using /bin/sh
    at> poweroff
    at> <EOT>
    job 3 at Mon May 18 02:46:00 2020
    
  • 例題 11.3.2-1:
    因為 student 要執行兩個 crontab 的例行工作排程,所以,需要寫兩行喔!
    [student@station200 22:50 2 ~]$ crontab -e
    0   11 * * * /usr/sbin/ip addr show > /home/student/myipshow.txt
    */10 * * * * ip addr show > /dev/shm/myip
    
    [student@station200 22:52 3 ~]$ crontab -l
    0   11 * * * /usr/sbin/ip addr show > /home/student/myipshow.txt
    */10 * * * * ip addr show > /dev/shm/myip
    
  • 例題 11.3.2-2:
    [root@station200 ~]# chmod 744 /backups/backup_system.sh
    [root@station200 ~]# ll /backups/backup_system.sh
    -rwxr--r--. 1 root root 184  5月 17 21:33 /backups/backup_system.sh
    
    [root@station200 ~]# cd /etc/cron.monthly/
    [root@station200 cron.monthly]# ln /backups/backup_system.sh .
    [root@station200 cron.monthly]# ll
    -rwxr--r--. 2 root root 184  5月 17 21:33 backup_system.sh
    
  • 例題 11.4 課後練習
    1. 進行課堂上面的實做過程資料的清理!
      # a. 探查一下有多少 at job 存在!
      [root@station200 ~]# atq
      1       Mon May 18 11:00:00 2020 a root
      2       Thu Dec 31 17:00:00 2020 a root
      3       Mon May 18 02:46:00 2020 a root
      
      [root@station200 ~]# ll /var/spool/at
      總計 12
      -rwx------. 1 root root 3173  5月 17 21:40 a0000101944cb4
      -rwx------. 1 root root 3234  5月 17 21:44 a0000201994afc
      -rwx------. 1 root root 3136  5月 17 22:46 a0000301944ac6
      drwx------. 2 root root    6  5月 11  2019 spool
      # 可以看到三個檔案!這三個檔案就是 at job 的實際設定資訊!
      
      # b. 檢視有沒有 poweroff 時,可以這樣做:
      [root@station200 ~]# at -c 1 | tail
      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin; export PATH
      HISTSIZE=1000; export HISTSIZE
      LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
      cd /backups || {
               echo 'Execution directory inaccessible' >&2
               exit 1
      }
      ${SHELL:-/bin/sh} << 'marcinDELIMITER0a17ade1'
      ip addr show &> /home/student/myipshow.txt
      marcinDELIMITER0a17ade1
      
      [root@station200 ~]# at -c 2 | tail
      LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
      cd /backups || {
               echo 'Execution directory inaccessible' >&2
               exit 1
      }
      ${SHELL:-/bin/sh} << 'marcinDELIMITER0a5b0fd2'
      wall 'This system will shutdown at 17:30. Please backup your work and logout system'
      sleep 30m
      poweroff
      marcinDELIMITER0a5b0fd2
      
      [root@station200 ~]# at -c 3 | tail
      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin; export PATH
      HISTSIZE=1000; export HISTSIZE
      LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
      cd /root || {
               echo 'Execution directory inaccessible' >&2
               exit 1
      }
      ${SHELL:-/bin/sh} << 'marcinDELIMITER05b75d9b'
      poweroff
      marcinDELIMITER05b75d9b
      # 所以看起來只有 2, 3 號有關機任務,所以,取消這兩個即可!
      
      [root@station200 ~]# atrm 2
      [root@station200 ~]# atrm 3
      [root@station200 ~]# atq
      1       Mon May 18 11:00:00 2020 a root
      
      # c. 檢查一下 crond 這個服務的紀錄檔!
      [root@station200 ~]# tail /var/log/cron
      May 17 22:52:25 www crontab[22921]: (student) LIST (student)
      May 17 22:57:01 www crond[1138]: (*system*) RELOAD (/etc/crontab)
      May 17 22:58:01 www crond[1138]: (*system*) RELOAD (/etc/crontab)
      May 17 23:00:02 www CROND[23056]: (student) CMD (ip addr show > /dev/shm/myip)
      May 17 23:00:02 www CROND[23031]: (student) CMDOUT (/bin/sh: ip: command not found)
      May 17 23:01:01 www CROND[23087]: (root) CMD (run-parts /etc/cron.hourly)
      May 17 23:01:01 www run-parts[23087]: (/etc/cron.hourly) starting 0anacron
      May 17 23:01:01 www run-parts[23087]: (/etc/cron.hourly) finished 0anacron
      May 17 23:10:01 www CROND[23211]: (student) CMD (ip addr show > /dev/shm/myip)
      May 17 23:10:01 www CROND[23183]: (student) CMDOUT (/bin/sh: ip: command not found)
      # 確實有執行喔!不過指令有點問題!應該要用絕對路徑比較好!
      
      # d. 其實就是查看一般用戶的 crontab 設定
      [root@station200 ~]# ll /var/spool/cron
      -rw-------. 1 student student 107  5月 17 22:52 student
      
      [root@station200 ~]# cat /var/spool/cron/student
      0   11 * * * /usr/sbin/ip addr show > /home/student/myipshow.txt
      */10 * * * * ip addr show > /dev/shm/myip
      
      # e. 幫一般帳號處理 crontab 的方法:
      [root@station200 ~]# crontab -e -u student
      0   11 * * * /usr/sbin/ip addr show > /home/student/myipshow.txt
      #*/10 * * * * ip addr show > /dev/shm/myip
      
      [root@station200 ~]# crontab -l -u student
      
修改歷史:
  • 2020/02/25:嘗試直接在課程中加入解答,讓大家有個參考依據。不過,沒事不要來看啊!
  • 2020/03/10:加入了第三章的後課練習部份。
2020/03/02 以來統計人數
計數器
其他連結
環境工程模式篇
鳥園討論區
鳥哥舊站

今日 人數統計
昨日 人數統計
本月 人數統計
上月 人數統計