1. 程式人生 > >2018-06-13(日常運維三)

2018-06-13(日常運維三)

rhel 可用 cut 進行 默認 遇到 agen readonly xmpp

10.19 iptables規則備份和恢復

service iptables save 將規則保存到默認配置文件/etc/sysconfig/iptables
iptables如果不使用service iptables save命令,則重啟之後規則會全部消失。
如果想啟動服務就讓有規則,就把iptables保存在/etc/sysconfig/iptables
利用iptables-save保存規則到指定路徑:iptables-save > /tmp/my.ipt
利用iptables-restore恢復指定路徑保存的規則:iptables-restore < /tmp/my.ipt

[root@luo ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  確定  ]
[root@luo ~]# iptables-save > /tmp/my.ipt
[root@luo ~]# ls /tmp/
my.ipt
[root@localhost ~]# ls /tmp
systemd-private-16dd9b4d15f944eea512c061edfabb11-chronyd.service-E303Bu
systemd-private-16dd9b4d15f944eea512c061edfabb11-vgauthd.service-9oSMYF
systemd-private-16dd9b4d15f944eea512c061edfabb11-vmtoolsd.service-7EvtoR
systemd-private-fdeffbbc916c4c189ba146d0f76f7067-chronyd.service-gDPSVB
systemd-private-fdeffbbc916c4c189ba146d0f76f7067-vgauthd.service-mEHtob
systemd-private-fdeffbbc916c4c189ba146d0f76f7067-vmtoolsd.service-M3C6xo
[root@luo ~]# iptables-restore < /tmp/my.ipt

10.20 firewalld的9個zone

打開firewalld,先關閉iptables

systemctl disable iptables
systemctl stop iptables
systemctl enable firewalld
systemctl start firewalld

firewalld默認的9個zone :默認zone為public

drop(丟棄):任何接收的網絡數據包都被丟棄,沒有任何回復;
block(限制):任何接收的網絡連接都被ipv4的icmp-host-prohibited信息和ipv6的icmp-host-prohibited信息所拒絕;(針對icmp)

public(公共):在公共區域內使用,不能相信網絡內的其他計算機不會對你的計算機造成危害,只能接收經過選取;
external(外部):特別是為路由器啟用了偽裝功能的外部網,你不能信任來自網絡的其他計算,不能相信他們不會對你造成傷害,只能接受經過選擇的連接。
dmz(非軍事區):用於你的非軍事區內的電腦,此區域可公開訪問,可以有限的進入你的內部網絡,僅僅接受經過選擇的連接。
work(工作):用於工作區,你可以基本信任網絡內的其他電腦不會對你造成危害,僅僅接收經過選擇的連接。
home(家庭):用於內部網絡,你可以基本上信任網絡內其他電腦不會對你造成危害,僅僅接收經過選擇的連接。
internal(內部):
用於內部網絡,你可以基本上信任網絡內其他電腦不會對你造成危害,僅僅接收經過選擇的連接。
trusted(信任):可接受所有的網絡連接

firewalld有zone和service兩個基礎概念

10.21 firewalld關於zone的操作

查看所有zone:

[root@luo ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

查看默認zone:

[root@luo ~]# firewall-cmd --get-default-zone
public

firewall-cmd命令zone的操作:

[root@luo ~]# firewall-cmd --set-default-zone=work   設定默認zone為work
success
[root@luo ~]# firewall-cmd --get-zone-of-interface=ens33 查看指定網卡所在的zone
work
[root@luo ~]# firewall-cmd --zone=public --add-interface=lo 給指定網卡設置zone
success
[root@luo ~]# firewall-cmd --zone=dmz --change-interface=lo 針對指定網卡更改zone
success
[root@luo ~]# firewall-cmd --zone=dmz --remove-interface=lo 針對網卡刪除zone
success
[root@luo ~]# firewall-cmd --get-active-zones 查看系統所有網卡所在的zone
work
  interfaces: ens33

10.22 firewalld關於service的操作

配置文件模板路徑:/usr/lib/firewalld/services/
實際生效配置目錄:/etc/firewalld/services/
把系統文件內所有的service列出來

[root@luo ~]# firewall-cmd --get-service
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp open*** ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

列出默認zone下的service

[root@luo ~]# firewall-cmd --list-services
ssh dhcpv6-client

列出指定的zone下的service :firewall-cmd --zone=(zone名) --list-service

[root@luo ~]# firewall-cmd --zone=public --list-service
ssh dhcpv6-client

把service加入到指定zone下;只是暫時寫入內存中;firewall-cmd --zone=(zone名) --add-service=(service名)

[root@luo ~]# firewall-cmd --zone=public --add-service=http  添加http服務到public zone
success
[root@luo ~]# firewall-cmd --zone=public --list-service
ssh dhcpv6-client http

修改配置文件,添加http服務到public zone,永久的

[root@luo ~]# firewall-cmd --zone=public --add-service=http --permanent
success

10.23 linux任務計劃cron

crontab 命令
-u 表示指定某個用戶,不加-u則表示當前用戶
-e 表示指定任務計劃
-l 表示列出任務計劃
-r 表示刪除任務計劃

[root@luo ~]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# 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

格式:分 時 日 月 周 命令
分的範圍:0-59 (* 表示所有)
時的範圍:0-23 (* 表示所有)
日的範圍:1-31 (* 表示所有)
月的範圍:1-12 (* 表示所有)
周的範圍:0-6(Sunday=0 or 7) (* 表示所有)
任務計劃不執行,一般有兩種情況:1.crond服務沒啟動,默認是開機啟動的。2.PATH沒有命令的路徑,腳本中沒使用絕對路徑導致命令找不到
啟動crond服務

[root@luo ~]# systemctl start crond                    #啟動crond服務
[root@luo ~]# ps aux |grep crond                       #查看有沒有crond進程
root        557  0.0  0.1 126280  1608 ?        Ss   19:37   0:00 /usr/sbin/crond -n
root       2429  0.0  0.0 112720   972 pts/2    R+   21:58   0:00 grep --color=auto crond
[root@luo ~]# systemctl status crond                  #查看crond狀態
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since 三 2018-06-13 10:57:50 CST; 1 day 11h ago
 Main PID: 557 (crond)
   CGroup: /system.slice/crond.service
           └─557 /usr/sbin/crond -n
6月 13 10:57:50 luo systemd[1]: Started Command Scheduler.
6月 13 10:57:50 luo systemd[1]: Starting Command Scheduler...
6月 13 10:57:51 luo crond[557]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 93% if used.)
6月 13 10:57:51 luo crond[557]: (CRON) INFO (running with inotify support)

停止crond服務:

[root@luo ~]# systemctl stop crond.service

10.24 chkconfig工具

查看預設服務:

[root@luo ~]# ls /etc/init.d/
functions   mysqld      netconsole  network     README

列出服務和級別開啟狀態:chkconfig --list

[root@luo ~]# chkconfig --list

註:該輸出結果只顯示 SysV 服務,並不包含
原生 systemd 服務。SysV 配置數據
可能被原生 systemd 配置覆蓋。 

      要列出 systemd 服務,請執行 ‘systemctl list-unit-files‘。
      查看在具體 target 啟用的服務請執行
      ‘systemctl list-dependencies [target]‘。

netconsole      0:關 1:關 2:關 3:關 4:關 5:關 6:關
network         0:關 1:關 2:開 3:開 4:開 5:開 6:關

centos7之前采用的服務管理是:SysV;7則換成了system
--add  增加所指定的系統服務,讓chkconfig指令得以管理它,並同時在系統啟動的敘述文件內增加相關數據。
--del  刪除所指定的系統服務,不再由chkconfig指令管理,並同時在系統啟動的敘述文件內刪除相關數據。
--level<等級代號>  指定讀系統服務要在哪一個執行等級中開啟或關畢。
0:關機 1:單用戶 2:無網絡連接的多用戶命令行模式 3:有網絡連接的多用戶命令行模式(常用級別) 4:系統保留 5:圖形化界面 6:重啟
更改某級別下的開機狀態:

[root@luo ~]# chkconfig --level 3 mysqld off                       #指定mysqld在運行級別3不開機啟動
[root@luo ~]# chkconfig --list

註:該輸出結果只顯示 SysV 服務,並不包含
原生 systemd 服務。SysV 配置數據
可能被原生 systemd 配置覆蓋。 
      要列出 systemd 服務,請執行 ‘systemctl list-unit-files‘。
      查看在具體 target 啟用的服務請執行
      ‘systemctl list-dependencies [target]‘。
mysqld          0:關 1:關 2:開 3:關 4:開 5:開 6:關
netconsole      0:關 1:關 2:關 3:關 4:關 5:關 6:關
network         0:關 1:關 2:開 3:開 4:開 5:開 6:關

多個級別:chkconfig --level 345 mysqld off
不加級別表示省略;默認針對級別2、3、4、5、
刪除:chkconfig --del 服務名
添加:chkconfig --add 服務名

10.25 systemd管理服務

系統單元:在/lib/systemd/system目錄中,優先級高於用戶單元。
用戶單元:在/usr/lib/systemd/system目錄中
查看用戶所有unit:ls /usr/lib/systemd/system/

[root@luo ~]# ls /usr/lib/systemd/system/
Display all 257 possibilities? (y or n)
arp-ethers.service                             rhel-configure.service
auditd.service                                 rhel-dmesg.service
[email protected]                                rhel-domainname.service
basic.target                                   rhel-import-state.service
basic.target.wants/                            rhel-loadmodules.service
blk-availability.service                       rhel-readonly.service
bluetooth.target                               rpcbind.target
brandbot.path                                  rsyncd.service
brandbot.service                               [email protected]
chrony-dn***[email protected]                         rsyncd.socket
chrony-dn***[email protected]                           rsyslog.service
chronyd.service                                runlevel0.target
chrony-wait.service                            runlevel1.target
console-getty.service                          runlevel1.target.wants/
console-shell.service                          runlevel2.target
[email protected]                       runlevel2.target.wants/
cpupower.service                               runlevel3.target
crond.service                                  runlevel3.target.wants/
cryptsetup-pre.target                          runlevel4.target
cryptsetup.target                              runlevel4.target.wants/
ctrl-alt-del.target                            runlevel5.target
dbus-org.freedesktop.hostname1.service         runlevel5.target.wants/
dbus-org.freedesktop.import1.service           runlevel6.target
dbus-org.freedesktop.locale1.service           saslauthd.service
dbus-org.freedesktop.login1.service            [email protected]
dbus-org.freedesktop.machine1.service          sendmail.service
dbus-org.freedesktop.timedate1.service         [email protected]
dbus.service                                   shutdown.target
dbus.socket                                    shutdown.target.wants/
dbus.target.wants/                             sigpwr.target
debug-shell.service                            sleep.target
default.target                                 -.slice
default.target.wants/                          slices.target
dev-hugepages.mount                            smartcard.target
dev-mqueue.mount                               sm-client.service
dracut-cmdline.service                         sockets.target
dracut-initqueue.service                       sockets.target.wants/
dracut-mount.service                           sound.target
dracut-pre-mount.service                       sshd-keygen.service
dracut-pre-pivot.service                       sshd.service

列出所有服務:systemctl list-units --all --type=service

[root@luo ~]# systemctl list-units --all --type=service
  UNIT                                   LOAD      ACTIVE   SUB     DESCRIPTION
  auditd.service                         loaded    active   running Security Auditing Service
  brandbot.service                       loaded    inactive dead    Flexible Branding Service
  chronyd.service                        loaded    active   running NTP client/server
  cpupower.service                       loaded    inactive dead    Configure CPU power related setting
  crond.service                          loaded    active   running Command Scheduler
  dbus.service                           loaded    active   running D-Bus System Message Bus
● display-manager.service                not-found inactive dead    display-manager.service
  dracut-shutdown.service                loaded    inactive dead    Restore /run/initramfs
  ebtables.service                       loaded    inactive dead    Ethernet Bridge Filtering tables
  emergency.service                      loaded    inactive dead    Emergency Shell
● exim.service                           not-found inactive dead    exim.service
  firewalld.service                      loaded    active   running firewalld - dynamic firewall daemon
  [email protected]                     loaded    active   running Getty on tty1
  ip6tables.service                      loaded    inactive dead    IPv6 firewall with ip6tables
● ipset.service                          not-found inactive dead    ipset.service
  iptables.service                       loaded    inactive dead    IPv4 firewall with iptables
  irqbalance.service                     loaded    inactive dead    irqbalance daemon
● kdump.service                          loaded    failed   failed  Crash recovery kernel arming
  kmod-static-nodes.service              loaded    active   exited  Create list of required static devi
● ldap.service                           not-found inactive dead    ldap.service
  microcode.service                      loaded    inactive dead    Load CPU microcode update
  mysqld.service                         loaded    inactive dead    LSB: start and stop MySQL
  network.service                        loaded    active   exited  LSB: Bring up/down networking
  NetworkManager-wait-online.service     loaded    active   exited  Network Manager Wait Online
  NetworkManager.service                 loaded    active   running Network Manager
● nscd.service                           not-found inactive dead    nscd.service
● ntpd.service                           not-found inactive dead    ntpd.service
● ntpdate.service                        not-found inactive dead    ntpdate.service
  plymouth-quit-wait.service             loaded    inactive dead    Wait for Plymouth Boot Screen to Qu
  plymouth-quit.service                  loaded    inactive dead    Terminate Plymouth Boot Screen
  plymouth-read-write.service            loaded    inactive dead    Tell Plymouth To Write Out Runtime 
  plymouth-start.service                 loaded    inactive dead    Show Plymouth Boot Screen
  polkit.service                         loaded    active   running Authorization Manager
  postfix.service                        loaded    inactive dead    Postfix Mail Transport Agent
  rc-local.service                       loaded    inactive dead    /etc/rc.d/rc.local Compatibility
  rescue.service                         loaded    inactive dead    Rescue Shell

常用服務相關命令
systemctl enable crond.service //讓某個服務開機啟動
systemctl disable crond //不讓開機啟動
systemctl status crond //查看服務狀態
systemctl stop crond //停止服務
systemctl start crond //啟動服務
systemctl restart crond //重啟服務
systemctl is-enabled crond //檢查服務是否開機啟動

10.26 unit介紹

單元(Unit)
Systemd有一個叫做單元(Unit)的概念,它保存了服務、設備、掛載點和操作系統其他信息的配置文件,並能夠處理不同單元之間的依賴關系。大部分單元都靜態的定義在單元文件中,也有一些是動態生成的。單元有多種狀態:
處於活動的則是(active),當前正在運行
停止的則是(inactive),當前已經停止
啟動中的則是(activing),當前正在啟動
停止中的則是(deactiving),當前正在停止
失敗的則是(failed)狀態,意思說單元啟動過程中遇到錯誤比如找不到文件、路徑或者進程運行中崩潰了等。
unit分類
一共有11種不同類型的單元:

單元類型 說明
service單元 用於封裝一個後臺服務進程,比如通過systemctl start firewalld啟動防火墻,這種就屬於service單元。
socket單元 用於封裝一個後臺服務進程,比如通過systemctl start firewalld啟動防火墻,這種就屬於service單元。
target單元 用於將多個單元在邏輯上組合在一起讓它們同時啟動。
device單元 用於封裝一個設備文件,可用於基於設備啟動。並不是每一個設備文件都需要一個device單元,但是每一個被udev規則標記的設備都必須作為一個device單元出現。
mount單元 用於封裝一個文件系統掛載點(向後兼容/etc/fstab)
automount單元 用於封裝一個文件系統自動掛載點,只有該文件系統被訪問時才會進行掛載,它取代了傳統的autofs服務。
timer單元 用於封裝一個基於時間觸發的動作,它取代了atd、crond等計劃任務。
swap單元 用於封裝一個交換分區或者交換文件,它與mount類似。
path單元 用於根據文件系統上特定對象的變化來啟動其他服務。
slice單元 用於控制特定的CGroup內所有進程的總體資源占有。
scope單元 它與service單元類似,但是由systemd根據D-bus接口接收到的信息自動創建,可用於管理外部創建的進程。

systemd能夠處理各種依賴與沖突關系以及先後順序,依賴與沖突、先後順序兩者之間是獨立的。比如service1依賴service2,而且啟動service1必須先啟動service2,,那麽這2個服務將會同時啟動。
說明:一個單元配置文件只能描述一種單元。
系統提供兩種級別的單元
系統單元:在/lib/systemd/system目錄中,優先級高於用戶單元。
用戶單元:在/usr/lib/systemd/system目錄中
常用unit相關命令
systemctl list-units //列出正在運行的unit
systemctl list-units --all //列出所有的unit
systemctl list-units --all --state=inactive //列出所有inactive的unit
systemctl list-units --all --type=service //列出狀態的service
systemctl is-active crond.service //查看某個unit是否active

[root@luo ~]# systemctl list-units                                              列出正在運行的unit
[root@luo ~]# systemctl list-units --all                                      列出所有的unit
[root@luo ~]# systemctl list-units --all --state=inactive           列出所有inactive的unit
[root@luo ~]# systemctl list-units --all --type=service            列出類型為service的unit
[root@luo ~]# systemctl is-active crond                                 查看某個unit是否active   
active

10.27 target介紹

Target(目標)
在systemd中有一個叫做target的單元,也叫作目標單元。這個單元沒有專用的配置選項,它只是以.target結尾的文件,它本身沒有具體功能,你可以理解為類別,它的作用就是將一些單元匯聚在一起。
常用的Target有

名稱                              說明

basic.target 啟動基本系統,該目標間接包含了所有的本地掛載點單元以及其他必須的系統初始化單元。
ctrl-alt-del.target 當在控制臺按下Ctrl+Alt+Del組合鍵時要啟動的單元。
default.target 默認的啟動目標,通常指向multi-user.target或者graphical.target的目標。
graphical.target專用於啟動圖形化登陸界面的目標單元,其中包含了multi-user.target單元。
hibernate.target專用於系統休眠到硬盤時啟動的單元。
halt.target專用於關閉系統單不切斷電源時啟動的單元。
local-fs.target專用於集合本地文件系統掛載點的目標單元。
multi-user.target專用於多用戶且為命令行模式下啟動的單元。所有用於要在命令行多用戶模式下啟動的單元,其[Install]段都應該加上
WantedBy=multi-user.target指令。
reboot.target專用於重啟系統時需要需要啟動的單元。
rescure.target專用於啟動基本系統並打開一個救援shell時需要啟動的單元。
shutdown.target專用於在關機過程中關閉所有的單元。
sleep.target專用於進入休眠狀態的目標單元。
timers.target專用於包含所有應該在系統啟動時被啟動的timer單元。

查看當前系統所有target;(unit組合):systemctl list-unit-files --type=target

[root@luo ~]# systemctl list-unit-files --type=target
UNIT FILE                 STATE   
basic.target              static  
bluetooth.target          static  
cryptsetup-pre.target     static  
cryptsetup.target         static  
ctrl-alt-del.target       disabled
default.target            enabled 
emergency.target          static  
final.target              static  
getty.target              static  
graphical.target          static  
halt.target               disabled
hibernate.target          static  
hybrid-sleep.target       static  
initrd-fs.target          static  
initrd-root-fs.target     static  
initrd-switch-root.target static  
initrd.target             static  
iprutils.target           disabled
kexec.target              disabled
local-fs-pre.target       static  
local-fs.target           static  
machines.target           disabled
multi-user.target         enabled 
network-online.target     static  
network-pre.target        static  
network.target            static  
nss-lookup.target         static  
nss-user-lookup.target    static  
paths.target              static  
poweroff.target           disabled
printer.target            static  
reboot.target             disabled
remote-fs-pre.target      static  
remote-fs.target          enabled 
rescue.target             disabled
rpcbind.target            static  
runlevel0.target          disabled
runlevel1.target          disabled
runlevel2.target          enabled 

查看target包含所有的unit:systemctl list-dependencies multi-user.target

[root@luo ~]# systemctl list-dependencies multi-user.target
multi-user.target
● ├─auditd.service
● ├─brandbot.path
● ├─chronyd.service
● ├─crond.service
● ├─dbus.service
● ├─firewalld.service
● ├─irqbalance.service
● ├─kdump.service
● ├─mysqld.service
● ├─network.service
● ├─NetworkManager.service
● ├─plymouth-quit-wait.service
● ├─plymouth-quit.service
● ├─rsyslog.service
● ├─sendmail.service
● ├─sm-client.service
● ├─sshd.service
● ├─sysstat.service
● ├─systemd-ask-password-wall.path
● ├─systemd-logind.service
● ├─systemd-readahead-collect.service
● ├─systemd-readahead-replay.service
● ├─systemd-update-utmp-runlevel.service
● ├─systemd-user-sessions.service
● ├─tuned.service
● ├─vmtoolsd.service
● ├─basic.target
● │ ├─microcode.service
● │ ├─rhel-autorelabel-mark.service
● │ ├─rhel-autorelabel.service
● │ ├─rhel-configure.service
● │ ├─rhel-dmesg.service
● │ ├─rhel-loadmodules.service
● │ ├─[email protected]
● │ ├─paths.target
● │ ├─slices.target
● │ │ ├─-.slice
● │ │ └─system.slice
● │ ├─sockets.target

查看系統默認的target:systemctl get-default

[root@luo ~]# systemctl get-default
multi-user.target

設置默認的target:systemctl set-default multi-user.target

[root@luo ~]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

service、unit、target之間的聯系
一個service屬於一種unit;
多個unit組成了一個target;
一個target包含多個service;查看/usr/lib/systemd/system/sshd.service裏面[install]部份的內容,定義了該service屬於哪一個target。

[root@luo ~]# cat /usr/lib/systemd/system/crond.service 
[Unit]
Description=Command Scheduler
After=auditd.service systemd-user-sessions.service time-sync.target

[Service]
EnvironmentFile=/etc/sysconfig/crond
ExecStart=/usr/sbin/crond -n $CRONDARGS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

[Install]
WantedBy=multi-user.target

2018-06-13(日常運維三)