前言
作為服務(wù)器開發(fā)韧献,平時開發(fā)經(jīng)常用到的Linux命令不多几晤,但是還是要對linux多了解一些也切,這樣出現(xiàn)問題至少有一個解決思路只壳。
systemctl
最近項目中經(jīng)常用到systemd來啟動進(jìn)程,所以先了解下极景。
- enable xxx.service
設(shè)置開機(jī)自動啟動 - disable xxx.service
取消自動啟動 - status xxx.service
查看服務(wù)的狀態(tài) - list-units [--type=service]
查看所有啟動的服務(wù) - start/stop/restart xxx.service
根據(jù)腳本中的命令啟動/停止/重啟服務(wù) - daemon-reload
重載所有的服務(wù)察净,更新腳本之后不會立即生效,要調(diào)用該命令 - list-dependencies xxx.service
列出服務(wù)的依賴關(guān)系盼樟, - list-unit-files [--type=service]
列出所有配置文件以及他們的狀態(tài)氢卡。狀態(tài)有四種:enabled(已建立啟動鏈接);disabled(沒建立啟動鏈接)晨缴;static(該配置文件沒有[Install]部分(無法執(zhí)行)译秦,只能作為其他配置文件的依賴);masked(該配置文件被禁止建立啟動鏈接) - Service配置文件
service的配置文件分為三個部分:- Unit:
- Description : 服務(wù)的簡單描述
- Documentation : 服務(wù)文檔
- Before、After: 定義啟動順序筑悴。Before=xxx.service,代表本服務(wù)在xxx.service啟動之前啟動们拙。After=xxx.service,代表本服務(wù)在xxx.service之后啟動。
- Requires:這個單元啟動了阁吝,它需要的單元也會被啟動睛竣;它需要的單元被停止了,這個單元也停止了求摇。
- Wants:推薦使用。這個單元啟動了殊者,它需要的單元也會被啟動与境;它需要的單元被停止了,對本單元沒有影響猖吴。
- Service:
- Type告訴systemd這個服務(wù)的類型摔刁,從而采取不同的策略執(zhí)行。
- simple(默認(rèn)值) systemd認(rèn)為該服務(wù)將立即啟動海蔽。服務(wù)進(jìn)程不會fork共屈。如果該服務(wù)要啟動其他服務(wù),不要使用此類型啟動党窜,除非該服務(wù)是socket激活型拗引。
- forking:systemd認(rèn)為當(dāng)該服務(wù)進(jìn)程fork,且父進(jìn)程退出后服務(wù)啟動成功幌衣。對于常規(guī)的守護(hù)進(jìn)程(daemon)矾削,除非你確定此啟動方式無法滿足需求,使用此類型啟動即可豁护。使用此啟動類型應(yīng)同時指定 PIDFile=哼凯,以便systemd能夠跟蹤服務(wù)的主進(jìn)程。
- oneshot:這一選項適用于只執(zhí)行一項任務(wù)楚里、隨后立即退出的服務(wù)断部。可能需要同時設(shè)置 RemainAfterExit=yes 使得 systemd 在服務(wù)進(jìn)程退出之后仍然認(rèn)為服務(wù)處于激活狀態(tài)班缎。
- notify:與 Type=simple 相同蝴光,但約定服務(wù)會在就緒后向 systemd 發(fā)送一個信號。這一通知的實現(xiàn)由 libsystemd-daemon.so 提供吝梅。
- dbus:若以此方式啟動虱疏,當(dāng)指定的 BusName 出現(xiàn)在DBus系統(tǒng)總線上時,systemd認(rèn)為服務(wù)就緒苏携。
- idle: systemd會等待所有任務(wù)(Jobs)處理完成后做瞪,才開始執(zhí)行idle類型的單元。除此之外,其他行為和Type=simple 類似装蓬。
- PIDFile:pid文件路徑
- ExecStart:指定啟動單元的命令或者腳本著拭,ExecStartPre和ExecStartPost節(jié)指定在ExecStart之前或者之后用戶自定義執(zhí)行的腳本。Type=oneshot允許指定多個希望順序執(zhí)行的用戶自定義命令牍帚。
- ExecReload:指定單元停止時執(zhí)行的命令或者腳本儡遮。
- ExecStop:指定單元停止時執(zhí)行的命令或者腳本。
- PrivateTmp:True表示給服務(wù)分配獨立的臨時空間
- Restart:這個選項如果被允許暗赶,服務(wù)重啟的時候進(jìn)程會退出鄙币,會通過systemctl命令執(zhí)行清除并重啟的操作。
- RemainAfterExit:如果設(shè)置這個選擇為真蹂随,服務(wù)會被認(rèn)為是在激活狀態(tài)十嘿,即使所以的進(jìn)程已經(jīng)退出,默認(rèn)的值為假岳锁,這個選項只有在Type=oneshot時需要被配置绩衷。
- Install
- Alias:為單元提供一個空間分離的附加名字。
- RequiredBy:單元被允許運行需要的一系列依賴單元激率,RequiredBy列表從 Require獲得依賴信息咳燕。
- WantBy:單元被允許運行需要的弱依賴性單元,Wantby從Want列表獲得依賴信息乒躺。
*Also:指出和單元一起安裝或者被協(xié)助的單元招盲。 - DefaultInstance:實例單元的限制,這個選項指定如果單元被允許運行默認(rèn)的實例聪蘸。
nc
nc可以通過TCP和UDP在網(wǎng)絡(luò)中讀寫數(shù)據(jù)宪肖,
- -g
設(shè)置路由器躍程通信網(wǎng)關(guān),最多設(shè)置8個健爬; - -G
設(shè)置來源路由指向器控乾,其數(shù)值為4的倍數(shù); - -h
在線幫助娜遵; - -i
設(shè)置時間間隔蜕衡,以便傳送信息及掃描通信端口,單位為秒 - -l
使用監(jiān)聽模式设拟,監(jiān)控傳入的資料慨仿。 - -n
直接使用ip地址,而不通過域名服務(wù)器纳胧。 - -o
把往來傳輸?shù)臄?shù)據(jù)以16進(jìn)制字碼傾倒成該文件保存镰吆; - -p
設(shè)置本地主機(jī)使用的通信端口 - -r ?
指定源端口和目的端口都進(jìn)行隨機(jī)的選擇跑慕; - -s
設(shè)置本地主機(jī)送出數(shù)據(jù)包的IP地址万皿,可以偽裝ip - -u
使用UDP傳輸協(xié)議摧找; - -v
顯示指令執(zhí)行過程; - -w
設(shè)置等待連線的時間牢硅,單位為秒 - -z
使用0輸入/輸出模式蹬耘,連接即斷開,只在掃描通信端口時使用减余。
使用nc簡單實現(xiàn)小功能
- 聊天服務(wù)器
服務(wù)器: nc -l 端口號
客戶端: nc 服務(wù)器ip 端口號
雙方在命令行的輸入會顯示在對方的屏幕 - 傳輸文件
要接收或者要發(fā)送的啟動好端口 nc -l port > trans.txt
另一方連接發(fā)送或者接收 nc ip port < trans.txt - 端口掃描
nc -z -v -n 172.31.100.7 21-25
掃描指定ip的指定端口
tcpdump
tcpdump用來監(jiān)聽端口综苔,抓取相應(yīng)的包。
- -c
指定抓取包的數(shù)量位岔。 - -i
使用指定的網(wǎng)絡(luò)截面送出數(shù)據(jù)包 - -d
把編譯過的數(shù)據(jù)包編碼轉(zhuǎn)換成可閱讀的格式如筛,并傾倒到標(biāo)準(zhǔn)輸出。 - -dd
把編譯過的數(shù)據(jù)包編碼轉(zhuǎn)換成C語言的格式抒抬,并傾倒到標(biāo)準(zhǔn)輸出妙黍。 - -ddd
把編譯過的數(shù)據(jù)包編碼轉(zhuǎn)換成十進(jìn)制數(shù)字的格式,并傾倒到標(biāo)準(zhǔn)輸出瞧剖。 - -r file
從指定的文件讀取數(shù)據(jù)包數(shù)據(jù)。 - -w file
把數(shù)據(jù)包數(shù)據(jù)寫入指定的文件 - host ip/域名 [and (host1 or host2)]
監(jiān)聽發(fā)給和來自該主機(jī)的數(shù)據(jù)包 [監(jiān)聽該主機(jī)與host1或者h(yuǎn)ost2之間的通信包(注意轉(zhuǎn)義)] - port number
監(jiān)聽對應(yīng)主機(jī)的該端口 - src/dst
只截獲來自/發(fā)送給目的地址的數(shù)據(jù)包
sar
sar命令是比較全面的linux性能統(tǒng)計分析工具可免,命令的格式為sar [options] [-A] [-o file] t [n]抓于,[]中代表可以省略,t代表采樣的間隔浇借,最后的n代表統(tǒng)計的次數(shù)捉撮。options中包括:
- -A
所有報告的總和 - -u
輸出CPU使用情況的統(tǒng)計信息 - -v
輸出inode、文件和其他內(nèi)核表的統(tǒng)計信息 - -d
輸出每一個塊設(shè)備的活動信息 - -r
輸出內(nèi)存和交換空間的統(tǒng)計信息 - -b
顯示I/O和傳送速率的統(tǒng)計信息 - -a
文件讀寫情況 - -c
輸出進(jìn)程統(tǒng)計信息妇垢,每秒創(chuàng)建的進(jìn)程數(shù) - -R
輸出內(nèi)存頁面的統(tǒng)計信息 - -y
終端設(shè)備活動情況 - -w
輸出系統(tǒng)交換活動信息
iostat
iostat使用格式為[options] [interval [count]]
interval為取樣的間隔巾遭,count為取樣的次數(shù)
- -c
僅顯示CPU統(tǒng)計信息.與-d選項互斥. - -d
僅顯示磁盤統(tǒng)計信息.與-c選項互斥. - -k
以K為單位顯示每秒的磁盤請求數(shù),默認(rèn)單位塊. - -p device | ALL
與-x選項互斥,用于顯示塊設(shè)備及系統(tǒng)分區(qū)的統(tǒng)計信息.也可以在-p后指定一個設(shè)備名,如: iostat -p hda ;或顯示所有設(shè)備:iostat -p ALL - -t 在輸出數(shù)據(jù)時,打印搜集數(shù)據(jù)的時間.
- -V 打印版本號和幫助信息.
- -x 輸出擴(kuò)展信息.
dmesg
dmesg記錄了系統(tǒng)啟動過程中的內(nèi)核日志信息闯估,包括系統(tǒng)的設(shè)備信息灼舍,以及在啟動和操作過程中系統(tǒng)記錄的任何錯誤和問題的信息。
在/var/log下有dmesg文件,這個文件存儲的是開機(jī)相關(guān)的信息涨薪。但是dmesg命令輸出的不只是這個文件的信息骑素,還有操作系統(tǒng)對一些錯誤的處理,比如強(qiáng)殺進(jìn)程刚夺,這些信息存儲在messages的一些文件中献丑。
crontab
- -e
編輯定時設(shè)置 - -l
查看定時設(shè)置 - -r
刪除定時設(shè)置 - -u
指定要操作的用戶的定時設(shè)置 - 設(shè)置每隔一段時間執(zhí)行
在定時設(shè)置格式中,前面的幾個位置分別代表著:
分鐘 minute: 區(qū)間為 0 – 59
小時 hour: 區(qū)間為0 – 23
每月的日期 day-of-month: 區(qū)間為0 – 31
月份 month: 區(qū)間為1 – 12. 1 是1月. 12是12月.
星期 day-of-week: 區(qū)間為0 – 7. 周日可以是0或7.
這里的取值可以用逗號(,)分隔侠姑,或者用減號(-)連接
如果想取每隔一段時間创橄,可以用斜杠(/)分隔,比如 10-30/5代表10分鐘到30分鐘這個區(qū)間莽红,每隔5分鐘妥畏。