【Linux主機+架站+維護教學+遠端協助】專案 網路開展事業或在網路賺錢第一步: 【架設24小時賺錢網站主機】比網頁設計更優先! 你還在租用虛擬主機嗎? (租用不如自有主機!自己當家作主才是:王道!) 因租用會:限制空間大小、流量、PHP.ini修改、特定語法使用... 綁手綁腳,你還能有多出眾的作為? 替你架設Linux主機伺服器+影片教你維護 (還有遠端技術協助)讓你自己當家作主! 為協助學員快速架站(隨心所欲展開網路事業)總教頭特別規劃: 替你架設Linux主機專案 並教如何成為網管高手! 聰明的網站經營者都選擇架設Linux主機伺服器做為網站運作平台,因功能完整又強大,免費架站程式超多! 參加了本專案,您無須再自我摸索曠日廢時→快速打通任都二脈 還有配套『加盟專案』,你可以現學現做,自然的實現:『事少、錢多、離家近!』的成功境界。

你要儘快擁有『Linux主機』讓他營運起來幫你賺錢!

自己用體力與時間賺錢太辛苦啦!
每個人一天都是24小時,休息與睡覺就要八小時,更何況不可能一整年都不休假….
用『Linux主機』幫你24小時賺錢(一年365天無修→你要怎樣找到更勤勞的賺錢方式?)
再說,距離是一個難以解決的難題(唯有網路無距離,能把商品賣到任何國家)
就算自己沒有商品,掛Google或聯盟行銷的商品也能賺到佣金與獎金
管他是那裡的人,只要『訪客』有點擊你就能有收入

我時常在想,養一個兒子或女兒就有可以將來養你一輩子嗎?
不!女而會嫁出去,而兒子要養老婆、還要養孫子、還要買房子、買車子、替孫子繳學費……
這就是台語講的『世傳世』一代傳一代(物種繁衍的宿命)不能怪也不能奢望。

我寧願養一台『Linux主機』來當自己後半輩子的依靠。
不管你多老,只要你能打鍵盤,就能賺錢(還怕老了或病了就沒有收入?)

年輕時就投入經營網路,有一台機器幫你賺錢(你一定會比較輕鬆)
經過幾年後你會發現:你的網站累積多少文章、照片、影片(數位內容)
那些(數位內容)都是你的網路資源,你也會發現有多少商機是因為你有網路
所以人家找上你,機會找上你,財富找上你(除非你不去經營他)

我時常出國,跟我一起出國的朋友都羨慕我,因為不管出國多久,旅遊多少天(我都是:天天有收入)你選擇怎樣的賺錢方式,就決定你要過怎樣的生活!
因為我選擇『網路事業』,只要帶著筆電或平版電腦,走道那裡都能遙控我的事業。

 

獨立主機與虛擬主機的差異

※、什麼是虛擬主機?
虛擬主機 (Virtual Hosting),又稱共享主機 (Shared Hosting)
市面上還衍生出許多不同名稱如網頁代管、網站代管、網頁空間、虛擬空間等。
虛擬主機是由十數個至數百個網站共同使用一台獨立的實體主機以及網路頻寬,虛擬主機與虛擬主機之間是完全分隔獨立的
且均分別具有其專屬的網域名稱,同時擁有獨立的網頁、信箱、資料庫等。
虛擬主機和實體主機在本質上並無不同,差別在於實體主機乃專門為單一個體戶設置
而虛擬主機則是專門為硬體資源需求較少者設置,透過集體共用一台實體主機資源來創造最大的利用效益。
簡而言之,虛擬主機就好比住戶眾多的公寓大廈,而實體主機好比單一住戶的透天厝。
由於由多個虛擬主機用戶共同分擔硬體設備費用、網路頻寬費用、線路費用
使得租用所耗成本低廉,免除投入伺服器、網路設備以及網管人員等金額龐大的費用,比較適合『小公司』或『個人用戶』。

※、什麼是獨立主機?
Dedicated Servers(或 Dedicated Host,獨立主機,又稱專屬主機)
功能完整的伺服器給客戶使用,同時也會把作業系統和軟體都設定好。
客戶擁有完整的主機資源和所有權限,就像自行購買一台主機放到ISP的機房代管那樣。
客戶不需要煩惱軟硬體安裝和系統安全、監控等瑣碎的事。

Dedicated Servers適合網站有大量流量、需要複雜運算、有大量會員或資料庫存取的用戶。
另外如果您想安裝比較特殊的軟體(例如比較冷門的資料庫如DBMaker),那就需要使用獨立主機。
雖然VPS(虛擬私有伺服器)也可以讓使用者自行安裝軟體,不過仍有部分的軟體不能在VPS的作業系統下安裝,這時候獨立主機是唯一的選擇。

獨立主機同時也會提供獨立的固定IP位址,也幾乎都會提供SSL安全認證,所以非常適合流量較大的購物網站。
若是您有大量寄發郵件的必要性,通常也建議使用獨立主機的服務,因為虛擬主機和VPS通常會限制用戶大量寄發郵件的數量或頻率,但獨立主機則比較沒有這方面的限制
(但仍不可寄發Spam Mail廣告垃圾郵件,因為違反歐美地區的法律)。
———————————————————————————–
獨立主機與虛擬主機的差異:
獨立主機與虛擬主機最大的的差異當然在於『專屬性』與『自主性』
這就好像『分租房子』與『自己擁有房子』之差異
需用虛擬主機:就好像租用宿舍大家共用一條網路線(或一棟大樓大家共用一條網路線)
你想會怎樣?雖然省錢,但討厭的事情你就要:忍耐一點!
當然最大的差異在於:虛擬主機限制很多(獨立主機隨你喜歡設定!)
新手(傻傻還搞不清楚時),一租用虛擬主機,就會遇到(這個不能用,那個限制用….等等的挫折…好像架站不是那麼容易?)
其實,等你自己擁有一台自己的獨立主機時,你終於可以脫離那些限制與管制啦!
————————————————————————–
當然,獨立主機就會出現『誰替你維護?』『維護每個月要花多少錢』?的問題!
能否『魚』與『熊掌』兼得呢?答案是:肯定的!
只要你申購:『架設Linux主機架站維護教學課程遠端協助專案』全方位配套措施+線上技術諮詢
http://por.tw/linux/new-E_learning/index.php

那網路就是您的天下!你要架設幾個網站都可以!
你要因增幾個資料庫都可以!你要多大的空間(只要增大硬碟),那還怕空間不夠用?
你的主機系統PHP.ini(所以的細項設定,都可以隨你需求自由設定)
那還有誰能限制了你?還有什麼比自己獨立擁有更有隱私與主權?
對啦!這就是網路創業賺錢的成功第一大步!邁出此一大步(你的網路賺錢之路將更開闊、更自由!)
————————————————————————–

『將軍』你是武藝高強?膽識過人?精通騎射?您生錯時代啦!
『戰馬』你是汗血寶馬?善奔能越?躍馬中原?此戰場沒有你的舞台!
開店因為房屋很貴買不起,所以先租(等賺錢一定買下來!)
網路開店,一台Linux主機才兩萬五千元,誰都買得起!
租虛擬主機繳年租金、限制空間大小、限制語法、限制流量……
如此綁手綁腳的經營網路事業,還能有何大作為?
您的客戶資料庫(哈哈!被人家看光光啦!)
租虛擬主機,無隱密可言(主機管理業者擁有最高權限)
租用者就像『裸體』展示於人家的目光下
『商業機密』一詞,跟你的距離是無限的遙遠!
————————————————————

大家都知道網路創業的好處:
1.初期建置網站金額較低,甚至零成本。
2.初期人事、水電成本較低。
3.網路店面比較沒有曝光的地區限制(除非產品、物流、語言的限制)。
4.消費者可以在任何時間瀏覽與選購商品(24小時營業)。
5.初期可採用眾多的網路平台,免費宣傳、曝光方式,之後再採用付費的方式,提高效益。
6.即使沒有成功,成本損失也較低。

想要網路創業自動賺錢,你應該具備那些專業技能呢?

那座而言不如起而行,如何開始您的第一步行動呢?

1.先評估自己會什麼網路技能?不會那些網路技能?
將自己的優勢寫下來,也將自己需要進修的專業技能逐一記錄下來

2.找到您需要的課程(利用下班時間,努力精研)
最好是影片課程,不要只是一般書店的書籍或網路電子書
(因為圖片與文字根本學習效率不好,無法有效迅速學會,學習中有問題要問誰?)
實際網路經營時發生網站語法錯誤或網站被駭客入侵!
那您最好有個專業『會程式語言與架設主機』的老師可以免費技術諮詢
不然,一發生問題,您的網路事業就停擺了,網站一停就無收入!
(就好像上班放無薪假一樣….悽慘!)。
有甚至網站資料全毀,資料庫也出問題,你要在第一時間內就能快速修護!
這一點你可要小心!網路創業絕對要有:技術諮詢!
迅速回覆的專業老師(或專業技術顧問)。
不然,就像大海裡頭的孤鳥,叫天天不應,叫地地也不靈
(自己閉門造車摸索是網路創業者最悲慘的失敗原因!)。

attachments/201208/5398530876.jpg

2.你的網站要自己架設!
(請人設計網站費用貴,小則三四萬高者也有十幾萬元的,往後網站維護也不方便!)
這方面你可以學習:
1.網站架設與網頁設計教學
詳細介紹:
http://por.tw/Website_Design/E_learning/index.php
長期技術支援網站:
http://por.tw/Website_Design

2.購物網站架站教學
詳細介紹:
http://por.tw/sale/cmmerse-4-all/index.php
長期技術支援網站:
http://por.tw/sale

3.部落格架站、行銷、賺錢術教學
詳細介紹:
http://por.tw/blog/E_learning/index.php
長期技術支援網站:
http://por.tw/blog

4.PHP+MySQL+PHPMaker+Dreamweaver整合教學
(PHPMaker運用設計網站教學)

詳細介紹:
http://por.tw/php/new-E_learning/index.php
長期技術支援網站:
http://por.tw/php

5.Flash-動畫製作教學
詳細介紹:
http://por.tw/flash/new-E_learning/index.php
長期技術支援網站:
http://por.tw/flash
————————————————————————-

3.網站圖片非常重要,你如果不會拍照與修圖,那您就要學習:
商業商品攝影教學
詳細介紹:
http://por.tw/design/photographing_Course/index.php
長期技術支援網站:
http://por.tw/design
————————————————————————-

4.影片能讓您的網站更出色,如果您不會錄影
或影片剪接、編輯、上字幕、做特效,那您就要學習:

【錄影影片製作】技術教學
詳細介紹:
http://por.tw/photo-video/video_Course/index.php
長期技術支援網站:
http://por.tw/photo-video
————————————————————————-

5.有了網站,接下來就是『如何將網站經營的有聲有色?』
這就需要專業的網路行銷技術:
A.搜尋引擎排名SEO教學
詳細介紹:
http://por.tw/seo/new-seo/index.php
長期技術支援網站:
http://por.tw/seo

B.EDM電子報製作教學
詳細介紹:
http://por.tw/edm/edm_Marketing/index.php
長期技術支援網站:
http://por.tw/edm

C.電子書製作賺錢密技教學
詳細介紹:
http://por.tw/ebook/new-ebook/index.php
長期技術支援網站:
http://por.tw/ebook

D.【訂單王】超級網路秒殺成交法-A-page 【一頁定江山】行銷賺錢術
詳細介紹:
http://por.tw/page/new-E_learning/index.php
長期技術支援網站:
http://por.tw/page
————————————————————————-

6.如果您想要學習『專案方式』的專業技能,您可以學習:
A.「網路創業賺錢_如何從網路創業賺錢賺到第一個100萬!」課程
詳細介紹:
http://por.tw/soho/new-E_learning/index.php
長期技術支援網站:
http://por.tw/soho

B.藉助『程式』邁向網路自動賺錢術(Auto Rich -自富課程)
詳細介紹:
http://por.tw/Rich/new-E_learning/index.php
長期技術支援網站:
http://por.tw/Rich

C.【正印家族】授權營運專案‧自動印鈔機賺錢術
詳細介紹:
http://por.tw/money/new-E_learning/index.php
長期技術支援網站:
http://por.tw/money
————————————————————————-

7.您的網站可以用兩種方式經營
1.是租用虛擬主機
(創業初期,如果尚無長遠規劃可租虛擬主機空間架設網站)

2.是自己擁有獨立主機!
如果您有此長遠的規劃,那您可以申購此服務:
替你架設Linux主機伺服器+影片教你維護(還有遠端技術協助)讓你自己當家作主!
http://por.tw/linux/new-E_learning/index.php
長期技術支援網站:
http://por.tw/linux
————————————————————————-

8.此外,如果你對國外軟體感覺不好用,那您可以學習:
軟體中文化實戰教學影片
軟體中文化實戰教學影片教學詳細介紹:
http://por.tw/f2blog/new-E_learning/index.php
長期技術支援網站:
http://por.tw/f2blog

不論是英文、日文、大陸簡體或其他軟體,能透過軟體中文化技術變成:繁體中文版
那在網路事業的經營上,所有要用到的軟體,就能通通變成:繁體中文版啦!
那是業經營起來當然是:得心應手!手到擒來!

————————————————————————-

Let’s Encrypt 是一個證書頒發機構(CA),它提供了一種獲取和安裝免費TLS / SSL證書的簡便方法,從而可以在Web服務器上啟用加密的HTTPS。
它通過提供一個軟件客戶端Certbot來簡化該過程,該客戶端嘗試使大多數(如果不是全部)所需步驟自動化。
當前,在Apache和Nginx上,獲取和安裝證書的整個過程都是完全自動化。

在本教學中,您將使用Certbot在Debian 10上獲得Apache的免費SSL證書,並將證書設置為自動更新。

本教學將使用單獨的Apache虛擬主機文件而不是預設配置文件。
我們建議為每個域創建新的Apache虛擬主機文件,因為它有助於避免常見錯誤,並將預設文件作為後備配置進行維護。

先決條件
要遵循本教學,您將需要:
通過遵循Debian 10教學的初始服務器設置來設置一台Debian 10服務器,包括具有特權和防火牆的非root用戶sudo。
完全註冊的域名。本教學將始終使用your_domain作為示例。你可以購買一個域名Namecheap,免費獲得一個在Freenom,或使用你選擇的域名註冊商。
為伺服器設置了以下兩個DNS記錄。要進行設置,您可以按照以下說明添加網域,然後按照說明建立DNS記錄。

your_domain指向服務器公共IP地址的A記錄。
指向伺服器公共IP地址的A記錄。www.your_domain
通過遵循如何在Debian 10上安裝Apache來安裝Apache。確保為您的域設置了虛擬主機文件。
本教學將作為示例。/etc/apache2/sites-available/your_domain.conf

第1步-安裝Certbot
使用“Let’s Encrypt”取得SSL證書的第一步是在您的伺服器上安裝Certbot軟體。

在撰寫本文時,預設情況下,無法從Debian軟體存儲庫中獲得Certbot。
為了使用來下載軟體apt,您需要將backports存儲庫新增到sources.list檔案中,以apt尋找軟體包源。
反向移植是Debian測試和不穩定發行版中的軟體包,這些軟體包經由重新編譯,因此它們可以在穩定的Debian發行版上運行而無需新庫。

要加入backports存儲庫,請開啟(或建立)目錄中的sources.list檔案/etc/apt/:

sudo nano /etc/apt/sources.list

在文件底部,添加以下行:

 

deb http://mirrors.digitalocean.com/debian buster-backports main
deb-src http://mirrors.digitalocean.com/debian buster-backports main
deb http://ftp.debian.org/debian buster-backports main

這內含符合Debian自由軟體準則(DFSG)main軟體包,以及和元件,它們本身都不符合DFSG或包括此類依賴關係。non-freecontrib

儲存並按下關閉檔案CTRL+XY,然後ENTER,然後更新您的軟體包清單:

 

sudo apt update

然後使用以下指令安裝Certbot。請注意,該-t選項告訴apt您通過檢視剛加入的backports存儲庫來搜尋軟體包:

sudo apt install python-certbot-apache -t buster-backports

ertbot現在可以使用了,但是為了使其能夠為Apache配置SSL,我們需要驗證是否已正確配置Apache。

 

步驟2 —設定SSL證書

Certbot需要能夠在Apache配置中找到正確的虛擬主機,以使其自動配置SSL。
具體來說,它是通過尋找ServerName與您請求證書的域相符合的指令來實現的。

如果按照Apache安裝教學中的虛擬主機設定步驟進行操作,則VirtualHost您的域中應該有一塊已正確設定了偽指令的塊。
/etc/apache2/sites-available/your_domain.confServerName

要進行檢查,請使用nano或您喜歡的文字編輯器為您的域開啟虛擬主機檔案:

sudo nano /etc/apache2/sites-available/your_domain.conf

找到現有的ServerName行。它應該看起來像這樣,用您自己的域名代替your_domain

 

...
ServerName your_domain;
...

如果還沒有,請更新ServerName指令以指向您的域名。然後儲存檔案,離開編輯器,並驗證配置編輯的語法:

sudo apache2ctl configtest

如果沒有任何語法錯誤,您將在輸出中看到以下內容:

Syntax OK

如果出現錯誤,請重新開啟虛擬主機檔案並檢查是否有錯字或字元丟失。一旦配置檔的語法正確,請重新加載Apache以加載新配置:

sudo systemctl reload apache2

Certbot現在可以找到正確的VirtualHost塊並進行更新。

接下來,讓我們更新防火牆以允許HTTPS通信。

步驟3 —容許HTTPS通過防火牆
如果已按照ufw先決條件指南的建議啟用了防火牆,則需要調整設定以容許HTTPS通信。
幸運的是,當安裝在Debian上時,ufw隨附了一些配置檔,這些配置檔有助於簡化變更HTTP和HTTPS流量的防火牆規則的過程。

您可以通過鍵入以下內容檢視現用的設定:

sudo ufw status

如果您按照我們的指南中有關如何在Debian 10上安裝Apache的步驟2進行操作,則此指令的輸出將如下所示,顯示僅HTTP流量被容許進入Web伺服器:
會看到輸出容:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
WWW                        ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
WWW (v6)                   ALLOW       Anywhere (v6)

要另外容許HTTPS通信,請容許“ WWW Full”配置檔並刪除冗餘的“ WWW”配置檔配額:

 

sudo ufw allow 'WWW Full'
sudo ufw delete allow 'WWW'

您的狀態現在應如下所示:

sudo ufw status

會看到這樣:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
WWW Full                   ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
WWW Full (v6)              ALLOW       Anywhere (v6)      

接下來,讓我們運行Certbot並獲取我們的證書。

步驟4 —獲取SSL證書
Certbot提供了多種通過外掛程式取得SSL證書的方法。
Apache外掛程式將負責重新配置Apache並在必要時重新加載配置。
要使用此外掛程式,請輸入以下內容:

sudo certbot --apache -d your_domain -d www.your_domain

它certbot與–apache外掛程式一起運行,-d用於指定您希望證書有效的名稱。

如果這是您第一次運行certbot,將提示您輸入電子信件位址並同意服務條款。
此外,它還會詢問您是否願意與電子前沿基金會(Electronic Frontier Foundation)分享您的電子信件位址,該基金會是倡導數字版權的非營利組織,也是Certbot的製造商。隨時輸入Y分享您的電子信件位址或N拒絕。

完成此操作後,certbot將與Let’s Encrypt伺服器通信,然後進行質詢以驗證您是否控制了要為其申請證書的域。

如果成功,certbot將詢問您如何配置HTTPS設定:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

選取您的選取,然後點擊ENTER
配置將自動更新,並且Apache將重新加載以取得新設定。
certbot會顯示一條訊息,告訴您該過程已成功完成,並且證書的存儲位置:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/your_domain/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/your_domain/privkey.pem
   Your cert will expire on 2019-10-20. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

您的證書已下載,安裝和加載。
嘗試使用重新加載網站,https://並註意瀏覽器的安全指示器。
它應指示站台已正確保護,通常帶有綠色的鎖定圖示。
如果您使用SSL Labs伺服器測試來測試伺服器,它將獲得A級。

讓我們通過測試續訂過程來完成。

步驟5 —驗證Certbot自動續訂
讓我們加密證書僅可使用90天。
這是為了鼓勵使用者自動執行證書更新過程。
certbot我們安裝的軟體包通過向中加入續訂腳本來解決這一問題/etc/cron.d。
該腳本每天運行兩次,並將在到期後三十天內自動續訂任何證書。

要測試續訂過程,可以使用以下方法進行試運行certbot:

sudo certbot renew --dry-run

如果您沒有看到任何錯誤,則說明一切就緒。
必要時,Certbot將續訂您的證書並重新加載Apache以取得變更。
如果自動續訂過程失敗,Let’s Encrypt將向您特殊的電子信件傳送到訊息,並在證書即將過期時警示您。

結論:
在本教學中,您安裝了Let’s Encrypt用戶端certbot,為您的域下載了SSL證書,將Apache配置為使用這些證書,並設定了自動更新證書。
如果您對使用Certbot有其他疑問,那麼他們的文件是一個很好的起點。
 

 

 


 

 

 學員來信問道:
老師您好:
請問您的主機架設方案,所配送的電腦耗電量一年約花費多少成本?(因為我擔心電費問題….)
謝謝!

總教頭回覆:
我的經驗:架設主機後網站掛上Google點擊廣告
結果賺的錢用來付給:家裡的上網費、電費、水費、瓦斯費、大樓管理費、電話費….全部不用錢,還有賺!
所以你不用為『電腦耗電量一年約花費』多少成本煩惱!

總教頭架設之Linux主機,用儀器實際測量數據證明:用電54瓦(超省電!)
比一個100瓦家用燈泡省約一半!比各位一般300瓦的PC電腦省電多多!

結論:單單上網不架設主機的人是笨蛋!(因為不管你有沒有架設主機,上網費用都是一樣的!)
你現在知道為何要聘請專家幫你架設主機了吧?
架設一台可以賺錢(高效能、不耗電)的主機,要有多方的專要考量

一台Linux主機營運幾年下來,那成本可差大了!
所以勸告網友與學員(不要自己DIY)可以用與高效能是不一樣的!
備註:網友與學員不要寫信來問我如何省電與硬體配備規格!(別想來個撿現成的!)

需要架設主機服務,就是讓專業者整體規劃!

 網路開展事業或在網路創業賺錢第一步:【架設壹台能24小時替你賺錢網站主機】
架設Linux主機,如果是使用中華電信固定制申請1固定IP(其固定IP之變更方法)

如果您架設Linux主機,是使用中華電信固定制,可免費申請1固定IP來架設主機
有這樣的好康(不申請者是:笨蛋!傻瓜!不懂得藉助網站不上班就可賺錢!)
有學員來信問道:如何更中華電信申請的固定IP呢?(需不需要親自到中華電信辦理?)



總教頭的回覆:
中華電信固定制申請1固定IP
(固定IP其變更方法如下):
1.請進入中華電信的固定制申請1固定IP網址:
http://service.hinet.net/2004/adslstaticip.php
用中華電信給你的帳號與密碼登入

2.點選『您目前IP配發的狀態為 : 八個動態IP 』
這樣就取消了原來的固定IP(全部都改成八個動態IP)

3.經過翌日再次進入請進入中華電信的固定制申請1固定IP網址
重新申請FTTB經濟型IP配發固定IP+7個動態IP
這樣,你就可以重新取得新的固定IP了!

備註:為何經過一日再重新申請呢?根據中華電信客服人的解釋是:你如果要買上申請
很有可能系統還是會配原來的IP給你
如果經過一日,那你的原來IP就分配給他人使用(你再次申請就會得到新的IP)
所以,你如果修改IP後也就不可以反悔(不可能又回覆原來的舊IP)
因此,如果你沒有特殊需要就不要亂變動IP
(網站經營雖然大部分人是使用網址登入,但是IP也是主機位址識別之一)
好啦!您如果需要變更IP,就使用上述方法試試看,如果還不行,那就打中華電信客服電話
就會有專人為您解說!

——————————————————

Postfix 是一個 信件傳輸代理 (MTA),一個用於傳送到和接收電子信件的應用程式。

在本教學中,您將安裝和配置 Postfix,以便它只能用於通過本地應用程式

(即與 Postfix 安裝在同一伺服器上的應用程式)傳送到電子信件。

你為什麼想這麼做?

如果您已經使用第三方電子信件提供商來傳送到和接收電子信件,則無需運行自己的信件伺服器。

但是,如果您管理的雲伺服器上安裝了需要傳送到電子信件知會的應用程式,則運行本地僅傳送到 SMTP 伺服器是使用第三方電子信件服務提供商或運行成熟 SMTP 的良好替代專案伺服器。

在本教學中,您將在 Debian 10 上安裝 Postfix 並將其配置為僅傳送到 SMTP 伺服器。

注意 :自 2022 年 6 月 22 日起,DigitalOcean 將阻止所有新帳戶的 SMTP。

作為這項新政策的一部分,我們與 SendGrid 合作,以便我們的客戶仍然可以輕鬆傳送到電子信件。

 

先決條件

要學習本教學,您將需要:

  • 進行設定 一台 Debian 10 伺服器,使用Debian 10 起始伺服器設定教學 ,以及一個非 root 使用者 sudo特權。
  • 有效域名,例如 example.com 指向您的伺服器的 進行設定 。 您可以按照這些有關管理 DigitalOcean 上的 DNS 託管的指南 。

請注意,您的伺服器的主機名應與您的域或子域符合。 您可以通過鍵入來驗證伺服器的主機名 hostname在指令提示符下。 輸出應與您在建立伺服器時特殊的名稱相符合。

第 1 步 — 安裝 Postfix

在此步驟中,您將學習如何安裝 Postfix。 您將需要兩個包: mailutils,其中內含 Postfix 運行所需的程式,以及 postfix本身。

首先,更新包資料庫:

sudo apt update

     

    接下來,安裝 mailtuils:

    sudo apt install mailutils

     

    最後,安裝 postfix:

    sudo apt install postfix

     

    在安裝過程即將結束時,您將看到一個如下圖所示的視窗:

    初始配置屏幕

    ENTER接著說。

    預設選項是 Internet Site ,它是在以下螢幕上預先選取的:

    配置選擇屏幕

    ENTER接著說。

    之後,您將看到另一個視窗來設定 系統信件名稱

    系統郵件名稱選擇

    系統 信件名稱 應與您在建立伺服器時配置給伺服器的名稱相同。 如果它顯示一個子域,例如 subdomain.example.com,將其變更為僅 example.com。 完成後,按 TAB, 然後 ENTER.

    您現在已經安裝了 Postfix,並準備修改其配置設定。

    第 2 步 — 配置 Postfix

    在此步驟中,您將配置 Postfix 以處理僅從運行它的伺服器(即從 localhost.

    為此,Postfix 需要配置為僅偵聽環 回介面 ,即伺服器用於內定通信的虛擬網路介面。 要進行變更,請使用以下指令開啟主 Postfix 配置檔 nano或 您最喜歡的文字編輯器 :

    sudo nano /etc/postfix/main.cf

     

     開啟檔案後,向下卷動,直到看到以下部分:
    /etc/postfix/main.cf
    . . .
    mailbox_size_limit = 0
    recipient_delimiter = +
    inet_interfaces = all
    . . .
    

    變更讀取的行 inet_interfaces = allinet_interfaces = loopback-only:

    /etc/postfix/main.cf
    . . .
    mailbox_size_limit = 0
    recipient_delimiter = +
    inet_interfaces = loopback-only
    . . .
    

    您需要修改的另一個指令是 mydestination,用於指定通過 local_transport信件遞送運輸。 預設情況下,這些值類似於以下內容:

    /etc/postfix/main.cf
    . . .
    mydestination = $myhostname, example.com, localhost.com, , localhost
    . . .
    

    符合 下面的代碼塊中給出了該指令的建議預設值,因此請修改您的代碼以

    /etc/postfix/main.cf
    . . .
    mydestination = $myhostname, localhost.$mydomain, $mydomain
    . . .
    
    

    儲存並關閉檔案。

    注意: 如果您在一台伺服器上託管多個域,則也可以使用以下指令將其他域傳遞到 Postfix mydestination指示。 但是,要以可擴展且不會出現此類設定問題的模式配置 Postfix 涉及到的其他配置超出了本文的範圍。

    最後,重新啟動Postfix。

    sudo systemctl restart postfix

     

    第 3 步 — 測試 SMTP 伺服器

    在此步驟中,您將測試 Postfix 是否可以使用以下指令將電子信件傳送到到外部電子信件帳戶: mail指令,它是 mailutils您在步驟 1 中安裝的軟體包。

    要傳送到測試電子信件,請輸入:

    echo "This is the body of the email" | mail -s "This is the subject line" your_email_address

     

    在執行您自己的測試時,您可以按原樣使用正文和主題行文字,或根據您的喜好變更它們。 然而,代替 your_email_address,使用有效的電子信件位址。 域可以是 gmail.com, fastmail.com, yahoo.com,或您使用的任何其他電子信件服務提供商。

    現在檢查您傳送到測試訊息的電子信件位址。 您應該在收件箱中看到該訊息。 如果沒有,請檢查您的垃圾信件資料夾。

    欄位中的位址將是 發件人” 請注意,使用此配置時,您傳送到的測試電子信件的“ sammy@example.com,其中 sammy 是您的 Linux 非 root 使用者名,域是伺服器的主機名。 如果您變更使用者名, 發件人 位址也會變更。

    第 4 步 — 轉信系統信件

    我們要設定的最後一件事是轉信,這樣您就可以將電子信件傳送到到 根目錄。 系統上您的個人外部電子信件位址的

    要配置 Postfix 以便將系統生成的電子信件傳送到到您的電子信件位址,您需要編輯 /etc/aliases檔案。 現在開啟該檔案:

    sudo nano /etc/aliases

     

    Debian 10 預設安裝的檔案的完整內容如下:

    /etc/aliases
    mailer-daemon: postmaster
    postmaster: root
    nobody: root
    hostmaster: root
    usenet: root
    news: root
    webmaster: root
    www: root
    ftp: root
    abuse: root
    noc: root
    security: root
    

    postmaster: root設定可確保系統生成的電子信件傳送到給 root 使用者。 您想要編輯這些設定,以便將這些電子信件重新路由到您的電子信件位址。 為此,請在下面加入以下行 postmaster: root環境:

    /etc/aliases
    mailer-daemon: postmaster
    postmaster:    root
    root:          your_email_address
    . . .
    

    代替 your_email_address與您的個人電子信件位址。 完成後,儲存並關閉檔案。 要使變更生效,請運行以下指令:

    sudo newaliases

     

    帳戶傳送到電子信件來測試它是否有效 您可以使用以下指令向root

    echo "This is the body of the email" | mail -s "This is the subject line" root

     

    您應該會在您的電子信件位址中收到該電子信件。 如果沒有,請檢查您的垃圾信件資料夾。

    結論

    這就是使用 Postfix 設定只傳送到電子信件伺服器所需的全部工作。

    但是,您可能需要採取一些額外的步驟來保護您的域免受垃圾信件傳送到者的侵害。

    如果您想在單個位址接收來自伺服器的知會,那麼將電子信件標示為垃圾信件就不是什麼問題,因為您可以建立白名單解決方法。

    但是,如果您想向潛在的網站使用者傳送到電子信件(例如留言板註冊的確認電子信件),您絕對應該設定 SPF 記錄和 DKIM,以便您的伺服器的電子信件更有可能被視為合法。

    如果您不是進階使用者,那麼在 Linux 上從頭開始設定自己的電子信件伺服器是一件很痛苦的事情。 本教學將向您展示如何使用 iRedMail 在 Ubuntu 22.04 上快速設定功能齊全的信件伺服器,為您節省大量時間和麻煩。

    什麼是 iRedMail?

    iRedMail 是一個 shell 腳本,可以在您的 Linux/BSD 伺服器上自動安裝和配置所有必需的信件伺服器元件,從而消除手動安裝和配置。 借助 iRedMail,您可以 輕鬆建立無限個信箱和無限個信件域 在基於 Web 的管理面板中 。 信箱可以存儲在 MariaDB/MySQL、PostgreSQL 資料庫或 OpenLDAP 中。 以下是 iRedMail 將自動安裝和配置的開源軟體的清單。

    • Postfix SMTP 伺服器
    • Dovecot IMAP 伺服器
    • Nginx Web 伺服器為管理面板和 Web 信件提供服務
    • OpenLDAP、MySQL/MariaDB 或 PostgreSQL 用於存儲使用者訊息
    • Amavided-用於 DKIM 簽名和驗證的新功能
    • SpamAssassin 用於反垃圾信件
    • ClamAV 用於防病毒
    • Roundcube 網路信件
    • SOGo元件,提供網路信件、日曆(CalDAV)、聯繫人(CardDAV)、任務和ActiveSync服務。
    • 用於保護 SSH 的 Fail2ban
    • mlmmj 信件清單管理器
    • 網路資料伺服器監控
    • 用於灰名單的 iRedAPD Postfix 策略伺服器

    第 1 步:選取合適的託管提供商併購買域名

    要使用 iRedMail 設定功能齊全的電子信件伺服器,您需要一台至少具有 3GB RAM 的伺服器,因為安裝後,您的伺服器將使用超過 2GB RAM。

    強烈建議您在全新的 Ubuntu 22.04 伺服器上安裝 iRedMail。 如果您使用現有的生產伺服器,iRedMail 可能會清除您現有的資料庫。

    本教學是在 具有 1 個 CPU 和 3GB RAM的 Kamatera VPS(虛擬私人伺服器)上完成的,價格為 9 美元/月 。

    他們提供 30 天的免費試用。

    Kamatera 是運行信件伺服器的一個非常好的選取,因為

    • 它們不會阻止連接埠 25 ,因此您可以傳送到無限的電子信件(事務性電子信件和新聞通信),而無需花錢購買 SMTP 中繼服務。 Kamatera 沒有任何 SMTP 限制。 您每天可以傳送到一百萬封電子信件。
    • 該 IP 位址不在任何電子信件黑名單中 。 (至少對我來說是這樣。我選取了達拉斯資料中心。)您絕對不想被列入可怕的 Microsoft Outlook IP 黑名單或垃圾信件黑名單。 有些黑名單會阻止整個 IP 範圍,您無法將您的 IP 位址從此類黑名單中刪除。
    • 您可以編輯 PTR 記錄以提高電子信件的送達率。
    • 傳送到新聞通信 它們容許您向電子信件訂閱者 ,沒有 每小時或每日限制。
    • 您可以為單個伺服器訂購多個 IP 位址。 這對於需要傳送到大量電子信件的人來說非常有用。 您可以 將電子信件流量分散到多個 IP 位址上 ,以實現更好的電子信件送達率。

    其他 VPS 提供商(例如 DigitalOcean )會阻止連接埠 25。DigitalOcean 不會解鎖連接埠 25,因此您需要設定 SMTP 中繼來繞過阻止,這可能會花費您額外的費用。 如果您使用 Vultr VPS ,則預設情況下會阻止連接埠 25。 如果您開啟支援票證,他們可以解鎖它,但如果他們決定不容許您的電子信件傳送到活動,他們可以隨時再次阻止它。 如果您使用 Vultr 的伺服器傳送到新聞通信,Vultr 實際上可能會重新阻止它。

    轉至 Kamatera 網站 建立帳戶,然後在帳戶控制台中建立伺服器。

    Kamatera 服務器類型

    我建議按照下面連結的教學在 Kamatera 上正確設定 Linux VPS 伺服器。

    • 如何在 Kamatera 上建立 Linux VPS 伺服器

    建立伺服器後,Kamatera 將向您傳送到一封電子信件,其中包括伺服器 SSH 登入詳細訊息。 要登入伺服器,您可以使用 SSH 用戶端。 如果您的電腦上使用的是 Linux 或 macOS,則只需開啟終端視窗並運行以下指令即可登入伺服器。 將 12.34.56.78 置換為您伺服器的 IP 位址。

    ssh  root@12.34.56.78

    系統將要求您輸入密碼。

    您還需要一個域名。 註冊了我的域名, 我從NameCheap 因為價格低,而且他們終身免費提供 whois 隱私保護。

    步驟 2:建立 DNS MX 記錄

    MX 記錄指定哪個或哪些主機處理特定域名的電子信件。 例如,處理電子信件的主機 linuxbabe.commail.linuxbabe.com。 如果擁有 Gmail 帳戶的人將電子信件傳送到至 somebody@linuxbabe.com,然後Gmail伺服器會查詢linuxbabe.com的MX記錄。 當它發現這一點時 mail.linuxbabe.com負責接受電子信件,然後查詢 A 記錄 mail.linuxbabe.com取得IP位址,從而可以傳送到電子信件。

    在您的 DNS 管理器中,為您的域名建立 MX 記錄。 進入 @在名稱欄位中表示主域名,然後輸入 mail.your-domain.com在值欄位中。

    iredmail 電子郵件服務器創建 MX 記錄

    注意: MX 記錄的主機名不能是其他名稱的別名。 另外,強烈建議您使用主機名而不是裸 IP 位址作為 MX 記錄。

    您的 DNS 管理器可能會要求您輸入偏好項值(也稱為優先級值)。 它可以是 0 到 65,356 之間的任意數字。 小數字比大數字具有更高的優先級。 建議您將該值設定為0,這樣該信件伺服器將具有最高的優先級來接收電子信件。 建立MX記錄後,還需要建立A記錄 mail.your-domain.com,這樣就可以解析為IP位址。 如果您的伺服器使用 IPv6 位址,請務必加入 AAAA 記錄。

    提示:如果您使用 Cloudflare DNS 服務,則在建立 A 記錄時不應啟用 CDN 功能 mail.your-domain.com。 Cloudflare 不支援 SMTP 代理。

    步驟 3:配置主機名

    登入伺服器 通過SSH ,然後運行以下指令來更新現有軟體包。

    sudo apt update
    
    sudo apt upgrade

    我強烈建議建立一個 sudo用於管理伺服器的使用者而不是使用預設值 root使用者。 運行以下指令建立使用者。 代替 username使用您喜歡的使用者名。

    adduser username
    添加用戶 scalahosting

    然後將使用者新增到 sudo團體。

    adduser username sudo

    然後切換到新使用者。

    su - username

    接下來,使用以下指令為您的伺服器設定完全限定域名 (FQDN)。

    sudo hostnamectl set-hostname  mail.your-domain.com 

    我們還需要更新 /etc/hosts使用 Nano 等指令行文字編輯器建立檔案。

    sudo nano /etc/hosts

    像下面這樣編輯它。 (使用方向鍵在檔案中搬移游標。)

    127.0.0.1       mail.your-domain.com localhost

    儲存並關閉檔案。 (要在 Nano 文字編輯器中儲存檔案,請按 Ctrl+O,然後按 Enter確認。 要關閉檔案,請按 Ctrl+X.)

    要檢視變更,請重新登入,然後運行以下指令來檢視您的主機名。

    hostname -f

    步驟 4:使用 iRedMail 在 Ubuntu 22.04 上設定信件伺服器

    運行以下指令從其 Github 存儲庫下載最新版本的 iRedMail 腳本安裝程式。

    wget https://github.com/iredmail/iRedMail/archive/1.6.0.tar.gz

    提取存檔檔案。

    tar xvf 1.6.0.tar.gz

    然後 cd 進入新建立的目錄。

    cd iRedMail-1.6.0/

    加入可執行權限 iRedMail.sh腳本。

    chmod +x iRedMail.sh

    接下來,使用 sudo 權限運行 Bash 腳本。

    sudo bash iRedMail.sh

    將出現信件伺服器設定精靈。 使用 Tab 鍵選取 Yes ,然後按 Enter。

    ubuntu-18.04-iredmail-服務器

    下一個螢幕將要求您選取信件存儲路徑。 你可以使用預設的 /var/vmail,因此只需按 Enter 鍵即可。

    iredmail-1.0-默認存儲路徑

    然後選取是否要運行 Web 伺服器。 強烈建議您選取運行 Web 伺服器,因為您需要基於 Web 的管理面板來加入電子信件帳戶。 此外,它還容許您訪問 Roundcube 網路信件。 預設情況下,選取 Nginx Web 伺服器,因此您只需按 Enter 鍵即可。 (星號表示該項目已被選中。)

    iredmail-1.0-nginx-web-服務器

    然後選取電子信件帳戶的存儲後端。 選取您熟悉的一個。 本教學選取MariaDB。 按上下方向鍵並按空白鍵進行選取。

    ubuntu-18.04-電子郵件服務器

    如果您選取了 MariaDB 或 MySQL,那麼您將需要設定 MySQL root 密碼。

    ubuntu-18.04-郵件服務器

    請注意,如果您選取 MariaDB,則不需要密碼即可登入 MariaDB shell。 而不是運行普通指令 mysql -u root -p,您可以運行以下指令來登入,使用 sudo 並且無需提供 MariaDB root 密碼。

    sudo mysql -u root

    這是因為 Ubuntu 22.04 上的 MariaDB 軟體包使用 unix_socket 身份驗證外掛程式,該外掛程式容許使用者使用操作系統憑據連線到 MariaDB,但您仍然需要在 iRedMail 設定精靈中設定 root 密碼。

    接下來,輸入您的第一個信件域。 您可以稍後在基於 Web 的管理面板中加入其他信件域。 本教學假設您需要一個電子信件帳戶,例如 john.doe@your-domain.com 。 在這種情況下,您需要在此處輸入 your-domain.com ,不帶子域。 不要在域名後面按空白鍵。 我認為 iRedMail 會將空格字元與您的域名一起複製,這可能會導致安裝失敗。

    在 ubuntu-18.04 上設置郵件服務器

    接下來,設定信件域管理員的密碼。

    ubuntu-18.04-電子郵件服務器-一步一步

    選取可選元件。 預設情況下,選取 4 個項目。 請注意,SOGo元件目前不支援Ubuntu 22.04,所以不要選取它。

    iredmail 組件

    現在您可以檢查您的配置。 類型 Y開始安裝所有信件伺服器元件。

    紅外郵件評論

    安裝結束時選取 y使用iRedMail提供的防火牆規則並重新啟動防火牆。

    iredmail-防火牆-規則-fail2ban

    至此iRedMail安裝完成。 您將收到網路信件、SOGo 元件和網路管理面板的 URL 以及登入憑據的知會。 這 iRedMail.tips檔案包括有關 iRedMail 伺服器的重要訊息。

    iredmail-全功能郵件服務器

    重新啟動您的 Ubuntu 22.04 伺服器。

    sudo shutdown -r now

    一旦您的伺服器重新上線,您就可以訪問網路管理面板。

    https://mail.your-domain.com/iredadmin/

    請注意 ,在上面的 URL 中,訪問管理面板的子目錄是 /iredadmin/, 不是 /iredmail/。 由於它使用自簽名 TLS 證書,因此您需要在 Web 瀏覽器中加入安全例外。

    第5步:安裝Let’s Encrypt TLS證書

    由於信件伺服器使用自簽名 TLS 證書,桌面信件用戶端使用者和 Web 信件用戶端使用者都會看到警示。 為了解決這個問題,我們可以取得並安裝免費的 Let’s Encrypt TLS 證書。

    獲得證書

    首先,通過 SSH 再次登入伺服器並運行以下指令在 Ubuntu 22.04 上安裝 Let’s Encrypt (certbot) 用戶端。

    sudo apt install certbot python3-certbot-nginx -y

    iRedMail 已經在預設的 Nginx 虛擬主機中配置了 TLS 設定,因此這裡我建議使用 webroot 外掛程式而不是 nginx 外掛程式來取得證書。 運行以下指令。 將紅色文字置換為您的實際資料。

    sudo certbot certonly --webroot --agree-tos --email  you@example.com  -d  mail.your-domain.com  -w /var/www/html/

    當它詢問您是否要接收來自 EFF 的通信時,您可以選取“否”。

    iredmail 讓加密

    如果一切順利,您將看到以下文字,顯示您已成功取得 TLS 證書。 您的證書和鏈已儲存在 /etc/letsencrypt/live/mail.your-domain.com/目錄。

    iredmail 證書機器人

    取得TLS證書失敗

    如果 certbot 無法取得 TLS 證書,可能是因為您的 DNS 記錄未傳播到 Internet。 根據您使用的域名註冊商,您的 DNS 記錄可能會立即傳播,也可能需要長達 24 小時才能傳播。 您可以訪問 https://dnsmap.io ,輸入您的信件伺服器的主機名( mail.your-domain.com) 檢查 DNS 傳播。

    如果 certbot 無法取得證書並且您看到以下訊息,

    Failed authorization procedure. mail.linuxbabe.com (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching https://mail.linuxbabe.com/.well-known/acme-challenge/IZ7hMmRE4ZlGW7cXYoq2Lc_VrFzVFyfW6E0pzNlhiOA: Timeout during connect (likely firewall problem)

    您可能已設定 AAAA 記錄 mail.your-domain.com,但 Nginx Web 伺服器不偵聽 IPv6 位址。 要修復此錯誤,請編輯 /etc/nginx/sites-enabled/00-default.conf檔案

    sudo nano /etc/nginx/sites-enabled/00-default.conf

    找到以下行。

    #listen [::]:80;

    去除 #用於為此 Nginx 虛擬主機啟用 IPv6 的字元。

    listen [::]:80;

    儲存並關閉檔案。 然後編輯SSL虛擬主機 /etc/nginx/sites-enabled/00-default-ssl.conf.

    sudo nano /etc/nginx/sites-enabled/00-default-ssl.conf

    加入以下行。

    listen [::]:443 ssl http2;
    iredmail certbot 續訂

    儲存並關閉檔案。 然後測試Nginx配置。

    sudo nginx -t

    如果測試成功,請重新加載 Nginx 以使變更生效。

    sudo systemctl reload nginx

    再次運行以下指令取得TLS證書。 將紅色文字置換為您的實際資料。

    sudo certbot certonly --webroot --agree-tos --email  you@example.com  -d  mail.your-domain.com  -w /var/www/html/

    現在您應該能夠成功取得 TLS 證書。

    在 Nginx 中安裝證書

    獲得 TLS 證書後,讓我們配置 Nginx Web 伺服器來使用它。 編輯 SSL 模板檔案。

    sudo nano /etc/nginx/templates/ssl.tmpl

    找到以下 2 行。

    ssl_certificate /etc/ssl/certs/iRedMail.crt;
     ssl_certificate_key /etc/ssl/private/iRedMail.key;

    將它們置換為:

    ssl_certificate /etc/letsencrypt/live/  mail.your-domain.com  /fullchain.pem; 
      ssl_certificate_key /etc/letsencrypt/live/  mail.your-domain.com  /privkey.pem;

    儲存並關閉檔案。 然後測試nginx配置並重新加載。

    sudo nginx -t
    
    sudo systemctl reload nginx

    再次訪問 iRedMail 管理面板,您的網路瀏覽器將不再警示您,因為 Nginx 現在使用有效的 TLS 證書。

    紅外管理員

    在 Postfix 和 Dovecot 中安裝 TLS 證書

    我們還需要配置 Postfix SMTP 伺服器和 Dovecot IMAP 伺服器以使用 Let’s Encrypt 頒發的證書,以便桌面信件用戶端不會顯示安全警示。 編輯Postfix的主配置檔。

    sudo nano /etc/postfix/main.cf

    找到以下 3 行。 (95、96、97 號線)。

    smtpd_tls_key_file = /etc/ssl/private/iRedMail.key
     smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt
     smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt

    將它們置換為:

    smtpd_tls_key_file = /etc/letsencrypt/live/  mail.your-domain.com  /privkey.pem 
      smtpd_tls_cert_file = /etc/letsencrypt/live/  mail.your-domain.com  /cert.pem 
      smtpd_tls_CAfile = /etc/letsencrypt/live/  mail.your-domain.com  /chain.pem

    儲存並關閉檔案。 然後重新加載 Postfix。

    sudo systemctl reload postfix

    接下來,編輯Dovecot的主配置檔。

    sudo nano /etc/dovecot/dovecot.conf

    細化以下兩行。 (第 47、48 行)

    ssl_cert = </etc/ssl/certs/iRedMail.crt
     ssl_key = </etc/ssl/private/iRedMail.key

    將它們置換為:

    ssl_cert = </etc/letsencrypt/live/  mail.your-domain.com  /fullchain.pem 
      ssl_key = </etc/letsencrypt/live/  mail.your-domain.com  /privkey.pem

    儲存並關閉檔案。 然後重新加載鴿捨。

    sudo systemctl reload dovecot

    從現在開始,桌面信件使用者將不會看到安全警示。

    第 6 步:傳送到測試電子信件

    )登入 iredadmin 面板 使用 postmaster 信件帳戶 ( postmaster@your-domain.com 。 在裡面 Add索引片,您可以加入其他域或電子信件位址。

    在 iredadmin 中添加電子郵件地址
    如果您看到“無域受控制”錯誤,請參閱 本文

    建立使用者後,您可以訪問 Roundcube 網路信件位址並使用新的信件使用者帳戶登入。

    https://mail.your-domain.com/mail/
    iredmail roundcube 網絡郵件

    現在您可以測試電子信件傳送到和接收。 請注意,您可能需要等待幾分鐘才能收到電子信件,因為 iRedMail 預設啟用灰名單,這是一種告訴其他傳送到 SMTP 伺服器在幾分鐘後重試的方法。 信件日誌檔案中的以下行 /var/log/mail.log表示灰名單已啟用。

    Recipient address rejected: Intentional policy rejection, please try again later;

    加入交換空間

    ClamAV 用於掃瞄電子信件中的病毒。 ClamAV 可以使用相當數量的 RAM。 如果您的伺服器上沒有足夠的 RAM,ClamAV 將無法標準工作,這將阻止您的信件伺服器傳送到電子信件。 您可以向伺服器加入交換檔案以增加伺服器上的總 RAM。 (請注意,在伺服器上使用交換空間會降低伺服器效能。如果您想要更好的效能,應升級物理 RAM,而不是使用交換空間。)

    要在伺服器上加入交換空間,首先使用 fallocate建立檔案的指令。 例如,在根檔案系統中建立一個名為swapfile、容量為1G的檔案:

    sudo fallocate -l 1G /swapfile

    然後確保只有 root 可以讀取和寫入它。

    sudo chmod 600 /swapfile

    將其格式化為交換:

    sudo mkswap /swapfile

    輸出:

    Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
    no label, UUID=0aab5886-4dfb-40d4-920d-fb1115c67433

    啟用交換檔案

    sudo swapon /swapfile

    要在系統啟動時掛載交換空間,請編輯 /etc/fstab檔案。

    sudo nano /etc/fstab

    在此檔案的底部加入以下行。

    /swapfile    swap    swap     defaults    0   0

    儲存並關閉檔案。 然後重新加載 systemd 並重新啟動 ClamAV。

    sudo systemctl daemon-reload
    
    sudo systemctl restart clamav-daemon

    步驟7:檢查連接埠25(出站)是否被阻止

    您的 ISP 或託管提供商不會阻止到您伺服器連接埠 25 的傳入連線,這意味著您可以接收來自其他信件伺服器的電子信件。 但是,許多 ISP/託管提供商會阻止與其他信件伺服器的連接埠 25 的傳出連線,這意味著您無法傳送到電子信件。

    如果您的電子信件未到達您的其他電子信件位址(例如 Gmail),請在信件伺服器上運行以下指令以檢查連接埠 25(出站)是否被阻止。

    telnet gmail-smtp-in.l.google.com 25

    如果沒有被阻止,您將看到如下訊息,這顯示連線已成功建立。 (提示:輸入 quit然後按 Enter 鍵關閉連線。)

    Trying 74.125.68.26...
    Connected to gmail-smtp-in.l.google.com.
    Escape character is '^]'.
    220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp

    如果連接埠 25(出站)被阻止,您會看到類似以下內容:

    Trying 2607:f8b0:400e:c06::1a...
    Trying 74.125.195.27...
    telnet: Unable to connect to remote host: Connection timed out

    在這種情況下,您的 Postfix 無法將電子信件傳送到到其他 SMTP 伺服器。 請您的 ISP/託管提供商為您開啟它。 如果他們拒絕您的請求,您需要 設定 SMTP 中繼來繞過連接埠 25 阻塞 。

    仍然無法傳送到電子信件?

    如果連接埠 25(出站)未被阻止,但您仍然無法從自己的信件伺服器向您的其他電子信件位址(例如 Gmail)傳送到電子信件,那麼您應該檢查信件日誌( /var/log/mail.log).

    sudo nano /var/log/mail.log

    例如,有些人可能會在檔案中看到以下幾行。

    host gmail-smtp-in.l.google.com[2404:6800:4003:c03::1b] said: 550-5.7.1 [2a0d:7c40:3000:b8b::2] Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication. Please review 550-5.7.1 https://support.google.com/mail/?p=IPv6AuthError for more information

    這意味著您的信件伺服器正在使用 IPv6 傳送到電子信件,但您沒有設定 IPv6 記錄。 你應該去你的 DNS 管理器,設定 AAAA記錄為 mail.your-domain.com,那麼你應該設定 PTR記錄您的 IPv6 位址,這將在步驟 9 中討論。

    步驟 8:在電腦或搬移裝置上使用信件用戶端

    啟動您的桌面電子信件用戶端(例如 Mozilla Thunderbird)並加入信件帳戶。

    • 在傳入伺服器部分,選取 IMAP 協定,輸入 mail.your-domain.com作為伺服器名稱,選取連接埠 143 和 STARTTLS。 選取 normal password作為身份驗證方法。
    • 在傳送到部分,選取 SMTP 協定,輸入 mail.your-domain.com作為伺服器名稱,選取連接埠 587 和 STARTTLS。 選取 normal password作為身份驗證方法。
    ubuntu postfix dovecot 讓加密https

    Fail2ban 阻止您自己的 IP 位址

    如果您犯了錯誤,多次登入信件伺服器失敗,那麼信件伺服器上的Fail2ban服務可能會封鎖您的IP位址。 您可以通過編輯以下內容將您的 IP 位址新增到白名單 jail.local檔案。

    sudo nano /etc/fail2ban/jail.local

    將您自己的 IP 位址新增到忽略清單中,如下所示。 將 12.34.56.78 置換為您的真實 IP 位址。

    ignoreip = 12.34.56.78 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

    儲存並關閉檔案。 然後重新啟動 Fail2ban。

    sudo systemctl restart fail2ban

    第 9 步:提高電子信件送達率

    為了防止您的電子信件被標示為垃圾信件,您應該設定 PTR, SPF, DKIMDMARC記錄。

    PTR記錄

    指標記錄或 PTR 記錄將 IP 位址映射到 FQDN(完全限定域名)。 它與 A 記錄相對應,用於 反向 DNS 搜尋,有助於阻止垃圾信件傳送到者。 如果沒有找到傳送到伺服器的 PTR 記錄,許多 SMTP 伺服器會拒絕電子信件。

    要檢查 IP 位址的 PTR 記錄,請運行以下指令:

    dig -x IP-address +short

    或是

    host IP-address

    PTR 記錄不由您的域名註冊商管理。 它由為您提供 IP 位址的組織管理。 因為您從託管提供商或 ISP 取得 IP 位址,而不是從域名註冊商處取得,所以您必須在託管提供商的控制台中為您的 IP 設定 PTR 記錄,或是詢問您的 ISP。 它的值應該是您的信件伺服器的主機名: mail.your-domain.com。 如果您的伺服器使用 IPv6 位址,請務必為您的 IPv6 位址加入 PTR 記錄。

    的反向 DNS 記錄 要編輯Kamatera VPS ,請登入 Kamatera 用戶端區域,然後開啟支援票並告訴他們為您的伺服器 IP 位址加入 PTR 記錄以將 IP 位址指向 mail.your-domain.com。 您可能會認為這並不方便,但這是為了讓垃圾信件傳送到者遠離平台,因此像我們這樣的合法電子信件發件人將擁有良好的 IP 聲譽。

    SPF記錄

    SPF (發件人策略框架)記錄指定容許哪些主機或 IP 位址代表域傳送到電子信件。 您應該只容許您自己的電子信件伺服器或 ISP 的伺服器為您的域傳送到電子信件。 在您的 DNS 管理介面中,建立一個新的 TXT 記錄,如下所示。

    莫多博亞SPF記錄

    解釋:

    • TXT 表示這是一條 TXT 記錄。
    • 在名稱欄位中輸入 @ 代表主域名。
    • v=spf1 表示這是一條 SPF 記錄,版本為 SPF1。
    • mx 表示 MX 記錄中列出的所有主機都可以為您的域傳送到電子信件,而不容許所有其他主機。
    • ~all 表示來自您域的電子信件只能來自 SPF 記錄中特殊的主機。 來自其他主機的電子信件將被標示為偽造。

    要檢查您的 SPF 記錄是否傳播到公共網際網路,您可以在 Linux 電腦上使用 dig 實用程式,如下所示:

    dig your-domain.com txt

    txt選項告訴 dig我們只想查詢TXT記錄。

    DKIM 記錄

    DKIM (域密鑰識別信件)使用私鑰對從您的域傳送到的電子信件進行數字簽名。 接收 SMTP 伺服器使用在 DNS DKIM 記錄中發佈的公鑰來驗證簽名。

    iRedMail 腳本自動為您的伺服器配置 DKIM。 唯一剩下要做的就是在 DNS 管理器中建立 DKIM 記錄。 運行以下指令以顯示 DKIM 公鑰。

    sudo amavisd-new showkeys

    DKIM 公鑰位於括號中。

    iredmail amavis dkim

    然後在您的 DNS 管理器中建立一條 TXT 記錄,輸入 dkim._domainkey在名稱欄位中。 複製括號中的所有內容並貼上到值欄位中。 刪除所有雙引號和換行符。

    amavisd-新免費

    儲存變更後,運行以下指令來測試您的 DKIM 記錄是否正確。

    sudo amavisd-new testkeys

    如果 DKIM 記錄正確,則測試將通過。

    TESTING#1 linuxbabe.com: dkim._domainkey.linuxbabe.com => pass

    請注意,您的 DKIM 記錄可能需要一些時間才能傳播到 Internet。 根據您使用的域名註冊商,您的 DNS 記錄可能會立即傳播,也可能需要長達 24 小時才能傳播。 您可以訪問 https://www.dmarcanalyzer.com/dkim/dkim-check/ ,輸入 dkim作為選取器並輸入您的域名以檢查 DKIM 記錄傳播。

    DMARC 記錄

    DMARC 代表基於域的訊息驗證、報告和一致性。 DMARC 可以幫助接收電子信件伺服器識別合法電子信件並防止您的域名被電子信件欺騙所使用。

    要建立 DMARC 記錄,請轉到您的 DNS 管理器並加入 TXT 記錄。 在名稱欄位中,輸入 _dmarc。 在值欄位中,輸入以下內容。 (您應該建立 dmarc@your-domain.com電子信件位址。)

    v=DMARC1;   p=無;   %=100;   rua=mailto:  dmarc@your-domain.com 
    創建 dmarc 記錄 txt

    上述 DMARC 記錄是一個安全的起點。 如果您想閱讀 DMARC 的完整說明,請檢視以下文章。 請注意,這是可選的。

    • 建立 DMARC 記錄以保護您的域名免遭電子信件欺騙

    第 10 步:測試電子信件分數和排名

    建立 PTR、SPF、DKIM 記錄後,轉到 https://www.mail-tester.com 。 您將看到一個唯一的電子信件位址。 從您的域向此位址傳送到一封電子信件,然後檢查您的分數。 正如你所看到的,我得到了滿分。 在測試結果中,您應該檢查您的PTR記錄、SPF和DKIM記錄是否有效。

    測試電子郵件分數和排名Mail-tester.com 只能向您顯示發件人分數。 還有另一項名為 GlockApps 的 服務,可讓您檢查您的電子信件是否已進入收件人的收件箱或垃圾信件資料夾,或被徹底拒絕。 它支援許多流行的電子信件提供商,如 Gmail、Outlook、Hotmail、YahooMail、iCloud 信件等

    glockapps-電子郵件-放置-測試-scalahosting-vps

    電子信件被 Microsoft 信箱拒絕?

    Microsoft 使用內定黑名單來阻止許多合法的 IP 位址。 如果您的電子信件被 Outlook 或 Hotmail 拒絕,您需要按照下面連結的教學繞過 Microsoft Outlook 黑名單。

    • 如何繞過 Microsoft Outlook 黑名單和其他黑名單

    如果您的電子信件仍然被標示為垃圾信件怎麼辦?

    我在這篇文章中為您提供了更多提示: 如何阻止您的電子信件被標示為垃圾信件 。 儘管這需要一些時間和精力,但應用這些提示後,您的電子信件最終將被放入收件箱中。

    加入多個信件域

    我寫 這篇文章是為了向您展示如何在 iRedMail 中加入多個信件域 。

    如何禁用灰名單

    預設情況下,iRedMail 已啟用灰名單,這會告訴其他傳送到 SMTP 伺服器在幾分鐘後重試。 這主要用於阻止垃圾信件,但也會降低使用者體驗。 如果您想禁用灰名單,請按照以下說明操作。

    加入寫入權限 /opt/iredapd/settings.py檔案。

    sudo chmod 600 /opt/iredapd/settings.py

    然後編輯配置檔。

    sudo nano /opt/iredapd/settings.py

    找到以下行。

    plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"]

    消除 "greylisting"從清單中。 儲存並關閉檔案。 然後重新啟動 iredapd。

    sudo systemctl restart iredapd

    將配置檔變更回唯讀模式。

    sudo chmod 400 /opt/iredapd/settings.py

    啟用 SMTPS 連接埠 465

    如果您要使用 Microsoft Outlook 用戶端,則需要 在 Postfix SMTP 伺服器中啟用 SMTPS 連接埠 465

    故障排除技巧

    首先,請使用至少 4GB RAM 的 VPS。 在 1GB RAM VPS 上運行 iRedMail 將導致資料庫、SpamAssassin 或 ClamAV 由於記憶體不足問題而被終止。 如果您確實想使用 1GB RAM VPS,您將會丟失傳入的電子信件並產生其他不良結果。

    如果 iRedMail Web 介面無法訪問,例如 502 通訊閘錯誤,您應該檢查 Nginx 登入 /var/log/nginx/目錄尋找線索。

    如果您無法傳送到或接收電子信件,請檢查信件日誌 /var/log/mail.log.

    另外,檢查各種服務是否正在運行。

    systemctl status postfix
    
    systemctl status dovecot
    
    systemctl status nginx
    
    systemctl status mariadb
    
    systemctl status clamav-daemon
    
    systemctl status amavis

    如果啟用了防火牆,則應在防火牆中開啟以下連接埠。

    HTTP port:  80
    HTTPS port: 443
    SMTP port:  25
    Submission port: 587 (and 465 if you are going to use Microsoft Outlook mail client)
    IMAP port:  143 and 993

    如果您想使用 UFW 防火牆,請在此處檢視我的指南: Debian 和 Ubuntu 上的 UFW 防火牆入門

    如何續訂 TLS 證書

    Let’s Encrypt 頒發的 TLS 證書的有效期僅為 90 天,因此設定 Cron 作業來自動續訂證書非常重要。 您可以運行以下指令來更新證書。

    sudo certbot renew -w /var/www/html

    您可以使用 --dry-run選取測試續訂過程,而不是進行真正的續訂。

    sudo certbot renew -w /var/www/html --dry-run

    如果您在續訂 TLS 證書時看到以下錯誤。

    The client lacks sufficient authorization :: Invalid response

    然後你需要建立隱藏目錄。

    sudo mkdir -p /var/www/html/.well-known/acme-challenge

    並設定 www-data作為網路根的所有者。

    sudo chown www-data:www-data /var/www/html/ -R

    另外,編輯 SSL 虛擬主機 /etc/nginx/sites-enabled/00-default-ssl.conf。 加入以下行。

    location ~ /.well-known/acme-challenge {
         root /var/www/html/;
         allow all;
    }
    iredmail 讓加密續訂

    儲存並關閉檔案。 測試 Nginx 配置並重新加載。

    sudo nginx -t
    sudo systemctl reload nginx

    建立計劃任務

    如果現在試運行成功,您可以建立 Cron 作業來自動更新證書。 只需開啟 root 使用者的 crontab 檔案即可。

    sudo crontab -e

    然後在檔案底部加入以下行。

    @daily certbot renew -w /var/www/html --quiet && systemctl reload postfix dovecot nginx

    為了使這些程式取得新的證書和私鑰,需要重新加載 Postfix、Dovecot 和 Nginx。

    設定備份信件伺服器

    您的主信件伺服器有時可能會關閉。 如果您將信件伺服器託管在資料中心,則停機時間非常短,因此您不必擔心丟失入站電子信件。 如果您在家中託管信件伺服器,則無法預測停機時間,因此最好在資料中心運行備份信件伺服器以防止丟失入站電子信件。 備份信件伺服器僅需要 512MB RAM 即可運行。 請檢視以下文章中的完整詳細訊息。

    • 如何在 Ubuntu 上使用 Postfix 設定備份電子信件伺服器(完整指南)

    對於進階使用者

    iRedMail 不包括 DMARC 驗證服務,您可以檢視以下教學來設定 OpenDMARC 以阻止電子信件欺騙。

    • 在 Ubuntu 上使用 Postfix 設定 OpenDMARC 以阻止電子信件欺騙/垃圾信件

    您可能需要自訂 SpamAssassin 內容過濾器以更好地檢驗垃圾信件。

    • 通過檢查 Postfix/SpamAssassin 中的標頭和正文來阻止垃圾信件

    如果您的網站和信件伺服器運行在兩個不同的VPS(虛擬私人伺服器)上,您可以在您的網站和信件伺服器之間設定SMTP中繼,以便您的網站可以通過您的信件伺服器傳送到電子信件。 請參閱以下文章。

    • 如何在 Ubuntu 上的 2 個 Postfix SMTP 伺服器之間設定 SMTP 中繼

    就是這樣! 我希望本教學可以幫助您在 Ubuntu 22.04 上使用 iRedMail 設定信件伺服器。

    文將向您展示如何設定 Lightmeter ,這是一個開源的自託管信件伺服器監控工具,以便您可以了解 Linux 信件伺服器的狀況。

    Lightmeter 特點:

    • 易於使用的基於網路的介面
    • 信件伺服器宕機監控
    • RBL(實時阻止清單)監控
    • 實時檢驗 Gmail 和 Microsoft 等其他 SMTP 伺服器阻止的電子信件
    • 通過電子信件和 Slack 進行即時警示知會
    • 自動防禦殭屍網路和暴力攻擊
    • 支援本地和遠端日誌檔案

    它基本上是一個進階版本 pflogsumm帶有網路介面。

    要求

    假設您有一個信件伺服器已啟動並正在運行。 如果沒有,請使用以下教學來設定您的信件伺服器。

    • 如何使用 Modoboa 在 Ubuntu 22.04 上快速設定信件伺服器
    • 如何使用 Modoboa 在 Debian 10 Buster 上快速設定信件伺服器

    請注意,僅 Postfix 支援 等其他 SMTP 伺服器軟體。 EXIM SMTP 伺服器。 不支援

    第 1 步:安裝 Lightmeter 二進製檔案

    通過 SSH 登入您的 Linux 伺服器。 然後使用 wget下載 Lightmeter 的最新穩定版本(撰寫本文時為 1.9.1)。 您可以檢視 其 GitLab 存儲庫發佈頁面 以了解最新版本。

    wget https://gitlab.com/api/v4/projects/17017123/packages/generic/lightmeter/1.9.1/lightmeter-linux_amd64-1.9.1

    將其移至 /usr/local/bin/目錄。

    sudo mv lightmeter-linux_amd64-1.9.1  /  usr/local/bin/lightmeter

    加入可執行權限。

    sudo chmod +x /usr/local/bin/lightmeter

    加入一個 lightmeter使用者。

    sudo useradd lightmeter --create-home --home-dir /var/lib/lightmeter_workspace --system

    運行 Lightmeter

    sudo -u lightmeter /usr/local/bin/lightmeter -watch_dir /var/log

    現在您可以訪問Lightmeter Web介面。

    http://你的伺服器IP:8080
    照度計創建管理員帳戶

    系統會要求您建立一個管理員帳戶。 在此之前,讓我們為 Lightmeter 建立一個 systemd 服務並啟用 HTTPS。

    第2步:建立Systemd服務

    Ctrl+C停止現用的的照度計程式。 然後為 Lightmeter 建立一個 systemd 服務單元。

    sudo nano /etc/systemd/system/lightmeter.service

    將以下文字放入檔案中。

    [Unit]
    Description=Mail Server Monitoring
    After=network.target
    
    [Service]
    Type=simple
    ExecStartPre=/bin/bash -c '/usr/bin/setfacl -R -m u:lightmeter:rx /var/log/mail*'
    ExecStart=sudo -u lightmeter usr/local/bin/lightmeter -watch_dir /var/log/
    ExecStop=sudo -u lightmeter /usr/bin/pkill /usr/local/bin/lightmeter
    Restart=always
    SyslogIdentifier=Lightmeter
    
    [Install]
    WantedBy=multi-user.target

    Ctrl+O,然後按 Enter儲存檔案。 按 Ctrl+X離開。 然後重新加載systemd。

    sudo systemctl daemon-reload

    啟動 Lightmeter

    sudo systemctl start lightmeter.service

    啟用自動啟動。

    sudo systemctl enable lightmeter.service

    檢查其狀態:

    sudo systemctl status lightmeter.service

    示例輸出:

    照度計系統服務

    如您所見,它處於活動狀態(正在運行)。

    第 3 步:設定反向代理

    要通過安全 HTTPS 協定通過域名訪問 Lightmeter Web 介面,我們需要使用 Apache 或 Nginx 設定反向代理。

    nginx

    Nginx 是一個非常流行的 Web 伺服器和反向代理。 如果您更喜歡使用 Nginx,請運行以下指令來安裝它。

    sudo apt install nginx

    然後為 Lightmeter 建立一個伺服器塊檔案。

    sudo nano /etc/nginx/conf.d/lightmeter.conf

    將以下內容新增到該檔案中。 代替 lightmeter.example.com使用您自己的偏好 DNS 名稱。 您還應該 建立 DNS A 記錄 為此子域 。 如果你沒有真正的域名,我建議你去 NameCheap 購買一個。 價格低廉,並且終身免費提供whois隱私保護。

    server {
          listen 80;
          listen [::]:80;
          server_name lightmeter.example.com;
    
          access_log /var/log/nginx/lightmeter.access;
          error_log /var/log/nginx/lightmeter.error;
    
          location / {
              proxy_pass http://127.0.0.1:8080;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
    
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
              proxy_set_header X-Forwarded-Protocol $scheme;
              proxy_set_header X-Forwarded-Host $http_host;
          }
    }

    儲存並關閉該檔案。 然後測試Nginx配置。

    sudo nginx -t

    如果測試成功,請重新加載 Nginx 以使變更生效。

    sudo systemctl reload nginx

    現在您可以通過以下模式訪問 Lightmeter 媒體伺服器 lightmeter.example.com.

    Apache

    如果您更喜歡 Apache 而不是 Nginx,請使用以下指令安裝 Apache Web 伺服器。

    sudo apt install apache2

    要使用 Apache 作為反向代理,我們需要啟用 proxy模組和頭模組。

    sudo a2enmod proxy proxy_http headers proxy_wstunnel

    然後為Lightmeter建立一個虛擬主機檔案。

    sudo nano /etc/apache2/sites-available/lightmeter.conf

    將以下配置放入檔案中。 代替 lightmeter.example.com使用您自己的偏好 DNS 名稱。 不要忘記 建立 DNS A 記錄 為此子域 。 如果你沒有真正的域名,我建議你去 NameCheap 購買一個。 價格低廉,並且終身免費提供whois隱私保護。

    <VirtualHost *:80>
       ServerName lightmeter.example.com
       ErrorDocument 404 /404.html
    
       #HTTP proxy
       ProxyPass / http://localhost:8080/
       ProxyPassReverse / http://localhost:8080/
    
    </VirtualHost>

    儲存並關閉檔案。 然後啟用該虛擬主機。

    sudo a2ensite lightmeter.conf

    重新啟動 apache

    sudo systemctl restart apache2

    現在您可以使用域名訪問Lightmeter媒體伺服器 lightmeter.example.com.

    步驟 4:如何啟用 HTTPS

    要加密 HTTP 流量,我們可以通過安裝 Let’s Encrypt 頒發的免費 TLS 證書來啟用 HTTPS。 運行以下指令在 Ubuntu 22.04/20.04 上安裝 Let’s Encrypt 用戶端 (certbot)。

    sudo apt install certbot

    如果您使用 Nginx ,那麼您還需要安裝 Certbot Nginx 外掛程式。

    sudo apt install python3-certbot-nginx

    接下來,運行以下指令來取得並安裝 TLS 證書。

    sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email  you@example.com  -d  lightmeter.example.com 

    如果您使用 Apache ,那麼您需要安裝 Certbot Apache 外掛程式。

    sudo apt install python3-certbot-apache

    接下來,運行以下指令來取得並安裝 TLS 證書。

    sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email  you@example.com  -d  lightmeter.example.com 

    在哪裡:

    • --nginx:使用nginx外掛程式。
    • --apache:使用Apache外掛程式。
    • --agree-tos:同意服務條款。
    • --redirect:通過 301 重定向強制使用 HTTPS。
    • --hsts:將 Strict-Transport-Security 標頭新增到每個 HTTP 響應中。 強制瀏覽器始終對域使用 TLS。 防禦 SSL/TLS 剝離。
    • --staple-ocsp:啟用 OCSP 裝訂。 有效的 OCSP 響應將被貼上到伺服器在 TLS 期間提供的證書中。

    現在應該已取得並自動安裝證書。

    照度計 https

    您可以通過 HTTPS 訪問 Lightmeter Web 介面: https://lightmeter.example.com.

    第 5 步:配置 LightMeter

    現在您可以轉到 Lightmeter Web 介面來建立管理員帳戶。 Lightmeter 自動分析信件日誌,並為您提供最繁忙域、退回域和延遲域的概覽。

    照度計網頁界面

    然後進入 “設定” 頁面並啟用電子信件知會,以便 Lightmeter 可以在有退回電子信件、延遲電子信件或您的信件伺服器 IP 位址被列入黑名單時知會您。

    照度計電子郵件通知

    留言偵探

    Lightmeter 容許您檢查每封電子信件的傳輸狀態。 點選右上角的拉近鏡圖示。 然後輸入發件人和收件人的電子信件位址。

    光度計消息偵探

    如您所見,訊息已成功傳送到。 您可以進入 “設定” 頁面,啟用訊息偵探頁面的公開訪問權限,這樣您的信箱使用者也可以檢視信件傳送到狀態。

     我希望這篇文章可以幫助您設定 Lightmeter。

    您曾經收到過來自公司的促銷電子信件嗎? 誰沒有,對吧?

    即使您到目前為止一直在使用 Gmail 或其他免費信件服務,您也與信件伺服器發生過不少衝突。

    信件伺服器的重要性顯而易見,很難想像如果不利用最好的信件伺服器就能成功開展業務。

    要管理每日積壓的電子信件,您需要最好的 Linux 電子信件伺服器。

    這篇文章將幫助您選取最適合 Linux 的信件伺服器。

    現在讓我們深入了解 14 名最佳 Linux 信件伺服器的更多訊息。

    什麼是信件伺服器?

    作為使用者,我們都對 Microsoft Outlook 或 Thunderbird 等電子信件用戶端有一定的使用經驗。

    但當你從一個使用者轉向嘗試自己創業時,你會看到電子信件的另一面:信件伺服器。

    Linux 信件伺服器軟體用於將電子信件從網際網路的一個點傳輸到另一個點。

    也稱為信件傳輸代理 (MTA),它們接收來自其他伺服器的傳入電子信件,然後將其轉信到使用者的用戶端軟體,反之亦然。

    儘管幾乎所有信件伺服器都處理傳入和傳出電子信件,但這兩個功能是獨立的並且遵循不同的協定。

    傳入信件伺服器通常使用郵局協定 3 (POP3) 或 Internet 訊息訪問協定 (IMAP) 運行,而簡單信件傳輸協定 (SMTP) 用於傳送到之前從使用者用戶端軟體收到的電子信件。

    託管 Linux 信件伺服器有哪些要求?

    託管自己的信件伺服器的優點是提高電子信件的安全性和隱私性,並更有效地開展電子信件行銷活動。

    Linux 發行版是託管信件伺服器的完美選取,因為 Linux 是輕量級的、高度可定制的,並且不會佔用太多硬體資源。

    即使使用 Linux 操作系統,您仍然需要另一台具有足夠存儲和記憶體資源的電腦來充當信件伺服器。

    現在,購買一台具有合適規格的電腦可能會變得昂貴。 這就是為什麼在 VPS 上託管信件伺服器是一個不錯的選取。

    虛擬私人伺服器是一種類似於虛擬電腦的託管服務。 您可以獲得帶有完全私人於您的 Linux 信件伺服器軟體的 Linux 發行版的 VPS。

    Cloudzy 正是託管最佳 Linux 信件伺服器的正確解決專案。

    Cloudzy 的 Linux VPS 在 3 大洲超過 15 個地點提供,容許您在靠近客戶群或您想要的任何地方託管信件伺服器。

    這些虛擬私人伺服器非常強大,因為 Cloudzy 使用最新的硬體資源來支援伺服器。

    您可以選取託管 Linux 信件伺服器所需的資源,並且隨著業務的增長,您可以輕鬆擴展您的計劃。

    總體而言,VPS 是一種經濟實惠的解決專案,但 Cloudzy 以提供最實惠的價格而聞名,考慮到高質量的服務,這一點是非常出色的。

    額外的事實:如果您從 Cloudzy 取得用於信件伺服器的 VPS,您將獲得免費且預安裝的 Linux 操作系統。

    我們提供完整的 Linux 發行版選取。

    針對信件伺服器優化的 VPS 無需花費大量資金來託管信件伺服器。

    以驚人的價格在任何您想要的地方獲得功能強大的 Cloudzy VPS,針對託管信件伺服器進行了優化!

    如何為 Linux 選取最佳的信件伺服器?

    在尋找信件伺服器時,您需要考慮很多事情。

    最重要的因素是伺服器提供的功能以及它如何滿足您的需求。

    需要尋找的一些功能內含對不同信件用戶端的支援以及與現有軟體和硬體的整合。

    確保信件伺服器具有高效運營業務所需的功能。

    另一個關鍵因素是組織的規模。 如果您的小型企業只有幾個使用者,那麼您可能只需要一台小型信件伺服器。

    但是,如果您有大量使用者,那麼您將需要更強大的伺服器。

    您還應該考慮伺服器的成本以及它是否適合您的預算。 它們的價格從數百美元到數千美元不等。

    在做出最終決定之前,請務必測試多個不同的伺服器,以找到最適合您的伺服器。

    這將有助於確保您獲得最好的服務並對您的選取感到滿意。

    最佳 Linux 信件伺服器

    1.Sendmail 

    Sendmail 是適用於 Linux 且也可在 Windows NT 中使用的最佳 Linux 信件伺服器之一。 據 Mailserver.com 稱,它是當今使用的第一大 MTA(信件傳輸代理)。 Sendmail 是一種通用電子信件路由工具,其第一個版本於 1983 年發佈。

    Sendmail 是一款以免費(也有專有版本)和開源而聞名的 MTA,它提供了一套通用的電子信件傳送到方法。

    當 Sendmail 伺服器收到電子信件時,它會嘗試立即將其傳遞給預期收件人。 如果收件人不在場,它會將訊息排隊以便稍後傳輸。 事實上,它不提供任何信箱設施。 因此,需要其他軟體,例如 Internet 訊息訪問協定和 POP3。 該 Linux 信件伺服器軟體的一些最佳功能內含:

    • 訊息傳遞的可靠性
    • 需要很少的網路頻寬
    • 定制電子信件轉信功能
    • 使用配置檔來控制信件配置
    1. Citadel  堡壘

    Citadel 無疑是​​ Linux 上最好的信件伺服器之一。 儘管最初發佈已有 33 年,但由於其卓越的效能和靈活的功能,它通過了時間的考驗。

    該信件伺服器是一個通用群件和合作套件,設計為在開源操作系統(例如 Linux 和 BSD UNIX 發行版)上運行(但支援大多數係統)。

    它使用伯克利資料庫來存儲所有資料。

    它是一款開源免費軟體,在 GNU 通用公共許可證(GPLv2 和 GPLv3)下運行。

    這款 Linux 信件伺服器以其簡單的控制台和高效的運行時間而聞名。 此外,它還有很多好的功能,其中一些功能如下:

    • 共享日曆
    • 即時通信
    • 方便的通訊錄
    • 調度程式
    • 檔案存儲
    • Jabber 和 SSL/TLS 加密
    • OpenSSL 加密
    • POP3、IMAP、SMTP 和 XMPP 等 Internet 協定的內建實現
    • 基於 Ajax 風格功能的 Web 使用者介面,用於類似應用程式的互動
    • OPeNDAP 和 Microsoft Active Directory 支援

    Modoboa 是最好的基於 SQL 的開源 Linux 信件伺服器之一,它通過一個使用者介面提供了一組有用的功能,不需要您單獨安裝每個功能。 它使用 TLS 協定 Let’s Encrypt 提供安全且私密的郵寄方法,Let’s Encrypt 是一個非營利性證書頒發機構。 它還可以讓您擺脫對電子信件提供商的依賴。

    Modoboa 廣泛部署了使用 DMARC 的 SPF 和 DKIM 協定。 這些協定是用於電子信件傳輸和安全的免費電子信件身份驗證技術,通過報告功能,幫助發件人和收件人增強和監控域名免受欺詐性電子信件的保護。 最酷的是,它容許您通過您可以受益的最重要的功能來配置功能齊全的信件伺服器,內含:

    • 網路信件
    • 日曆管理
    • 通訊錄管理
    • 建立可視化過濾規則來組織電子信件
    • 自動應答器
    • 支援多個域、信箱和別名
    • 幫助您監控流量的管理員工具
    1. Exim

    這是劍橋大學開發的信件傳輸代理。 Exim 根據 GNU(通用公共許可證)分發,旨在成為最靈活的信件程式之一,具有大量用於檢查傳入電子信件的功能。 Exim 是一款免費軟體,已被納入大多數類 UNIX 系統中。 它的第四個版本是 Debian Linux 系統上的預設 MTA。 該信件伺服器的一些最佳功能內含:

    • 外部驗證器
    • 預構建支援大量資料庫管理系統,例如 MYSQL、Oracle DB、SQLite、PostgreSQL 和 Redis
    • 使用 SSL/TLS 加密 SMTP 連線
    • 簡單的配置、定制和任務管理
    • 主日誌、恐慌日誌、拒絕日誌三種日誌機制
    • 本地掃瞄功能
    • 系統範圍的訊息過濾
    • 訊息處理
    • GNU GPL 許可證0

    獎金事實? 如果您是 Exim 的粉絲,您可以將其預裝在 Cloudzy 的 信件伺服器 VPS 上!

    1. Postfix

    Postfix 於 1998 年根據 IBM 公共許可證 1.0 首次發佈,現在可根據 Eclipse 公共許可證使用。 Postfix 也稱為 IBM Secure Mailer 和 VMailer。 它可以在 BSD、AIX、HP-UX、Linux、macOS、Solaris 和每個帶有 C 編譯器和 POSIX 開發環境的類 UNIX 操作系統上運行。 這個功能強大的開源信件伺服器可用於路由和傳遞電子信件。 它是 Ubuntu、RedHat /CentOS、NetBSD 和 macOS 的預設訊息傳輸代理。 下面列出了該 Linux 信件伺服器的一些最重要的功能:

    • 垃圾信件控制
    • 資料庫支援
    • 快速、安全
    • 管理彈性
    • 便捷的日誌管理
    • 防禦垃圾信件機器人
    • 預包裝內容過濾
    • 虛擬域支援
    • 可配置的狀態知會
    • 支援許多標準資料庫,內含 MYSQL、SQLite、PostgreSQL、LDAP、Memcached、CDB 和 Berkeley Database

    該信件伺服器由許多在後台運行的程式和一些與使用者程式互動的程式組成。 您可以將整個系統想像成一個路由器,因為它會像路由器一樣檢視 IP 封包並確定目的地和資源 IP 位址。 然後,它選取正確的介面將信件路由到目的地。 與 Exim 一樣,您可以從 Cloudzy 將 Postfix 預安裝在您的 信件伺服器 VPS 上!

    信件伺服器優化的 VPS

    針對信件伺服器優化的 VPS 無需花費大量資金來託管信件伺服器。以驚人的價格在任何您想要的地方獲得功能強大的 Cloudzy VPS,針對託管信件伺服器進行了優化!

    Axigen 是適用於 Linux、Microsoft Windows 和 Docker 的最佳信件伺服器之一,支援 POP3、SMTP、IMAP 和 Webmail。 它配備了完全免費的群件和合作功能(如日曆、筆記、任務和 Outlook 連線器)。 該信件伺服器的開發始於 2003 年,基於創新的專有技術。 它支援從小型企業到大型服務提供商的所有要求嚴格的使用者。 該信件伺服器的一些良好功能內含:

    • 整合信件清單伺服器
    • 全自動遷移工具
    • 防病毒和反垃圾信件整合選項
    • 惡意軟體和垃圾信件防護機制
    • 方便的通訊錄
    • 為管理員提供無與倫比的可管理性
    • 各種搬移功能,內含適合搬移裝置的網路信件和 Exchange Active Sync 支援
    • 可以託管在資料中心、裸機、私有或公共雲伺服器和 VPS上
    • 多種可定制的廣告和品牌選項
    • 整合網路管理和網路信件用戶端
    • 60 天全功能試用
    • 高度可配置的平台

    7.Qmail 

    Qmail 是最好的 Linux 信件伺服器之一。 它是最廣泛使用的信件伺服器之一。 它是 Sendmail 的絕佳替代品。 它為使用者提供了各種好處,其中安全性是最大的好處; SMTP 協定通過佇列管理器或 SMTP 傳送到方提供不同的憑據來驗證此聲明。 此外,簡單易用的配置使其成為流行的最好的 Linux 信件伺服器之一。 下面列出了它的一些顯著功能:

    • QMT 支援
    • 支援Linux、Solaris、Mac OSX、BSD等不同平台
    • 提供 EZMLM 信件清單管理器、VERP 和自動主機配置
    • 擁有基於模組化的系統(它容許您用替代模組置換系統的任何單個部分)
    • 管理自訂信件清單並支援自動防止信件迴圈
    • 使用者控制的通配符信箱

    hMailServer 是另一個免費、開源的 Linux 信件伺服器,在各個行業中都很流行。 它配備了內建的反垃圾信件技術,內含 SPF 和 SURBL。 支援IMAPP、SMTP、POP3等主要協定。 它還具有簡單的安裝和配置,並具有支援身份驗證的高安全性功能。 hMailServer的重要功能內含:

    • SSL加密
    • 網站管理
    • 使用內建備份
    • 掃瞄所有傳入和傳出的電子信件
    • 多域支援
    • 為特定域提供自訂 SMTP 路由

    Cyrus IMAP 伺服器是一個功能強大的 Linux 信件伺服器,可幫助您通過 IMAP 協定訪問您的私人電子信件。 它還涵蓋聯繫人和日曆服務。 將多個服務附加到信件伺服器可以提高您的業務績效。 使用者可以通過IMAP、IMAPS、POP3、POP3S訪問信件伺服器。 您可以從私人信箱資料庫中受益,該資料庫可以有效地優化伺服器,並具有可擴展性和管理性。 下面列出了 Cyrus IMAP 伺服器的一些功能:

    • JMAP 支援
    • 支援防病毒和反垃圾信件工具包
    • 通過 SPF、DKIM、DMARC 處理送達率
    • 使用信件過濾
    • 通過 Cyrus SASL 的完整身份驗證選項
    • 部署一致的軟體更新
    • 支援信箱訪問控制清單

    Mail-in-a-Box 是一個易於使用的 Linux 信件伺服器,使用最新的安全解決專案。 它為您提供有用的服務,例如自動 DNS 配置、垃圾信件過濾、灰名單、Amazon S3 備份、靜態網站託管和輕鬆的 SSL 證書安裝。 該工具有助於為多個使用者和 DNS 提供託管信件,並為搬移和桌面信件軟體提供網路信件和 IMAP/SMTP 伺服器。 信箱信件的功能內含:

    • 使用基於 Web 的控制台進行電子信件配置和設定
    • 聯繫人和日曆同步
    • Let’s crypt 提供的免費 TLS (SSL) 證書
    • 實施現代信件協定(SPF、DKIM 和 DMARC)和最新的安全實踐,內含機會 TLS、強密碼和 HST

    信件伺服器優化的 VPS

    針對信件伺服器優化的 VPS 無需花費大量資金來託管信件伺服器。以驚人的價格在任何您想要的地方獲得功能強大的 Cloudzy VPS,針對託管信件伺服器進行了優化!

    SquirrelMail 根據 GNU 通用公共許可證獲得許可,是最流行的 Linux 信件伺服器之一。 這個免費伺服器是用 PHP 編寫的,支援 IMAP 和 SMTP 協定。

    它易於設定和使用,並且其頁面以 HTML 4.0 呈現。 它可以處理大量信件,而且非常可靠。 SquirrelMail 還支援垃圾信件過濾和 SSL 加密等安全功能。 它還可以與大多數主要的網路託管提供商一起使用,並與 WordPress 等其他應用程式很好地整合。 SquirrelMail 的其他功能內含:

    • 支援純文字電子信件
    • 支援閱讀和傳送到 HTML 電子信件
    • 有拼字檢查器
    • 提供通訊錄來存儲電子信件位址
    • 能夠搜尋和標示電子信件
    • 擁有 IMAP 協定的代理伺服器
    • 使用信件過濾

    Zimbra 電子信件伺服器是一款功能強大的開源 Linux 信件伺服器,具有多種功能。 它易於使用、可擴展且安全。 此外,它還支援許多不同的裝置和操作系統。 這使其成為各種規模企業的絕佳選取。 Zimbra 還擁有一個龐大的使用者社區,他們總是願意提供幫助。

    如果您正在尋找能夠滿足您需求的電子信件伺服器,Zimbra 是一個不錯的選取。 它已被世界各地數百萬人使用,並以其可靠性和安全性而聞名。

    它為使用者提供了很多功能,例如:

    • 群組日曆和文件共享
    • 搬移網路用戶端應用程式
    • 適合在 VPS上託管
    • 可定制
    • 備份功能
    • 電子信件管理
    • 即時通信功能

    Horde 項目是一個網路信件和合作套件,提供電子信件伺服器、任務和註釋功能、聯繫人管理等。 該軟體是用 PHP 編寫的,並根據 GNU 通用公共許可證獲得許可。

    該 Linux 信件伺服器易於使用和導航,並且可以輕鬆擴展或拉遠以滿足您的需求。 它旨在與任何規模的組織合作,其團隊隨時為您提供幫助,解決您可能遇到的任何疑問或問題。 以下是它的一些其他功能:

    • 共享日曆、聯繫人、提醒、IMAP 檔案和任務
    • 支援 IMAP、POP3、3 窗格和 3 列佈局以及 HTML 訊息
    • 提供訊息過濾
    • 支援新聞提要
    • 支援搬移電子信件訪問
    • 先進的生產力工具
    • 拼字檢查器
    • 電子信件過濾
    • 執行緒式對話檢視

    Apache James 是一個流行的開源 Linux 信件伺服器。 它易於設定和配置,對於那些需要可以處理大量訊息的電子信件伺服器的人來說是一個不錯的選取。 它也非常適合需要遵守嚴格電子信件法規的企業。 Cloudzy 可擴展信件伺服器 VPS 。 為經常收到高電子信件流量的使用者提供了預裝 Apache James 的

    Apache James 可以用作獨立伺服器或更大基礎設施的一部分。 它支援 SMTP 和 IMAP 協定,並且可以與各種不同的信件用戶端一起使用。 Apache James 還具有廣泛的功能,內含:

    • 支援 SMTP、LMTP、JMAP、POP3、IMAP 和 ManageSieve
    • 電子信件管理
    • 存儲訊息資料
    • 過濾垃圾信件

    免費 SMTP 伺服器 Linux

    SMTP 伺服器可用於多種用途,其中最常見的是傳送到和接收電子信件。

    小型企業和個人使用者一直在尋找免費的 SMTP 伺服器。 Internet 上有許多適用於 Windows 和 Linux 的不同 SMTP 伺服器。 其中一些是免費的,而另一些則收費。 最好的 SMTP 伺服器是可靠、快速且易於使用的伺服器。

    Linux下最好的SMTP伺服器無疑是Sendmail。 Sendmail 非常強大,具有許多其他 SMTP 伺服器應用程式所缺乏的功能。 它是開源的、功能豐富且易於配置。 另外,它是免費的!

    開源信件伺服器 Linux

    隨著企業和個人尋找降低成本和提高效率的方法,開源信件伺服器變得越來越受歡迎。 但什麼是開源信件伺服器? 為什麼它們變得如此受歡迎?

    開源信件伺服器是一種使用向公眾免費提供的軟體的伺服器。 這意味著任何人都可以修改和改進用於建立軟體的代碼。

    開源信件伺服器 Linux 是昂貴的商業選項的絕佳替代品。 它可以根據您的具體需求進行配置,而且是免費的! 有許多不同的開源信件伺服器可用於 Linux,因此請進行研究以找到最適合您的一個。

    請務必評估對您來說重要的功能,例如垃圾信件過濾、病毒防護和使用者支援。 選取伺服器後,請準備好花一些時間對其進行配置以滿足您的需求。

    開源 Linux 信件伺服器變得如此流行有以下幾個原因:

    • 它們通常比專有同類產品便宜。
    • 它們通常可以免費下載和使用,而專有軟體可能很昂貴。
    • 它們往往比專有軟體更可靠、更安全,因為它已經由許多人長時間的測試。

    總結 — 選取最佳的 Linux 信件伺服器

    選取任何一款最好的 Linux 信件伺服器取決於您業務的具體需求,但除了選取最好的 Linux 信件伺服器之外,您還應該選取一個好的 Linux VPS 託管提供商。 當您的伺服器宕機或資源有限時,即使是最好的信件伺服器也無法標準運行。 一個體面但價格實惠的 VPS 可能是開始甚至擴展到中型線上業務的最佳模式。

    在 Cloudzy,我們的 信件伺服器 VPS 服務為您提供強大的基礎設施和超快的連線,以實惠的價格為您提供安全可靠的託管體驗。 此外,我們還提供採用 NVMe 協定的下一代 SSD 存儲和 DDR4 RAM 裝置,以確保高效能。 我們為任何規模的企業提供服務。 我們 提供信件伺服器 VPS,具有廣泛的對等互連和最小的延遲。 在全球超過 15 個地點

    FAQ

     Linux 中的信件伺服器是什麼?

    Linux信件伺服器是在Linux上運行的軟體,用於在伺服器和用戶端軟體之間傳輸電子信件。 Linux 信件伺服器軟體有很多,它們具有不同的功能和優點。

    2023 年哪個 Linux 信件伺服器是最好的?

    當然,答案會根據您計劃用它做什麼而變化。 Citadel 和 Modoboa 足夠全面,可以滿足大多數需求,但您應該自己檢視一下清單。

    Microsoft Outlook 是信件伺服器嗎?

    不,這不對。 Microsoft Outlook 是一種信件用戶端軟體,用於與信件伺服器進行通信。 一詞時所想到的 這是一個常見的誤解,因為這是大多數使用者在聽到“信件伺服器”

    linux 啟動自動執行腳本

    在 Linux 中,可以通過將腳本新增到啟動腳本中實現在系統啟動時自動執行腳本。

    具體步驟如下:

    1. 編寫需要在啟動時執行的腳本檔案,例如 “myscript.sh”。
    2. 將腳本檔案複製到 /etc/init.d 目錄下,例如:
      
      
    • sudo cp myscript.sh /etc/init.d/
      
    • 授予腳本檔案執行權限,例如:
      
      
    • sudo chmod +x /etc/init.d/myscript.sh
      
    • 使用 update-rc.d 指令將腳本新增到啟動腳本中,例如:
      
      
    1. sudo update-rc.d myscript.sh defaults
      

      此指令將會將腳本新增到所有運行層級中。

    2. 重新啟動系統,腳本將會在啟動時自動執行。

    如果您需要從啟動腳本中刪除腳本,可以使用以下指令:

    
    
    sudo update-rc.d -f myscript.sh remove
    

    希望這個回答可以幫助您實現在 Linux 啟動時自動執行腳本的需求。

    Debian/Ubuntu 新增開機自動執行程式

    在 Debian/Ubuntu 系統上,有一個程式我們想要讓他在開機後自動執行,該怎麼做?

    首先需要替要執行的程式撰寫一個啟動停止的 script 放在 /etc/init.d/ 目錄下,該 script 必須要可以接受參數 “start”、”stop” 等,來對應啟動或是停止。可以參考 /etc/init.d/skeleton 來做修改:

    /etc/init.d/skeleton
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides:          skeleton
    # Required-Start:    $remote_fs $syslog
    # Required-Stop:     $remote_fs $syslog
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: Example initscript
    # Description:       This file should be used to construct scripts to be
    #                    placed in /etc/init.d.
    ### END INIT INFO
    # Author: Foo Bar <foobar@baz.org>
    #
    # Please remove the "Author" lines above and replace them
    # with your own name if you copy and modify this script.
    # Do NOT "set -e"
    # PATH should only include /usr/* if it runs after the mountnfs.sh script
    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    DESC="Description of the service"
    NAME=daemonexecutablename
    DAEMON=/usr/sbin/$NAME
    DAEMON_ARGS="--options args"
    PIDFILE=/var/run/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    # Exit if the package is not installed
    [ -x "$DAEMON" ] || exit 0
    # Read configuration variable file if it is present
    [ -r /etc/default/$NAME ] && . /etc/default/$NAME
    # Load the VERBOSE setting and other rcS variables
    . /lib/init/vars.sh
    # Define LSB log_* functions.
    # Depend on lsb-base (>= 3.2-14) to ensure that this file is present
    # and status_of_proc is working.
    . /lib/lsb/init-functions
    #
    # Function that starts the daemon/service
    #
    do_start()
    {
        # Return
        #   0 if daemon has been started
        #   1 if daemon was already running
        #   2 if daemon could not be started
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
            || return 1
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
            $DAEMON_ARGS \
            || return 2
        # Add code here, if necessary, that waits for the process to be ready
        # to handle requests from services started subsequently which depend
        # on this one.  As a last resort, sleep for some time.
    }
    #
    # Function that stops the daemon/service
    #
    do_stop()
    {
        # Return
        #   0 if daemon has been stopped
        #   1 if daemon was already stopped
        #   2 if daemon could not be stopped
        #   other if a failure occurred
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
        RETVAL="$?"
        [ "$RETVAL" = 2 ] && return 2
        # Wait for children to finish too if this is a daemon that forks
        # and if the daemon is only ever run from this initscript.
        # If the above conditions are not satisfied then add some other code
        # that waits for the process to drop all resources that could be
        # needed by services started subsequently.  A last resort is to
        # sleep for some time.
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
        [ "$?" = 2 ] && return 2
        # Many daemons don't delete their pidfiles when they exit.
        rm -f $PIDFILE
        return "$RETVAL"
    }
    #
    # Function that sends a SIGHUP to the daemon/service
    #
    do_reload() {
        #
        # If the daemon can reload its configuration without
        # restarting (for example, when it is sent a SIGHUP),
        # then implement that here.
        #
        start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
        return 0
    }
    case "$1" in
      start)
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        do_start
        case "$?" in
            0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
            2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
      stop)
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        do_stop
        case "$?" in
            0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
            2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        esac
        ;;
      status)
        status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
        ;;
      #reload|force-reload)
        #
        # If do_reload() is not implemented then leave this commented out
        # and leave 'force-reload' as an alias for 'restart'.
        #
        #log_daemon_msg "Reloading $DESC" "$NAME"
        #do_reload
        #log_end_msg $?
        #;;
      restart|force-reload)
        #
        # If the "reload" option is implemented then remove the
        # 'force-reload' alias
        #
        log_daemon_msg "Restarting $DESC" "$NAME"
        do_stop
        case "$?" in
          0|1)
            do_start
            case "$?" in
                0) log_end_msg 0 ;;
                1) log_end_msg 1 ;; # Old process is still running
                *) log_end_msg 1 ;; # Failed to start
            esac
            ;;
          *)
            # Failed to stop
            log_end_msg 1
            ;;
        esac
        ;;
      *)
        #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
        echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
        exit 3
        ;;
    esac
    :

     

    或是如我們在嵌入式系統撰寫的簡易 script:

    /etc/init.d/blah
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #! /bin/sh
    # /etc/init.d/blah
    #
    # Some things that run always
    touch /var/lock/blah
    # Carry out specific functions when asked to by the system
    case "$1" in
      start)
        echo "Starting script blah "
        echo "Could do more here"
        ;;
      stop)
        echo "Stopping script blah"
        echo "Could do more here"
        ;;
      *)
        echo "Usage: /etc/init.d/blah {start|stop}"
        exit 1
        ;;
    esac
    exit 0

    修改其權限為可執行

    $ chmod 755 /etc/init.d/blah

    使用 update-rc.d 更新開機 script

    $ update-rc.d blah defaults

    default 的意思是使用預設值,亦即在 runlevel 2 3 4 5 啟動(start), runlevel 0 1 6 停止 (stop)。

    若不想要使用預設值,也可以指定 runlevel 與執行的順序:

    update-rc.d blah start 20 2 3 4 . start 30 5 . stop 80 0 1 6 .

    上述指令的意思為在 runlevel 2 3 4 執行啟動順序為 20, runlevel 5 執行啟動順序為 30, runlevel 0 1 6 執行停止順序為 80Debian runlevel 定義:

    0:關機 (Halt)
    1:單一使用者模式 (single user mode)
    2-5: 多使用者模式 (multi user mode)
    6: 系統重啟 (reboot)

    最後,若是要將其取消開機執行則使用以下命令

    $ update-rc.d -f blah remove

     

    linux 啟動自動執行腳本

    在 Linux 中,可以通過將腳本新增到啟動腳本中實現在系統啟動時自動執行腳本。

    具體步驟如下:

    1. 編寫需要在啟動時執行的腳本檔案,例如 “myscript.sh”。
    2. 將腳本檔案複製到 /etc/init.d 目錄下,例如:
      
      
    • sudo cp myscript.sh /etc/init.d/
      
    • 授予腳本檔案執行權限,例如:
      
      
    • sudo chmod +x /etc/init.d/myscript.sh
      
    • 使用 update-rc.d 指令將腳本新增到啟動腳本中,例如:
      
      
    1. sudo update-rc.d myscript.sh defaults
      

      此指令將會將腳本新增到所有運行層級中。

    2. 重新啟動系統,腳本將會在啟動時自動執行。

    如果您需要從啟動腳本中刪除腳本,可以使用以下指令:

    
    
    sudo update-rc.d -f myscript.sh remove
    

    希望這個回答可以幫助您實現在 Linux 啟動時自動執行腳本的需求。

    效能優化的核心是找出系統的瓶頸點,問題找到了,優化的工作也就完成了大半; 這裡介紹的效能優化主要從兩個層面來介紹:系統層面和程式層面;

    3.1. 分析系統瓶頸

    系統響應變慢,首先得定位大致的問題出在哪裡,是IO瓶頸、CPU瓶頸、記憶體瓶頸還是程式導致的系統問題;

    使用top工具能夠比較全面的檢視我們關注的點:

    $top
        top - 09:14:56 up 264 days, 20:56,  1 user,  load average: 0.02, 0.04, 0.00
        Tasks:  87 total,   1 running,  86 sleeping,   0 stopped,   0 zombie
        Cpu(s):  0.0%us,  0.2%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.2%st
        Mem:    377672k total,   322332k used,    55340k free,    32592k buffers
        Swap:   397308k total,    67192k used,   330116k free,    71900k cached
        PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
        1 root      20   0  2856  656  388 S  0.0  0.2   0:49.40 init
        2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd
        3 root      20   0     0    0    0 S  0.0  0.0   7:15.20 ksoftirqd/0
        4 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/
    
    進入互動模式後:
    • 輸入M,程式清單按記憶體使用大小降冪排序,便於我們觀察最大記憶體使用者使用有問題(檢驗記憶體洩漏問題);
    • 輸入P,程式清單按CPU使用大小降冪排序,便於我們觀察最耗CPU資源的使用者是否有問題;
    top第三行顯示現用的系統的,其中有兩個值很關鍵:
    • %id:閒置CPU時間百分比,如果這個值過低,顯示系統CPU存在瓶頸;
    • %wa:等待I/O的CPU時間百分比,如果這個值過高,顯示IO存在瓶頸;

    3.2. 分析記憶體瓶頸

    檢視記憶體是否存在瓶頸,使用top指令看比較麻煩,而free指令更為直觀:

    [/home/weber#]free
                 total       used       free     shared    buffers     cached
    Mem:        501820     452028      49792      37064       5056     136732
    -/+ buffers/cache:     310240     191580
    Swap:            0          0          0
    [/home/weber#]top
    top - 17:52:17 up 42 days,  7:10,  1 user,  load average: 0.02, 0.02, 0.05
    Tasks:  80 total,   1 running,  79 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem:    501820 total,   452548 used,    49272 free,     5144 buffers
    KiB Swap:        0 total,        0 used,        0 free.   136988 cached Mem
    

    top工具顯示了free工具的第一行所有訊息,但真實可用的記憶體,還需要自己計算才知道; 系統實際可用的記憶體為free工具輸出第二行的free+buffer+cached;也就是第三行的free值191580;關於free指令各個值的詳情解讀,請參考這篇文章 free 查詢可用記憶體 ;

    如果是因為缺少記憶體,系統響應變慢很明顯,因為這使得系統不停的做換入換出的工作;

    進一步的監視記憶體使用情況,可使用vmstat工具,實時動態監視操作系統的記憶體和虛擬記憶體的動態變化。 參考: vmstat 監視記憶體使用情況 ;

    3.3. 分析IO瓶頸

    如果IO存在效能瓶頸,top工具中的%wa會偏高

    進一步分析使用iostat工具:

    /root$iostat -d -x -k 1 1
    Linux 2.6.32-279.el6.x86_64 (colin)   07/16/2014      _x86_64_        (4 CPU)
    
    Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
    sda               0.02     7.25    0.04    1.90     0.74    35.47    37.15     0.04   19.13   5.58   1.09
    dm-0              0.00     0.00    0.04    3.05     0.28    12.18     8.07     0.65  209.01   1.11   0.34
    dm-1              0.00     0.00    0.02    5.82     0.46    23.26     8.13     0.43   74.33   1.30   0.76
    dm-2              0.00     0.00    0.00    0.01     0.00     0.02     8.00     0.00    5.41   3.28   0.00
    
    • 如果%iowait的值過高,表示硬碟存在I/O瓶頸。
    • 如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁碟可能存在瓶頸。
    • 如果 svctm 比較接近 await,說明 I/O 幾乎沒有等待時間;
    • 如果 await 遠大於 svctm,說明I/O 佇列太長,io響應太慢,則需要進行必要優化。
    • 如果avgqu-sz比較大,也表示有大量io在等待。

     

    4. 分析程式呼叫

    通過top等工具發現系統效能問題是由某個程式導致的之後,接下來我們就需要分析這個程式;繼續 查詢問題在哪;

    這裡我們有兩個好用的工具: pstack和pstrace

    pstack用來追蹤程式棧,這個指令在排查程式問題時非常有用,比如我們發現一個服務一直處於work狀態(如假死狀態,好似死迴圈),使用這個指令就能輕鬆定位問題所在;可以在一段時間內,多執行幾次pstack,若發現代碼棧總是停在同一個位置,那個位置就需要重點關注,很可能就是出問題的地方;

    示例:檢視bash程式程式棧:

    /opt/app/tdev1$ps -fe| grep bash
    tdev1   7013  7012  0 19:42 pts/1    00:00:00 -bash
    tdev1  11402 11401  0 20:31 pts/2    00:00:00 -bash
    tdev1  11474 11402  0 20:32 pts/2    00:00:00 grep bash
    /opt/app/tdev1$pstack 7013
    #0  0x00000039958c5620 in __read_nocancel () from /lib64/libc.so.6
    #1  0x000000000047dafe in rl_getc ()
    #2  0x000000000047def6 in rl_read_key ()
    #3  0x000000000046d0f5 in readline_internal_char ()
    #4  0x000000000046d4e5 in readline ()
    #5  0x00000000004213cf in ?? ()
    #6  0x000000000041d685 in ?? ()
    #7  0x000000000041e89e in ?? ()
    #8  0x00000000004218dc in yyparse ()
    #9  0x000000000041b507 in parse_command ()
    #10 0x000000000041b5c6 in read_command ()
    #11 0x000000000041b74e in reader_loop ()
    #12 0x000000000041b2aa in main ()
    

    而strace用來追蹤程式中的系統呼叫;這個工具能夠動態的追蹤程式執行時的系統呼叫和所接收的信號。是一個非常有效的檢驗、指導和除錯工具。系統管理員可以通過該指令容易地解決程式問題。

     

    5. 優化程式代碼

    優化自己開發的程式,建議採用以下準則:

    1. 二八法則:在任何一組東西中,最重要的只佔其中一小部分,約20%,其餘80%的儘管是多數,卻是次要的;在優化實踐中,我們將精力集中在優化那20%最耗時的代碼上,整體效能將有顯著的提升;這個很好理解。函數A雖然代碼量大,但在一次標準執行流程中,只呼叫了一次。而另一個函數B代碼量比A小很多,但被呼叫了1000次。顯然,我們更應關注B的優化。
    2. 編完代碼,再優化;編碼的時候總是考慮最佳效能未必總是好的;在強調最佳效能的編碼模式的同時,可能就損失了代碼的可讀性和開發效率;

    gprof使用步驟

    1. 用gcc、g++、xlC編譯程式時,使用-pg參數,如:g++ -pg -o test.exe test.cpp編譯器會自動在目的代碼中插入用於效能測試的代碼片斷,這些代碼在程式運行時攫取並記錄函數的呼叫關係和呼叫次數,並記錄函數自身執行時間和被呼叫函數的執行時間。
    2. 執行編譯後的可執行程式,如:./test.exe。該步驟運行程式的時間會稍慢於標準編譯的可執行程式的運行時間。程式運行結束後,會在程式所在路徑下生成一個預設檔名為gmon.out的檔案,這個檔案就是記錄程式運行的效能、呼叫關係、呼叫次數等訊息的資料檔案。
    3. 使用gprof指令來分析記錄程式運行訊息的gmon.out檔案,如:gprof test.exe gmon.out則可以在顯示器上看到函數呼叫關聯的統計、分析訊息。上述訊息也可以採用gprof test.exe gmon.out> gprofresult.txt重導至文字檔案以便於後續分析。

    關於gprof的使用案例。

    6. 其它工具

    除錯記憶體洩漏的工具valgrind,感興趣的朋友可以google了解。

    OProfile: Linux 平台上的一個功能強大的效能分析工具,使用參考。

    除了上面介紹的工具,還有一些比較全面的效能分析工具,比如sar(Linux系統上預設不安裝,需要手動安裝下); 將sar的常駐監控工具開啟後,能夠收集比較全面的效能分析資料。

    程式除錯.調試

    gdb 程式互動除錯

    GDB是一個由GNU開源組織發佈的、UNIX/LINUX操作系統下的、基於指令行的、功能強大的程式除錯工具。

    對於一名Linux下工作的c++程式員,gdb是必不可少的工具;

    GDB中的指令固然很多,但我們只需掌握其中十個左右的指令,就大致可以完成日常的基本的程式除錯工作。

    以下從一個完整的除錯過程簡單說明最基本的幾個指令;

    $gdb programmer     # 啟動gdb
    >break main         # 設定斷點
    >run                # 運行除錯程式
    >next               # 單步除錯
    >print var1         # 在除錯過程中,我們需要檢視現用的某個變量值的時候,使用print 指令列印該值
    >list               # 顯示現用的除錯處的原始碼
    >info b             # 顯示現用的斷點設定情況
    

    當你完成了第一個程式除錯之後,你當然會需要更多的指令:關於gdb常用指令及各種除錯方法詳見 gdb 除錯利器 ;

    同時,你需要更高效的除錯:常用的除錯指令都會有單字元的縮寫,使用縮寫更方便;同時,直接敲換行表示重複執行上一步指令;這在單步除錯時非常有用;

    pstack 追蹤棧空間

    pstack是一個腳本工具,可顯示每個程式的棧追蹤。pstack 指令必須由相應程式的屬主或 root 運行。其核心實現就是使用了gdb以及thread apply all bt指令;

    語法:

    $pstrack <program-pid>
    

    示例:

    $ pstack 4551
    Thread 7 (Thread 1084229984 (LWP 4552)):
    #0  0x000000302afc63dc in epoll_wait () from /lib64/tls/libc.so.6
    #1  0x00000000006f0730 in ub::EPollEx::poll ()
    #2  0x00000000006f172a in ub::NetReactor::callback ()
    #3  0x00000000006fbbbb in ub::UBTask::CALLBACK ()
    #4  0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0
    #5  0x000000302afc6003 in clone () from /lib64/tls/libc.so.6
    #6  0x0000000000000000 in ?? ()
    

    strace 分析系統呼叫

    strace常用來追蹤程式執行時的系統呼叫和所接收的信號。在Linux世界,程式不能直接訪問硬體裝置,當程式需要訪問硬體裝置(比如讀取磁碟檔案,接收網路資料等等)時,必須由使用者態模式切換至內核態模式,通過系統呼叫訪問硬體裝置。strace可以追蹤到一個程式產生的系統呼叫,內含參數,返回值,執行消耗的時間。

    完整程式:

    strace -o output.txt -T -tt -e trace=all -p 28979
    

    追蹤28979程式的所有系統呼叫(-e trace=all),並統計系統呼叫的花費時間,以及開始時間(以可視化的時分秒格式顯示),最後將記錄結果存在output.txt檔案裡面。

    檢視程式正在做什麼(實時輸出程式執行系統呼叫的情況):

    $strace -p <process-pid>
    

    關於strace的詳細介紹,詳見 strace 追蹤程式中的系統呼叫

    2. 目的檔案分析

    nm

    nm用來列出目的檔案的符號清單。

    $nm myProgrammer
    08049f28 d _DYNAMIC
    08049ff4 d _GLOBAL_OFFSET_TABLE_
    080484dc R _IO_stdin_used
             w _Jv_RegisterClasses
    08049f18 d __CTOR_END__
    08049f14 d __CTOR_LIST__
    08049f20 D __DTOR_END__
    08049f1c d __DTOR_LIST__
    080485e0 r __FRAME_END__
    08049f24 d __JCR_END__
    08049f24 d __JCR_LIST__
    0804a014 A __bss_start
    0804a00c D __data_start
    08048490 t __do_global_ctors_aux
    08048360 t __do_global_dtors_aux
    0804a010 D __dso_handle
             w __gmon_start__
    08048482 T __i686.get_pc_thunk.bx
    08049f14 d __init_array_end
    08049f14 d __init_array_start
    08048480 T __libc_csu_fini
    08048410 T __libc_csu_init
             U __libc_start_main@@GLIBC_2.0
    0804a014 A _edata
    0804a01c A _end
    080484bc T _fini
    080484d8 R _fp_hw
    080482b4 T _init
    08048330 T _start
    0804a014 b completed.6086
    0804a00c W data_start
    0804a018 b dtor_idx.6088
    080483c0 t frame_dummy
    080483e4 T main
             U printf@@GLIBC_2.0
    

    這些包括可執行代碼的段稱為正文段。同樣地,資料段包括了不可執行的訊息或資料。另一種類型的段,稱為 BSS 段,它包括以符號資料開頭的塊。對於 nm 指令列出的每個符號,它們的值使用十六進位來表示(預設行為),並且在該符號前面加上了一個表示符號類型的編碼字元。

    常見的各種編碼內含:

    • A 表示絕對 (absolute),這意味著不能將該值變更為其他的連線;
    • B 表示 BSS 段中的符號;
    • C 表示引用未起始化的資料的一般符號。

    可以將目的檔案中所包括的不同的部分劃分為段。段可以包括可執行代碼、符號名稱、起始資料值和許多其他類型的資料。有關這些類型的資料的詳細訊息,可以閱讀 UNIX 中 nm 的 man 頁面,其中按照該指令輸出中的字元編碼分別對每種類型進行了描述。

    在目的檔案階段,即使是一個簡單的 Hello World 程式,其中也包括了大量的細節訊息。nm 程式可用於列舉符號及其類型和值,但是,要更仔細地研究目的檔案中這些命名段的內容,需要使用功能更強大的工具。

    其中兩種功能強大的工具是 objdump 和 readelf 程式。

    註解

    關於nm工具的參數說明及更多示例詳見 nm 目的檔案格式分析 ;

    objdump

    ogjdump工具用來顯示二進位檔案的訊息,就是以一種可閱讀的格式讓你更多地了解二進位檔案可能帶有的附加訊息。

    $objdump -d myprogrammer
    a.out:     file format elf32-i386
    
    
    Disassembly of section .init:
    
    080482b4 <_init>:
     80482b4:   53                      push   %ebx
     80482b5:   83 ec 08                sub    $0x8,%esp
     80482b8:   e8 00 00 00 00          call   80482bd <_init+0x9>
     80482bd:   5b                      pop    %ebx
     80482be:   81 c3 37 1d 00 00       add    $0x1d37,%ebx
     80482c4:   8b 83 fc ff ff ff       mov    -0x4(%ebx),%eax
     80482ca:   85 c0                   test   %eax,%eax
     80482cc:   74 05                   je     80482d3 <_init+0x1f>
     80482ce:   e8 3d 00 00 00          call   8048310 <__gmon_start__@plt>
     80482d3:   e8 e8 00 00 00          call   80483c0 <frame_dummy>
     80482d8:   e8 b3 01 00 00          call   8048490 <__do_global_ctors_aux>
     80482dd:   83 c4 08                add    $0x8,%esp
     80482e0:   5b                      pop    %ebx
     80482e1:   c3                      ret
    
    Disassembly of section .plt:
    ...
    

    每個可執行代碼段將在需要特定的事件時執行,這些事件內含庫的起始化和該程式本身主匯入點。

    對於那些著迷於底層寫程式細節的程式員來說,這是一個功能非常強大的工具,可用於研究編譯器和彙編器的輸出。細節訊息,比如這段代碼中所顯示的這些訊息,可以揭示有關本地處理器本身運行模式的很多內容。對該處理器製造商提供的技術文件進行深入的研究,您可以收集關於一些有價值的訊息,通過這些訊息可以深入地了解內定的運行機制,因為功能程式提供了清晰的輸出。

    註解

    關於objdump工具的參數說明及更多示例詳見 objdump 二進位檔案分析 ;

    readelf

    這個工具和objdump指令提供的功能類似,但是它顯示的訊息更為具體,並且它不依賴BFD庫(BFD庫是一個GNU項目,它的目的就是希望通過一種統一的介面來處理不同的目的檔案);

    $readelf -all a.out
    ELF Header:
      Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
      Class:                             ELF32
      Data:                              2's complement, little endian
      Version:                           1 (current)
      OS/ABI:                            UNIX - System V
      ABI Version:                       0
      Type:                              EXEC (Executable file)
      Machine:                           Intel 80386
      Version:                           0x1
      Entry point address:               0x8048330
      Start of program headers:          52 (bytes into file)
      Start of section headers:          4412 (bytes into file)
      Flags:                             0x0
      Size of this header:               52 (bytes)
      Size of program headers:           32 (bytes)
      Number of program headers:         9
      Size of section headers:           40 (bytes)
      Number of section headers:         30
      Section header string table index: 27
    
    Section Headers:
      [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
      [ 0]                   NULL            00000000 000000 000000 00      0   0  0
      [ 1] .interp           PROGBITS        08048154 000154 000013 00   A  0   0  1
      [ 2] .note.ABI-tag     NOTE            08048168 000168 000020 00   A  0   0  4
      [ 3] .note.gnu.build-i NOTE            08048188 000188 000024 00   A  0   0  4
      [ 4] .gnu.hash         GNU_HASH        080481ac 0001ac 000020 04   A  5   0  4
      [ 5] .dynsym           DYNSYM          080481cc 0001cc 000050 10   A  6   1  4
      [ 6] .dynstr           STRTAB          0804821c 00021c 00004c 00   A  0   0  1
      [ 7] .gnu.version      VERSYM          08048268 000268 00000a 02   A  5   0  2
      [ 8] .gnu.version_r    VERNEED         08048274 000274 000020 00   A  6   1  4
      [ 9] .rel.dyn          REL             08048294 000294 000008 08   A  5   0  4
      [10] .rel.plt          REL             0804829c 00029c 000018 08   A  5  12  4
      [11] .init             PROGBITS        080482b4 0002b4 00002e 00  AX  0   0  4
      [12] .plt              PROGBITS        080482f0 0002f0 000040 04  AX  0   0 16
      [13] .text             PROGBITS        08048330 000330 00018c 00  AX  0   0 16
      [14] .fini             PROGBITS        080484bc 0004bc 00001a 00  AX  0   0  4
      [15] .rodata           PROGBITS        080484d8 0004d8 000011 00   A  0   0  4
      [16] .eh_frame_hdr     PROGBITS        080484ec 0004ec 000034 00   A  0   0  4
      [17] .eh_frame         PROGBITS        08048520 000520 0000c4 00   A  0   0  4
      [18] .ctors            PROGBITS        08049f14 000f14 000008 00  WA  0   0  4
      [19] .dtors            PROGBITS        08049f1c 000f1c 000008 00  WA  0   0  4
      [20] .jcr              PROGBITS        08049f24 000f24 000004 00  WA  0   0  4
      [21] .dynamic          DYNAMIC         08049f28 000f28 0000c8 08  WA  6   0  4
      [22] .got              PROGBITS        08049ff0 000ff0 000004 04  WA  0   0  4
      [23] .got.plt          PROGBITS        08049ff4 000ff4 000018 04  WA  0   0  4
      [24] .data             PROGBITS        0804a00c 00100c 000008 00  WA  0   0  4
      [25] .bss              NOBITS          0804a014 001014 000008 00  WA  0   0  4
      [26] .comment          PROGBITS        00000000 001014 00002a 01  MS  0   0  1
      [27] .shstrtab         STRTAB          00000000 00103e 0000fc 00      0   0  1
      [28] .symtab           SYMTAB          00000000 0015ec 000410 10     29  45  4
      [29] .strtab           STRTAB          00000000 0019fc 0001f9 00      0   0  1
      ...
    

    ELF Header 為該檔案中所有段匯入顯示了詳細的摘要。在列舉出這些 Header 中的內容之前,您可以看到 Header 的具體數目。在研究一個較大的目的檔案時,該訊息可能非常有用。

    除了所有這些段之外,編譯器可以將除錯訊息放入到目的檔案中,並且還可以顯示這些訊息。輸入下面的指令,仔細分析編譯器的輸出(假設您扮演了除錯程式的角色):

    $readelf --debug-dump a.out | more
    

    除錯工具,如 GDB,可以讀取這些除錯訊息,並且當程式在除錯器中運行的同時,您可以使用該工具顯示更具描述性的標示,而不是對代碼進行反彙編時的原始位址值。

    註解

    關於readelf工具的參數說明及更多示例詳見 readelf elf檔案格式分析 ;

    size 檢視程式記憶體佔用

    size這個工具用來檢視程式運行時各個段的實際記憶體佔用:

    $size a.out
    text           data     bss     dec     hex filename
    1146            256       8    1410     582 a.out
    

    file 檔案類型查詢

    這個工具用於檢視檔案的類型;

    比如我們在64位機器上發現了一個32位的庫,連結不上,這就有問題了:

    $file a.out
    a.out: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
    

    也可以檢視Core檔案是由哪個程式生成:

    $file core.22355
    

    strings 查詢資料中的文字訊息

    一個檔案中包括二進位資料和文字資料,如果只需要檢視其文字訊息,使用這個指令就很方便;過濾掉非字元資料,將文字訊息輸出:

    $strings <objfile>
    

    fuser 顯示檔案使用者

    顯示所有正在使用著特殊的file, file system 或是 sockets的程式訊息;

    $fuser -m -u redis-server
    redis-server: 11552rce(weber) 22912rce(weber) 25501rce(weber)
    

    使用了-m和-u選項,用來搜尋所有正在使用redis-server的所有程式的PID以及該程式的OWNER;

    fuser通常被用在診斷系統的”resource busy”問題。如果你希望kill所有正在使用某一特殊的file, file system or sockets的程式的時候,你可以使用-k選項:

    $fuser –k /path/to/your/filename
    

    xxd 十六進位顯示資料

    以十六進位模式顯示檔案,只顯示文字訊息:

    $xxd a.out
    0000000: 7f45 4c46 0101 0100 0000 0000 0000 0000  .ELF............
    0000010: 0200 0300 0100 0000 3083 0408 3400 0000  ........0...4...
    0000020: 3c11 0000 0000 0000 3400 2000 0900 2800  <.......4. ...(.
    0000030: 1e00 1b00 0600 0000 3400 0000 3480 0408  ........4...4...
    0000040: 3480 0408 2001 0000 2001 0000 0500 0000  4... ... .......
    0000050: 0400 0000 0300 0000 5401 0000 5481 0408  ........T...T...
    ...
    

    od

    通常使用od指令檢視特殊格式的檔案內容。通過指定該指令的不同選項可以以十進位、八進位、十六進位和ASCII碼來顯示檔案。

    參數說明:

    -A 指定位址基數,內含:

    • d 十進位
    • o 八進位(系統預設值)
    • x 十六進位
    • n 不列印位移值

    -t 指定資料的顯示格式,主要的參數有:

    • c ASCII字元或反斜槓序列
    • d 有符號十進位數
    • f 浮點數
    • o 八進位(系統預設值為02)
    • u 無符號十進位數
    • x 十六進位數

    除了選項c以外的其他選項後面都可以跟一個十進位數n,指定每個顯示值所包括的位元組數。

    說明:od指令系統預設的顯示模式是八進位,這也是該指令的名稱由來(Octal Dump)。但這不是最有用的顯示模式,用ASCII碼和十六進位組合的模式能提供更有價值的訊息輸出。

    以十六進位和字元同時顯示:

    $od -Ax -tcx4 a.c
    000000   #   i   n   c   l   u   d   e       <   s   t   d   i   o   .
                  636e6923        6564756c        74733c20        2e6f6964
    000010   h   >  \n  \n   v   o   i   d       m   a   i   n   (   )  \n
                  0a0a3e68        64696f76        69616d20        0a29286e
    000020   {  \n  \t   i   n   t       i       =       5   ;  \n  \t   p
                  69090a7b        6920746e        35203d20        70090a3b
    000030   r   i   n   t   f   (   "   h   e   l   l   o   ,   %   d   "
                  746e6972        68222866        6f6c6c65        2264252c
    000040   ,   i   )   ;  \n   }  \n
                  3b29692c        000a7d0a
    000047
    

    以字元模式顯示:

    $od -c a.c
    0000000   #   i   n   c   l   u   d   e       <   s   t   d   i   o   .
    0000020   h   >  \n  \n   v   o   i   d       m   a   i   n   (   )  \n
    0000040   {  \n  \t   i   n   t       i       =       5   ;  \n  \t   p
    0000060   r   i   n   t   f   (   "   h   e   l   l   o   ,   %   d   "
    0000100   ,   i   )   ;  \n   }  \n
    0000107
    

    註:類似指令還有hexdump(十六進位輸出)

    一般原始碼提供的程式安裝需要通過配置、編譯、安裝三個步驟:

    1. 配置做的工作主要是檢查現用的環境是否滿足要安裝軟體的依賴關係,以及設定程式安裝所需要的起始化訊息,比如安裝路徑,需要安裝哪些元件;配置完成,會生成makefile檔案供第二步make使用。
    2. 編譯是對源檔案進行編譯連結生成可執行程式。
    3. 安裝做的工作就簡單多了,就是將生成的可執行檔案複製到配置時設定的起始路徑下。

    1. 配置

    查詢可用的配置選項:

    ./configure --help
    

    配置路徑:

    ./configure --prefix=/usr/local/snmp
    

    –prefix是配置使用的最常用選項,設定程式安裝的路徑;

    2. 編譯

    編譯使用make編譯:

    make -f myMakefile
    

    通過-f選項顯示指定需要編譯的makefile;如果待使用makefile檔案在現用的路徑,且檔名為以下幾個,則不用顯示指定:

    makefile Makefile

    makefile編寫的要點

    • 必須滿足第一條規則,滿足後停止
    • 除第一條規則,其他無順序

    makefile中的全局自變量

    • $@目的檔名
    • @^所有前提名,除副本
    • @+所有前提名,含副本
    • @<一個前提名
    • @?所有新於目的檔案的前提名
    • @*目的檔案的基名稱

    更多選取 CMake

    CMake是一個跨平台的安裝(編譯)工具,可以用簡單的語句來描述所有平台的安裝(編譯過程)。他能夠輸出各種各樣的makefile或是project檔案。使用CMake,能夠使程式員從複雜的編譯連線過程中解脫出來。它使用一個名為 CMakeLists.txt 的檔案來描述構建過程,可以生成標準的構建檔案,如 Unix/Linux 的 Makefile 或Windows Visual C++ 的 projects/workspaces 。

    編譯依賴的庫

    makefile編譯過程中所依賴的非標準庫和標頭檔路徑需要顯示指明:

    CPPFLAGS -I標示非標準標頭檔存放路徑
    LDFLAGS  -L標示非標準庫存放路徑
    

    如果CPPFLAGS和LDFLAGS已在使用者環境變量中設定並且匯出(使用export關鍵字),就不用再顯示指定;

    make -f myMakefile LDFLAGS='-L/var/xxx/lib -L/opt/mysql/lib'
        CPPFLAGS='-I/usr/local/libcom/include -I/usr/local/libpng/include'
    

    警示

    連結多庫時,多個庫之間如果有依賴,需要注意書寫的順序,右邊是左邊的前提;

    g++編譯

    g++ -o unixApp unixApp.o a.o b.o
    

    選項說明:

    • -o:指明生成的目的檔案
    • -g:加入除錯訊息
    • -E: 檢視中間檔案

    應用:查詢巨集展開的中間檔案:

    在g++的編譯選項中,加入 -E選項,然後去掉-o選項 ,重導至一個檔案中即可:

    g++ -g -E unixApp.cpp  -I/opt/app/source > midfile
    

    查詢應用程式需要連結的庫:

    $ldd myprogrammer
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000039a7e00000)
        libm.so.6 => /lib64/libm.so.6 (0x0000003996400000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000039a5600000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003995800000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003995400000)
    

    3. 安裝

    安裝做的工作就簡單多了,就是將生成的可執行檔案複製到配置時設定的起始路徑下:

    $make install
    

    其實 install 就是makefile中的一個規則,開啟makefile檔案後可以檢視程式安裝的所做的工作。

    1. 系統管理

    查詢系統版本

    檢視Linux系統版本:

    $uname -a
    $lsb_release -a
    

    檢視Unix系統版本:操作系統版本:

    $more /etc/release
    

    查詢硬體訊息

    檢視CPU使用情況:

    $sar -u 5 10
    

    查詢CPU訊息:

    $cat /proc/cpuinfo
    

    檢視CPU的核的個數:

    $cat /proc/cpuinfo | grep processor | wc -l
    

    檢視記憶體訊息:

    $cat /proc/meminfo
    

    顯示記憶體page大小(以KByte為單位):

    $pagesize
    

    顯示架構:

    $arch
    

    設定系統時間

    顯示現用的系統時間:

    $date
    

    設定系統日期及時間(格式為2014-09-15 17:05:00):

    $date -s 2014-09-15 17:05:00
    $date -s 2014-09-15
    $date -s 17:05:00
    

    設定時區:

    選取時區訊息。指令為:tzselect
    根據系統提示,選取相應的時區訊息。
    

    強制把系統時間寫入CMOS(這樣,重啟後時間也正確了):

    $clock -w
    

    警示

    設定系統時間需要root使用者權限.

    格式化輸出現用的日期時間:

    $date +%Y%m%d.%H%M%S
    >20150512.173821
    

    2. IPC資源管理

    IPC資源查詢

    檢視系統使用的IPC資源:

    $ipcs
    
    ------ Shared Memory Segments --------
    key        shmid      owner      perms      bytes      nattch     status
    
    ------ Semaphore Arrays --------
    key        semid      owner      perms      nsems
    0x00000000 229376     weber      600        1
    
    ------ Message Queues --------
    key        msqid      owner      perms      used-bytes   messages
    

    檢視系統使用的IPC共享記憶體資源:

    $ipcs -m
    

    檢視系統使用的IPC佇列資源:

    $ipcs -q
    

    檢視系統使用的IPC信號量資源:

    $ipcs -s
    

    應用示例:檢視IPC資源被誰佔用

    有個IPCKEY:51036 ,需要查詢其是否被佔用;

    1. 首先通過計算器將其轉為十六進位:

      51036 -> c75c

    2. 如果知道是被共享記憶體佔用:

      $ipcs -m | grep c75c
      0x0000c75c 40403197   tdea3    666        536870912  2
      
    3. 如果不確定,則直接搜尋:

      $ipcs | grep c75c
      0x0000c75c 40403197   tdea3    666        536870912  2
      0x0000c75c 5079070    tdea3    666        4
      

    檢驗和設定系統資源限制

    顯示現用的所有的系統資源limit 訊息:

    ulimit – a
    

    對生成的 core 檔案的大小不進行限制:

    ulimit – c unlimited
    

    Linux系統管理員的主要職責| Linux 系統管理員做什麼?

    Linux系統管理員的主要職責如下:

    1. 維護使用者帳戶
    2. 安全
    3. 管理磁碟空間和備份
    4. 根據需要配置新的Linux伺服器
    5. Linux 伺服器更新和修補
    6. 認證與授權管理
    7. Linux 伺服器故障排除和 QA 部署
    8. 在VMWARE中管理大量VMS
    9. 監控所有虛擬機及其運行狀況
    10. 監控主要重要服務
    11. 備份和恢復伺服器的所有重要資料
    12. 伺服器和操作系統程式監控
    13. 磁碟管理和監控

    管理員權限:

    1. 變更任何檔案的內容或屬性,例如其權限和所有權
    2. 他可以刪除任何檔案,即使它是寫保護的。
    3. 啟動或終止任何程式
    4. 在不知道現有密碼的情況下變更任何使用者的密碼
    5. 設定系統時鐘和日期
    6. 限制容許使用者使用 ulimlit 建立的檔案的最大大小
    7. 控制使用者對 at 和 cron 等調度服務的訪問
    8. 控制使用者對許多網路服務的訪問,例如 Telnet、FTP 等

    1. 使用者

    加入使用者

    $useradd -m username
    

    該指令為使用者建立相應的帳號和使用者目錄/home/username;

    使用者加入之後,設定密碼:

    密碼以互動模式建立:

    $passwd username
    

    刪除使用者

    $userdel -r username
    

    不帶選項使用 userdel,只會刪除使用者。使用者的家目錄將仍會在/home目錄下。要完全的刪除使用者訊息,使用-r選項;

    帳號切換 登入帳號為userA使用者狀態下,切換到userB使用者帳號工作:

    $su userB
    

    進入互動模型,輸入密碼授權進入;

    2. 使用者的組

    將使用者加入到組

    預設情況下,加入使用者操作也會相應的增加一個同名的組,使用者屬於同名組; 檢視現用的使用者所屬的組:

    $groups
    

    一個使用者可以屬於多個組,將使用者加入到組:

    $usermod -G groupNmame username
    

    變更使用者所屬的根組(將用加入到新的組,並從原有的組中除去):

    $usermod -g groupName username
    

    檢視系統所有組

    系統的所有使用者及所有組訊息分別記錄在兩個檔案中:/etc/passwd , /etc/group 預設情況下這兩個檔案對所有使用者可讀:

    檢視所有使用者及權限:

    $more /etc/passwd
    

    檢視所有的使用者組及權限:

    $more /etc/group
    

    3. 使用者權限

    使用ls -l可檢視檔案的屬性欄位,檔案屬性欄位總共有10個字母組成,第一個字母表示檔案類型,如果這個字母是一個減號”-”,則說明該檔案是一個普通檔案。字母”d”表示該檔案是一個目錄,字母”d”,是dirtectory(目錄)的縮寫。 後面的9個字母為該檔案的權限標識,3個為一組,分別表示檔案所屬使用者、使用者所在組、其它使用者的讀寫和執行權限; 例如:

    [/home/weber#]ls -l /etc/group
    -rwxrw-r-- colin king 725 2013-11-12 15:37 /home/colin/a
    

    表示這個檔案對檔案擁有者colin這個使用者可讀寫、可執行;對colin所在的組(king)可讀可寫;對其它使用者只可讀;

    變更讀寫權限

    使用chmod指令變更檔案的讀寫權限,變更讀寫權限有兩種方法,一種是字母模式,一種是數字模式

    字母模式:

    $chmod userMark(+|-)PermissionsMark
    

    userMark取值:

    • u:使用者
    • g:組
    • o:其它使用者
    • a:所有使用者

    PermissionsMark取值:

    • r:讀
    • w:寫
    • x:執行

    例如:

    $chmod a+x main         對所有使用者給檔案main增加可執行權限
    $chmod g+w blogs        對組使用者給檔案blogs增加可寫權限
    

    數字模式:

    數字模式直接設定所有權限,相比字母模式,更加簡潔方便;

    使用三位八進位數字的形式來表示權限,第一位指定屬主的權限,第二位指定組權限,第三位指定其他使用者的權限,每位通過4(讀)、2(寫)、1(執行)三種數值的和來確定權限。如6(4+2)代表有讀寫權,7(4+2+1)有讀、寫和執行的權限。

    例如:

    $chmod 740 main     將main的使用者權限設定為rwxr-----
    

    變更檔案或目錄的擁有者

    $chown username dirOrFile
    

    使用-R選項遞歸變更該目下所有檔案的擁有者:

    $chown -R weber server/
    

    4. 環境變量

    bashrc與profile都用於儲存使用者的環境訊息,bashrc用於交談式non-loginshell,而profile用於交談式login shell。

    /etc/profile,/etc/bashrc 是系統全局環境變量設定
    ~/.profile,~/.bashrc使用者目錄下的私有環境變量設定

    當登入系統獲得一個shell程式時,其讀取環境設定腳本分為三步:

    1. 首先讀入的是全局環境變量設定檔案/etc/profile,然後根據其內容讀取額外的檔案,如/etc/profile.d和/etc/inputrc
    2. 讀取現用的登入使用者Home目錄下的檔案~/.bash_profile,其次讀取~/.bash_login,最後讀取~/.profile,這三個檔案設定基本上是一樣的,讀取有優先關係
    3. 讀取~/.bashrc

    ~/.profile與~/.bashrc的區別:

    • 這兩者都具有個性化定制功能
    • ~/.profile可以設定本使用者專有的路徑,環境變量,等,它只能登入的時候執行一次
    • ~/.bashrc也是某使用者專有設定檔案,可以設定路徑,指令別名,每次shell script的執行都會使用它一次

    例如,我們可以在這些環境變量中設定自己經常進入的檔案路徑,以及指令的捷徑:

    .bashrc
    alias m='more'
    alias cp='cp -i'
    alias mv='mv -i'
    alias ll='ls -l'
    alias lsl='ls -lrt'
    alias lm='ls -al|more'
    
    log=/opt/applog/common_dir
    unit=/opt/app/unittest/common
    
    .bash_profile
    . /opt/app/tuxapp/openav/config/setenv.prod.sh.linux
    export PS1='$PWD#'
    

    通過上述設定,我們進入log目錄就只需要輸入cd $log即可

     

    如果網路上的 Linux 電腦未修改更新,您的網路很容易受到攻擊和服務中斷。
    我們向您展示最好的 Linux 修改更新管理工具。

    以下是十個 Linux 修改更新管理工具的清單:

    1. ManageEngine Patch Manager Plus 編輯者的選取 用於管理 Linux、Windows 和 Mac 裝置的修改更新管理解決專案。 使用者可以設定部署策略、安排未來的修改更新、測試修改更新並生成報告。
    2. NinjaOne 修改更新管理  該雲平台提供多租戶帳戶,非常適合 MSP 用來管理用戶端系統,內含監視運行 Linux、macOS 或 Windows 的端點。
    3. Ivanti Neurons for Patch Intelligence 基於 Web 的修改更新管理工具,適用於 Linux、Unix 和 Mac。 它具有自動修改更新部署、調度和測試功能。 它還內含一個可定制的報告系統。
    4. GFI LanGuard 適用於 Linux、Microsoft 和 macOS 裝置的 修改更新管理軟體。 在 Linux 上,該工具支援 RedHat Enterprise Linux、CentOS、Ubuntu、Debian、SUSE Linux Enterprise、openSUSE 和 Fedora 19。
    5. Automox 適用於 Linux、Windows 和 macOS 的基於 雲的修改更新管理器。 配置策略並自動修補整個網路中的裝置,或使用 Automox Worklets 建立自訂腳本。
    6. Kace Systems Management Appliance 系統管理解決專案,具有適用於 Linux、Windows 和 macOS 的軟體部署和修改更新管理。 它還支援自訂包安裝。
    7. SanerNow 修改更新管理 基於雲的修改更新管理工具,支援 Linux、Windows 和 macOS。 內含自動修改更新發現、任務調度和報告。
    8. HCL Software BigFix 修改更新管理工具與 Linux、UNIX、Windows 和 macOS 相容。 自動發現軟體並將其分發到連線的裝置。
    9. Red Hat Satellite 一個軟體和系統管理包,可自動為註冊軟體引入修改更新。
    10. SysWard 修改更新管理工具與 CentOS、Ubuntu、RedHat、Debian、OpenSUSE、SUSE、Fedora、Oracle Linux 等相容。 它內含控制台和警報系統。

     

    Linux 最佳修改更新管理工具

    我們選取 Linux 修改更新管理工具的方法

    我們回顧了 Linux 修改更新管理器市場,並根據以下標準分析了工具:

    • 軟體資產清單
    • 自動掃瞄更新
    • 對可用修改更新進行排隊以供安裝的程式
    • 維護日曆容許在不引人注目的時間應用修改更新
    • 完成報告和手動重新運行修改更新的選項
    • 免費試用或模擬賬戶以進行免費評估
    • 該工具物有所值,可節省技術人員的時間,且價格公道

    考慮到這些選取標準,我們研究了 Linux 的 Linux 修改更新管理系統,該系統提供自動化功能以提高效率。

    1. ManageEngine Patch Manager Plus

    ManageEngine補丁管理器Plus

    ManageEngine Patch Manager Plus 是一款修改更新管理解決專案,可以管理 Linux Windows Mac 裝置。 該平台為以下操作系統提供代理; 紅帽、SUSE Linux、Ubuntu、Debian 和 CentOS。 ManageEngine Patch Manager Plus 會線上掃瞄缺失的修改更新並在將它們部署到您的電腦之前對其進行測試。 使用者可以安排修改更新掃瞄以不斷搜尋新的掃瞄。

    主要特徵

    • 修補 RHEL、SUSE、CentOS、Ubuntu 和 Debian
    • SaaS 平台或安裝在 Windows Server 上
    • 適用於 MSP
    • 修改更新沙箱
    • 提供多站台版本

    為什麼我們推薦它?

    ManageEngine Patch Manager Plus 是一個具有部署選項的自託管系統。 您不必將其託管在 Linux 電腦上,因為它可以通過網路到達您的 Linux 電腦。 它還可以修補 Windows 和 macOS。 因此,如果您有多種操作系統,您仍然可以使用這一工具來管理所有系統。

    為了確保您受到保護, ManageEngine Patch Manager Plus 容許您 設定部署策略 並優先搜尋具有最高優先級的修改更新。 例如,該軟體將在專注於低或中等嚴重層級更新之前安裝關鍵修改更新。

    通過 系統健康報告, 您可以檢查安裝修改更新後電腦的運行情況。 您可以在此處 檢視修改更新狀態 並驗證漏洞是否受到保護。

    推薦給誰?

    Patch Manager Plus 提供三個版本,這使其成為各種規模企業的關聯選取。 有一個針對小型企業的免費版本,可以管理最多 20 個工作站和 5 個伺服器上的修改更新。 還有一個用於 LAN 的版本和另一個用於多站台操作的版本。 該軟體在 Windows Server 上運行,但如果您沒有該操作系統,您可以選取 SaaS 版本的修改更新管理器。

    優點:

    • 多平台使用使其成為支援多操作系統(例如 MSP)的企業的理想選取。
    • 自動按最高優先級對修改更新進行優先級排序
    • 簡單的運行狀況報告可以讓您一目了然地了解機器的修改更新狀態
    • 靈活的許可使 ManageEngine Patch Manager Plus 成為任何規模網路的絕佳選取
    • 沙箱環境容許您在將修改更新推送到生產環境之前對其進行測試

    缺點:

    • 功能豐富,可能需要投入一些時間來學習該平台

    提供三個本地版本 ManageEngine Patch Manager Plus :免費版、專業版和企業版。 免費版免費支援最多 20 台電腦和 5 台伺服器。

    Professional 年度訂閱費用為 245 美元(205 英鎊),包括第三方修改更新管理和報告調度。 企業版的價格為 345 美元(290 英鎊),具有自動測試和批准功能。

    編輯的選取

    ManageEngine Patch Manager Plus 是我們的偏好! 可以輕鬆掃瞄端點以檢驗遺漏的修改更新。 您可以在部署之前獲得一個沙箱來測試修改更新,並且可以使用它輕鬆生成審核和報告。

    操作系統: Linux、Mac 和 Windows、本地

    2. NinjaOne 修改更新管理

    NinjaOne Linux 補丁管理

    NinjaOne 是一個提供系統監控和管理工具的雲平台。 這些工具內含修改更新管理模組,該系統可以管理運行 Linux Windows macOS 的端點。 修補控制台能夠處理同一佇列中不同操作系統的更新程式。

    主要特徵

    • 遠端工具
    • 可以混合操作系統
    • 專為 MSP 設計
    • 自動打修改更新

    為什麼我們推薦它?

    NinjaOne 修改更新管理 是遠端監控和管理服務雲平台的一部分。 該服務能夠連線到任何 LAN 並管理運行 Windows、macOS 和 Linux 的裝置的修改更新狀態。 您還可以在 NinjaOne 軟體包中獲得其他工具,其中內含網路、伺服器和應用程式的系統監控,以及用於故障排除和解決問題的遠端訪問實用程式。

    NinjaOne 是一個 遠端監控和管理 (RMM) 軟體包,它為端點和網路提供自動化系統監控服務。 該系統提供用於故障排除和支援的技術人員工具,例如遠端訪問。 平台中的端點管理模組提供 修改更新管理 ,並實現Linux服務,以便修改更新排隊自動化。

    您可以在 NinjaOne 控制台中為每個子賬戶設定計劃。 這使您可以定義 維護時段 ,容許 NinjaOne 系統自動啟動並在辦公時間之外向 Linux 電腦應用修改更新,而無需技術人員手動干預。

    NinjaOne 記錄了其所有操作,技術人員可以在 修補佇列 中檢視每個修補程式運行的完成狀態。 這使得失敗的修改更新能夠被調查並重新運行。 可以選取啟動按需運行的修改更新。

    推薦給誰?

    NinjaOne 專為託管服務提供商 (MSP) 設計,提供多租戶架構,使 MSP 能夠為每個用戶端設定單獨的子帳戶。 這使得每個用戶端的所有資料和設定完全獨立。 IT部門在沒有子賬戶功能的情況下也可以使用該軟體包進行IT資產管理。

    優點:

    • 遠端管理運行 Windows、macOS 和 Linux 的端點
    • 通過狀態報告自動修補
    • 子賬戶將客戶資料分開
    • 端點效能和容量利用率監控

    缺點:

    • 沒有價目表

    NinjaOne 是 一個雲平台 ,因此您可以通過在雲伺服器上為軟體包設定一個帳戶來開始使用該服務。 NinjaOne RMM 及其修改更新服務

     

    3. 用於修改更新智慧的 Ivanti Neurons

    Ivanti 補丁智能

    Ivanti Neurons for Patch Intelligence 是系統保護和合規工具雲平台的一部分。 該軟體包內含一個漏洞掃瞄器和一個對掃瞄結果起作用的修改更新管理器。

    主要特徵

    • 漏洞修補
    • 合規報告
    • 系統加固

    為什麼我們推薦它?

    Ivanti Neurons for Patch Intelligence 是一個 SaaS 平台,提供漏洞掃瞄器,如果軟體生產商的新更新解決了發現的漏洞,該掃瞄器將觸發修補例程。 這是一個很好的解決專案,因為它還提供錯誤配置建議,使您能夠保證整個系統的安全。

    漏洞掃瞄器經由定制並不斷適應威脅情報源中列出的最新威脅向量。 然後,漏洞管理器使用人工智慧流程來確定哪些服務和應用程式容易受到攻擊。 除了啟動修改更新管理器之外,該軟體包還將實施配置變更以消除弱點。

    該軟體還具有 報告 功能,可顯示有多少裝置尚未打修改更新,並提供 圖表和餅圖 以提高可視性。 報告是可定制的 ,因此您可以選取修改更新資料在螢幕上的顯示模式。 這些報告對於法規遵從性非常有用,因為它們有助於驗證您的基礎設施是否是最新的。

    Ivanti 是適合尋求在跨平台環境中部署修改更新的公司的解決專案。 它易於使用,並讓使用者可以完全控制裝置安全。

    推薦給誰?

    Ivanti Neurons for Patch Intelligence 的一個問題是它只能在運行 Linux、macOS 和 Unix 的裝置上運行,而不能在 Windows 上運行。 Ivanti 為 Windows 和 Microsoft 產品製作了另一個通過 SCCM 運行的修改更新管理器。 因此,如果您沒有任何 Windows 端點或伺服器,您將受益於 Ivanti Neurons for Patch Intelligence 的漏洞掃瞄和修補組合服務。 然而,現場擁有 Windows 和 Linux 的企業需要訂閱 Ivanti 的兩種產品,這不如清單中的許多其他工具(例如 ManageEngine Patch Manager Plus)有吸引力。

    優點:

    • 對 Linux、Mac 和 Unix 的多平台支援賦予該工具在不同網路中的彈性
    • 修改更新調度開箱即用,效果很好
    • 提供易於設定的簡單圖形報告

    缺點:

    • 必須聯繫公司了解準確價格

    要了解 Ivanti 的定價訊息, 您必須直接聯繫該公司。

    4.GFI LanGuard

    GFI LanGuard

    GFI LanGuard 是一款修改更新管理軟體,可以修補 Linux、Microsoft、macOS 和其他第三方應用程式,內含 Apple QuickTime、Mozilla Firefox、Adobe Acrobat、Adobe Flash Player、Shockwave Player、Mozilla Thunderbird、Java Runtime 等 。 對於 Linux 使用者,GFI LanGuard 支援一系列發行版,內含 RedHat Enterprise Linux、CentOS、Ubuntu、Debian、SUSE Linux Enterprise、openSUSE 和 Fedora 19。

    主要特徵

    • 修補 RHEL、SUSE、CentOS、Ubuntu、Fedora 和 Debian
    • 建立軟體清單
    • 自動打修改更新

    為什麼我們推薦它?

    GFI LanGuard 是修補 Linux 的特別好的選取,因為它明確列出了可以修補的發行版。 它們是 RHEL、CentOS、Ubuntu、Debian、SUSE Linux Enterprise、openSUSE 和 Fedora 19。很少有企業在其站台上只安裝 Linux,因此很高興看到 GFI LanGuard 還可以從單個控制台修補 Windows 和 macOS。 該軟體包的一個重要功能是它還包括一個漏洞管理器,它將發現可以修補的安全漏洞。 然後它會自動啟動修改更新管理器來修復檢驗到的問題。 修改更新管理器也可以手動運行。

    該工具配備了高質量的 GUI,您可以在其中管理所有連線裝置上的修改更新。 手動或自動掃瞄您的網路 以下載新修改更新。 自動修改更新下載非常適合減少更新裝置所需的手動管理。

    還有漏洞評估功能,可以 檢驗超過60,000個漏洞 。 漏洞掃瞄結合使用 OVAL 和 SANS Top 20 來掃瞄裝置內的漏洞。 如果出現問題,該軟體會向您提供有關狀態的附加訊息,以便您解決問題。

    推薦給誰?

    GFI LanGuard 在修補 Linux 方面的廣泛能力使其成為一個非常有吸引力的軟體包。 同樣重要的是,該服務可以修補 macOS 和 Windows,這使得它對大多數企業來說比 Ivanti 軟體包具有更好的前景。 不主要基於 Linux 的企業也應該考慮 ManageEngine Patch Manager Plus。 然而,GFI LanGuard 中的連結漏洞掃瞄器為該工具提供了優勢。

    優點:

    • 對 Microsoft、Linux 和 Mac 的多平台支援
    • 內含對修補其他流行的第三方應用程式(如 Adob​​e、Java 和 Runtime)的支援
    • 簡單而有效的介面
    • 內建漏洞評估使用修改更新訊息來幫助安全團隊評估風險

    缺點:

    • 希望看到更多用於安排修改更新的功能
    • 可以為較新的第三方應用程式提供更多最新支援

    GFI LanGuard 提供三種計劃: 小型 中型 大型 。 小型計劃涵蓋 10 至 49 個節點,每個節點每年的費用為 26 美元(21.80 英鎊)。

     

    5.Automox

    奧托莫克斯

    Automox 是一個 的基於雲的修改更新管理平台 適用於 Linux Windows macOS Automox 可以 自動修補易受攻擊的裝置。 該工具易於使用,並且通過輕量級代理進行部署,對系統資源的影響最小。

    主要特徵

    • 修補 Linux、Windows 和 macOS
    • 僅修補特定組的裝置
    • 腳本語系

    為什麼我們推薦它?

    Automox 如果您的網路上有 Windows 和 macOS 電腦以及 Linux 電腦, 是另一個值得考慮的修改更新管理器。 該系統擁有自己的腳本模組,使您能夠建立裝置管理的自動化工作流程,並且能夠與其他現場安全系統協調以交換資料和保護資源。 該系統還提供配置管理和故障排除工具。

    通過 GUI, 使用者可以 建立策略並將其配置給 裝置 或組。 將裝置分組在一起可以更輕鬆地管理大量裝置。 例如,如果使用者建立一組裝置,那麼他們可以編輯策略並影響整個組。

    分組裝置還可以按 部門 操作系統 區域 進行支援, 從而實現簡單的導航 。 如果您需要更多控制,則可以使用 Automox Worklets 編寫自訂任務腳本。

    Automox 是此清單中維護成本最低的修改更新管理工具之一,具有出色的配置選項。

    推薦給誰?

    Automox 是一個非常引人注目的軟體包,因為它能夠連結到第三方安全系統。 您將設定的最重要的連結可能是漏洞掃瞄器和 Automox 之間的連結。 該系統在雲上運行,因此您無需託管它或確保軟體是最新的 – 這一切都已得到解決。

    優點:

    • 對 Microsoft、Linux 和 Mac 的多平台支援
    • 在雲端運行,不需要安裝本地伺服器
    • 具有時尚的高度可視化介面
    • 利用分組使修補大量裝置變得容易組織

    缺點:

    • 在合規性方面可以使用更好的報告功能(HIPAA、PCI 等)
    • 可以更好地支援第三方應用程式修補

    有兩個版本的 Automox 可供購買: Patch Patch & Manage 。 每台裝置每月起價 3 美元(2.50 英鎊)。

     

    6.KACE系統管理裝置

    KACE 系統管理設備

    KACE Systems Management Appliance 是一款具有修改更新管理功能的系統管理解決專案。 相容 在 Linux 上,軟體代理與Linux Red Hat Linux AS 和 ES、Ubuntu、SUSE Linux Enterprise Server Raspbian Linux

    主要特徵

    • 修補 RHEL、SUSE、Ubuntu 和 Raspbian
    • IT資產管理
    • 軟體許可管理

    為什麼我們推薦它?

    KACE 系統管理裝置 是一款有趣的產品,但其主要吸引力在於 Quest 品牌的可靠性——該公司提供 KACE 系列產品。 修改更新管理器只是 KACE 系統管理裝置的一部分——儘管它是一個非常重要的元素。 這是一個完整的 IT 資產管理包,重點關注軟體管理。

    該軟體 可將自動更新部署到 Linux Mac Windows 電腦或伺服器。 該軟體還支援 Linux 上的自訂軟體包安裝,格式為 .rpm、.zip、.bin、.tgz.m 和 tar.gz。

    GUI 容許使用者通過控制台監控整個資產庫存。 在 控制台上, 您可以 檢視裝置 監控效能 。 如果點選進入“修改更新管理”螢幕,您可以檢視統計訊息並完成操作,例如檢驗丟失的修改更新、部署可用的修改更新以及返回已安裝的修改更新。

    KACE 系統管理裝置 是市場上最完整的修改更新管理工具之一。 該工具可作為虛擬或託管裝置使用。

    推薦給誰?

    KACE 系統管理裝置不是物理裝置,這使得該工具更加經濟實惠。 它作為 Hyper-V、VMware 或 Nutanix 上的虛擬裝置運行。 SaaS 版本提供了替代部署選項。 這是一個非常全面的服務台工具,因此它不適合沒有太多資產需要管理的小型企業。 然而,大中型企業將從該系統中受益,因為它能夠管理和修補運行 Windows 和 macOS 以及 Linux 的裝置。

    優點:

    • 支援多種不同的 Linux 操作系統
    • 可用作虛擬或託管應用程式,在安裝時提供額外的彈性
    • 支援自動修改更新部署

    缺點:

    • 必須聯繫公司了解定價
    • 報告控制台可以使用更好的過濾選項

    要獲得報價,您需要直接聯繫該公司。

    7.SanerNow修改更新管理

    三二現在

    SanerNow Patch Management 是一種 基於雲的修改更新管理解決專案 提供修改更新 ,可自動為Linux、Windows macOS SanerNow 修改更新管理 可以 自動發現新修改更新 並應用它們,無需人工干預。 如果修改更新導致問題,那麼軟體可以將其返回。

    主要特徵

    • 與漏洞掃瞄器關聯
    • 合規報告
    • 修補操作系統和 300 多個應用程式

    為什麼我們推薦它?

    SecPod SanerNow 修改更新管理 為操作系統和 400 多個第三方軟體包提供自動修改更新。 這是一個 SaaS 軟體包,因此您無需擔心修補 SanerNow 軟體,因為 SecPod 會為您處理這件事。 該系統按計劃自動運行,並且當辦公室關閉且所有裝置均閒置時,它將在夜間運行。 它將修補 RHEL、CentOS、Fedora、Oracle Linux、Amazon Linux、Ubuntu 和 Debian Linux。 IT 部門還將修補 Windows 和 macOS 以及在它們之上運行的軟體。

    要使用該工具,使用者 需要配置修改更新規則 ,然後 安排 該工具完成的任務。 例如,您可以配置規則以自動修補裝置。 您還可以根據嚴重性層級確定修改更新的優先級。

    為了幫助您關注已修補的裝置, SanerNow 修改更新管理 提供了 報告 功能。 報告會向您顯示已推出哪些修改更新以及它們可以保護您免受哪些風險。 元素 修改更新影響分析 歷史追蹤等 有助於顯示對網路進行的變更。

    對於那些需要基本資產管理體驗的企業來說,SanerNow 修改更新管理 是頂級修改更新管理工具之一。 該軟體支援 Linux 上的 Redhat Enterprise Linux、CentOS、Fedora、Oracle Linux、Amazon Linux、Ubuntu 和 Debian。

    推薦給誰?

    SecPod 的修改更新管理器是 ManageEngine Patch Manager Plus 的有力競爭對手。 SanerNow 系統沒有本地版本,但可以通過任何標準瀏覽器從任何地方訪問其控制台,因此看起來就像您在自己的工作站上使用它一樣。 該工具適用於各種規模的企業。

    優點:

    • 基於雲的修改更新管理,無需安裝伺服器或加入
    • 具有易於使用的修改更新規則集功能,有助於修改更新調度
    • 可以追蹤修改更新部署隨時間的變化,並具有影響分析統計資料,以將問題與修改更新部署關聯起來

    缺點:

    • 介面有時可能會令人困惑,尤其是在裝置數量較多的情況下
    • 必須聯繫銷售人員了解定價

    有關定價訊息,您必須直接聯繫銷售團隊。

    8.HCL軟體BigFix

    HCL軟件

    HCL Software BigFix 的端點管理和修改更新管理軟體 是適用於Linux、UNIX、Windows macOS HCL Software BigFix 將自動化資產發現與 自動軟體分發 相結合,以最少的使用者干預高效更新裝置。 該工具具有可擴展性,可以監控多達 250,000 個不同的端點

    主要特徵

    • 端點管理
    • 自動打修改更新
    • 合規報告

    為什麼我們推薦它?

    HCL Software BigFix 是一款包括修補功能的端點管理工具。 該服務可以在運行 Linux、Windows 和 macOS 的端點上運行,並且還將更新在這些操作系統上運行的軟體。 該系統可以識別物理、虛擬、搬移和基於雲的資產,並將掃瞄每個發現的裝置以編譯軟體清單。 這是 BigFix 自動修補及其合規性報告服務的基礎。

    您可以使用該工具 實時監控端點狀態 。 實時監控使您可以在更新管理伺服器之前檢視修改更新層級並確認修改更新是否已成功部署。

    確認安裝對於在合規性場景中提供修補證據非常有用。 還有一個報告系統,可讓您突出顯示需要更新的實體。

    HCL Software BigFix 如果您需要管理分佈在不同操作系統之間的裝置, 值得研究。 它還擁有足夠的頻寬來支援從中小企業到大公司的每個人。

    推薦給誰?

    儘管 HCL Software 聲稱其 BigFix 軟體包適合所有企業,但大小定義的上限值得注意,因為該軟體包的一次安裝可以管理多達 250,000 個端點。 這是一個了不起的規模,建議非常大的組織使用 BigFix 服務。 該系統是一個本地軟體包,將安裝在 RHEL 或 Windows Server 上。

    優點:

    • 具有輕量級資產管理工具和修改更新管理功能
    • 支援Linux、Windows和Unix系統
    • 可擴展到超過 250,000 個端點

    缺點:

    • 必須聯繫銷售人員了解定價
    • 不提供免費試用,僅提供演示

    要檢視定價訊息,您必須直接聯繫該公司。 您可以 安排演示

    9. RHEL Satellite 紅帽衛星

    紅帽衛星 - 基礎設施視圖

    RHEL 所有者可以通過 RHEL Satellite 服務維護其操作系統、RHEL 實用程式元件以及系統上安裝的任何其他軟體。 這是一個完整的系統管理工具,可以監控 RHEL 電腦和操作系統上安裝的所有軟體版本。

    主要特徵

    • 專門用於 RHEL 修補
    • 修補操作系統和應用程式
    • RHEL 管理工具套件的一部分

    為什麼我們推薦它?

    紅帽衛星 旨在作為紅帽系統的軟體管理器。 因此,RHEL 在這組產品中名列前茅,Satellite 是一個複雜的工具包,Katello 是實現修改更新管理的重要元件。 該系統的主要缺點是它不能擴展到其他操作系統甚至其他 Linux 發行版。

    衛星軟體是一套工具。 這是一個很大的軟體包,安裝需要 90 分鐘。 這九個組成部分是:

    • The Foreman :適用於物理和虛擬系統的配置和生命週期管理工具。
    • Katello :訂閱和存儲庫管理。
    • Candlepin :Katello 的訂閱管理部分。
    • Pulp :Katello 的內容和存儲庫管理部分。
    • Hammer :所有 Satellite 功能的指令行介面。
    • REST API :RESTful API,用於建立整合模組。
    • Apache Tomcat :Satellite 系統前端的內嵌式伺服器。
    • Puppet:Puppet Master 伺服器。
    • Hiera :Puppet 所需的鍵值資料庫。

    所有這一切的關鍵要素是 Katello,它是所有修改更新管理功能所在的地方。

    推薦給誰?

    紅帽衛星的客戶群由紅帽企業 Linux 使用者組成。 這是任何人都可以使用的最重要的紅帽工具。 紅帽虛擬化可能是該公司需要保持最新的第二重要產品。 運行混合端點操作系統的企業必須使用其他修改更新管理器來補充此免費工具。

    優點:

    • 包括一套支援修補、生命週期管理和 RHEL 環境支援的工具
    • 重點關注 Linux 環境,非常適合主要僅運行 Linux 的大型網路
    • Linux 專業人士的理想選取

    缺點:

    • 使用起來可能很複雜,尤其是對於新使用者
    • 介面很簡單,很難找到某些功能
    • 某些功能可能位於整個套件中的不同工具中,從而增加了複雜性
    • 安裝時間長

    衛星系統能夠管理組織擁有的多個主機的操作系統和軟體,還可以內含遠端伺服器和雲伺服器。 該系統可以免費使用,並且可以 從 Red Hat 網站上取得

    10. SysWard 系統病房

    西斯沃德

    SysWard 是一個修改更新管理解決專案,支援一系列 Linux 操作系統,內含 CentOS、Ubuntu、RedHat、Debian、OpenSUSE、SUSE、Fedora、Oracle Linux 等。 通過控制台,您可以檢視分為 安全更新、定期更新、失效主機、作業失敗 等的更新檢視。

    主要特徵

    • 修補 RHEL、SUSE、CentOS、Ubuntu、Fedora、Oracle 和 Debian
    • 建立資產清單
    • 軟體漏洞管理

    為什麼我們推薦它?

    SysWard 是一個僅適用於 Linux 的安全系統,以修改更新管理器為中心。 該工具幾乎可以在所有 Linux 發行版上運行。 該系統將掃瞄您的 Linux 端點並評估哪些需要修補,然後取得這些更新的安裝程式。 它將在下一個可用的維護時段應用修改更新。

    清單 代理 您還可以檢視網路中的 。 代理檢視顯示的訊息內含 操作系統、主機名、組、更新、記憶體、版本 上次簽入 。 代理檢視非常適合管理資產庫存和監控更新狀態。 如果需要,您可以以 CSV 格式匯出此資料。

    該平台還配備了一個 警報系統 就會發出 有新修改更新可用時,該系統 ,每當軟體包 知會。 根據警報對您的網路的重要性來配置警報的嚴重層級。 警報功能非常有用,因為它可以讓您及時了解基礎設施的變化。

    推薦給誰?

    對於端點上僅安裝 Linux 的企業來說,SysWard 是一個不錯的選取。 如果您還運行 macOS 或 Windows,那麼使用其他工具可能會更好,例如 ManageEngine Patch Manager Plus。 僅需要管理兩台 Linux 伺服器的小型企業可以免費使用此軟體包。

    優點:

    • 支援多種發行版類型,例如 Oracle、Debian 和 Fedora
    • 代理追蹤顯示其硬體資源利用率,使其成為輕量級監控代理和修改更新管理器
    • 警報開箱即用,效果很好

    缺點:

    • 可以受益於更好的報告功能
    • 希望看到更多匯出格式

    SysWard 對於想要簡單且價格低廉的修改更新管理工具的企業來說, 是一個不錯的選取。 該軟體最多可供兩名代理免費使用。

    選取 Linux 修改更新管理工具:報告是必須的!

    從一個裝置到另一個裝置搜尋更新並安裝它們並不是修補數十台裝置的最有效方法。 Linux 修改更新管理工具負責搜尋和安裝修改更新的繁瑣任務,以便您可以專注於更緊迫的問題。

    手動安裝更新所花費的時間越少,您就能花在更重要的任務上的時間就越多。 我們在此清單中列出了適合各種企業的各種工具。 如果您正在尋找基本且易於訪問的解決專案,那麼ManageEngine Patch Manager Plus 是一個很好的起點。

    在尋找修改更新管理解決專案時,最好購買帶有報告的解決專案。 良好的報告功能將容許您檢查已修補的漏洞並驗證您的網路是否安全。 如果您接受過第三方審核,它們也非常有用!

    Linux 修改更新管理常見問題解答

    修改更新管理應該多久進行一次?

    每週至少運行一次修改更新。 這是一個很好的折衷週期長度,但每個企業都有不同的限制。 網際網路上給出的典型的不明確建議是“視情況而定”,因為網路管理員還受到有時需要持續可用性的服務層級協定的限制。 確保合同經理在系統可用性協定中插入每週一次的視窗,以取得需要退回系統的修改更新。

    為什麼修改更新管理對於網路安全很重要?

    現用的版本的軟體最終確定並發佈後,會發佈修改更新來消除黑客攻擊所暴露的安全漏洞。 在大多數情況下,新版本的軟體和操作系統在發佈之前都經由了廣泛的測試和錯誤分析。 因此,通常不會發佈修改更新,因為開發人員在其原始軟體版本中出現了問題。 修改更新管理是系統安全程式的重要組成部分,應被視為優先任務。

    什麼是內核修改更新?

    內核修改更新是 Unix 和類 Unix 系統中操作系統的更新。 這組操作系統內含 Mac OS、Linux、BSD、Android、Amazon Fire OS 和 Raspberry Pi。

    7. 查詢網路服務和連接埠

    netstat 指令用於顯示各種網路關聯訊息,如網路連線,路由表,介面狀態 (Interface Statistics),masquerade 連線,多播成員 (Multicast Memberships) 等等。

    列出所有連接埠 (內含監聽和未監聽的):

    netstat -a
    

    列出所有 tcp 連接埠:

    netstat -at
    

    列出所有有監聽的服務狀態:

    netstat -l
    

    使用netstat工具查詢連接埠:

    $netstat -antp | grep 6379
    tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      25501/redis-server
    
    $ps 25501
      PID TTY      STAT   TIME COMMAND
    25501 ?        Ssl   28:21 ./redis-server ./redis.conf
    

    lsof(list open files)是一個列出現用的系統開啟檔案的工具。在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問一般資料,還可以訪問網路連線和硬體。所以如傳輸控制協定 (TCP) 和使用者資料報協定 (UDP) 套接字等; 在查詢網路連接埠時,經常會用到這個工具。

    查詢7902連接埠現在運行什麼程式:

    #分為兩步
    #第一步,查詢使用該連接埠的程式的PID;
        $lsof -i:7902
        COMMAND   PID   USER   FD   TYPE    DEVICE SIZE NODE NAME
        WSL     30294 tuapp    4u  IPv4 447684086       TCP 10.6.50.37:tnos-dp (LISTEN)
    
    #查到30294
    #使用ps工具查詢程式詳情:
    $ps -fe | grep 30294
    tdev5  30294 26160  0 Sep10 ?        01:10:50 tdesl -k 43476
    root     22781 22698  0 00:54 pts/20   00:00:00 grep 11554
    

    註解

    以上介紹lsof關於網路方面的應用,這個工具非常強大,需要好好掌握

    2. 網路路由

    檢視路由狀態:

    $route -n
    

    傳送到ping包到位址IP:

    $ping IP
    

    探測前往位址IP的路由路徑:

    $traceroute IP
    

    DNS查詢,尋找域名domain對應的IP:

    $host domain
    

    反向DNS查詢:

    $host IP
    

    3. 對映下載

    直接下載檔案或是網頁:

    wget url
    

    常用選項:

    • –limit-rate :下載限速
    • -o:指定記錄檔;輸出都寫入日誌;
    • -c:斷點續傳

    4. ftp sftp lftp ssh

    SSH登陸:

    $ssh ID@host
    

    ssh登陸遠端伺服器host,ID為使用者名。

    ftp/sftp檔案傳輸:

    $sftp ID@host
    

    登陸伺服器host,ID為使用者名。sftp登陸後,可以使用下面的指令進一步操作:

    • get filename # 下載檔名
    • put filename # 上傳檔名
    • ls # 列出host上現用的路徑的所有檔案
    • cd # 在host上變更現用的路徑
    • lls # 列出本地主機上現用的路徑的所有檔案
    • lcd # 在本地主機變更現用的路徑

    lftp同步資料夾(類似rsync工具):

    lftp -u user:pass host
    lftp user@host:~> mirror -n
    

    5. 網路複製

    將本地localpath指向的檔案上傳到遠端主機的path路徑:

    $scp localpath ID@host:path
    

    以ssh協定,遍歷下載path路徑下的整個檔案系統,到本地的localpath:

    $scp -r ID@site:path localpath
    

     

    最好的 Linux 網路監控工具

    Linux電腦可用於網路監控,也可以通過網路監控其他Linux主機。 我們描述最好的 Linux 網路監控工具。

    有很多很棒的 網路監控工具 市場上 。 然而,在閱讀完所有銷售詳細訊息後,您開始想要購買,然後發現該軟體只能在 Windows 或 Windows Server 上運行。

    如果您只有 Linux 伺服器 ,並且不想通過加入 Windows 伺服器來混合環境,那麼您會浪費時間閱讀無法安裝的網路監視器的說明。

    如果您只想讓您的環境保持全 Linux,那麼在尋找網路監視器時您有以下三種選取:

    • 基於Linux的網路監控系統
    • SaaS、雲端網路監控系統
    • 內含操作系統的網路監控系統

    在這篇評論中,我們將從所有這三個類別中挑選示例。 然而,我們清單中的大多數網路監控工具都將安裝在 Linux 伺服器上。

    以下是我們列出的八個最佳 Linux 網路監控工具:

    1. N-able N-central 編輯的選取 IT 部門和託管服務提供商的絕佳選取。 該網路監視器附帶了捆綁到裸機伺服器中並安裝在裸機伺服器上的 CentOS 修改版本。
    2. Site24x7網路監控 一種基於雲的網路管理服務,可以監控現場有線和無線網路、雲資源和遠端網路。
    3. Paessler PRTG  這個非常受歡迎的基礎設施監控系統的雲服務版本。 它監視網路、伺服器和應用程式。
    4. ManageEngine OpManager 適用於 Linux 和 Windows Server,該網路效能監視器使用 SNMP 程式來保持網路平穩運行。
    5. Datadog Network Performance Manager 一種可通過任何標準瀏覽器訪問的 SaaS 網路管理服務。 它可以管理多個站台並檢查網際網路連線質量。
    6. Nagios XI 一種本地網路監控系統,安裝在 Linux 上,涵蓋網路效能的各個方面。
    7. Zabbix 一個免費的基礎設施監控系統,可安裝在 Linux、Unix、macOS 和 Windows 上。 它可以監控現場有線和無線網路、雲伺服器、遠端站台和網際網路效能。
    8. Icinga 2 這個基於 Linux 的網路監控包是 Nagios Core 的一個分支,可以整合 Nagios 外掛程式。

    您可以在以下部分中閱讀有關每個選項的更多訊息。

    什麼是Linux網路監控?

    Linux 是一種電腦操作系統:端點或伺服器。 大多數網路裝置都有自己的韌體。

    因此,當人們談論 Linux 網路監控時, 他們要麼是指監控部分或全部連線的電腦運行 Linux 操作系統的網路,要麼是指在 Linux 主機 上運行網路監控軟體。

    網路在獨立於操作系統的協定上運行。 世界上最常見的網路系統形式是 TCP/IP

    由於 TCP/IP 的 IP 部分代表網際網路協定,因此可以非常輕鬆地與網際網路連線進行互動。

    大多數網路監控系統的 使用簡單網路管理協定(SNMP) 操作過程都 。 SNMP 不依賴於某一特定操作系統。

    所有網路裝置在購買時都已預裝了 SNMP 系統的一部分。 這是 SNMP 裝置代理。 監控系統中唯一缺少的元素是 SNMP 管理器。

    因此,網路監控工具提供了SNMP管理器功能。 這使他們能夠收集裝置代理編譯的所有裝置統計資料和流量訊息。

    頂級網路監控工具將這些裝置代理報告解釋​​為時間序列圖和易於閱讀的圖表。 可以存儲收集到的裝置狀態資料以進行 效能分析

    這有助於網路管理員規劃容量。

    這些基於 SNMP 的網路監控工具的另一個重要功能是,如果裝置代理檢驗到問題,就會發出警示。

    這些警示稱為 陷阱 ,可以在網路監控工具中解釋為警報。 警報使 IT 支援團隊能夠離開監視器來監視網路,並假設一切標準,除非出現相反的知會。

    Linux 網路監控工具的唯一顯著特徵是它可以在 Linux 電腦上運行或訪問。

    最好的Linux網路監控工具

    請注意我們推薦的這些工具的描述,因為並非所有工具都需要安裝在 Linux 電腦上。

    提供了一些 SaaS 網路監控工具。 雲計算變得非常流行,因此我們為那些不想用網路監控工具的資源需求填滿自己的伺服器空間的人

    還有一個選項捆綁了 Linux 操作系統,因此您可以將其安裝在新的裸機伺服器上,而無需首先單獨安裝 Linux 的過程。

    最好的 Linux 網路監控工具

    我們選取 Linux 網路監控工具的方法

    我們回顧了 Linux 網路監控系統市場,並根據以下標準分析了工具:

    • 網路裝置狀態檢查
    • 自動發現連線的裝置
    • 網路拓撲映射
    • 網路流量追蹤
    • 虛擬化監控
    • 免費試用或演示系統以獲得無風險評估機會
    • 可以以合理的價格在 Linux 系統上運行或監控 Linux 系統的監控工具,物有所值

    考慮到這些選取標準,我們已經確定了可靠的 Linux 系統,可以持續監控網路。 我們考慮了可以安裝在 Linux 上的軟體以及雲平台提供的軟體。

    1. N-able N-central 編輯選取

    N-能 N-中心

    N-able N-central 的修改版本上 運行在CentOS Linux 。 不過在N-central上加入之前不需要安裝操作系統,因為軟體包中已經捆綁了操作系統,所以需要安裝在裸機伺服器上。

    N-central 適用於中小型企業,也可供 託管服務提供商 (MSP) 在支援用戶端網路時使用。

    該服務可以管理遠端站台並容許通過同一介面管理多個站台。 它還可以監控 雲資源 及其網際網路連線。

    主要特徵:

    • 監控網路和端點
    • 內含搬移裝置管理
    • 自動發現和拓撲映射
    • 修改更新管理和備份
    • 任務自動化

    為什麼我們推薦它?

    N-able N-central 是一個供託管服務提供商使用的遠端監控和管理軟體包。 該服務中的工具內含對網路和端點的自動監控。

    它可以追蹤運行 Windows、Linux 和 macOS 的裝置上的活動。 該軟體包內含自動發現服務,可編譯資產清單。

    除了監控網路之外,N-central 還可以監控端點和伺服器。 受監控的裝置可以運行 Linux、macOS、Windows 或 Windows Server。

    還可以通過N-central系統管理搬移裝置。 可 搬移管理器 實現搬移裝置的批次配置、快速登入、裝置位置追蹤以及遠端鎖定和擦除。

    系統通過探索網路並記錄連線到網路的所有裝置來啟動其服務。 此自動發現功能會編譯 裝置清單 ,並自動繪製網路拓撲圖。

    庫存和地圖會不斷更新,並將發生變化以反映網路中的任何變化。 在控制台中,網路的拓撲檢視旁邊有一個裝置摘要清單,其中每個裝置的狀態以交通燈彩色顯示,以便快速識別問題。

    N-central 附帶的安全工具內含 修改更新管理器 備份管理器 。 捆綁包中的網路安全提供防火牆、Web 保護訪問管理、磁碟加密和入侵檢驗。

    還有端點檢驗和響應代理來保護網路上的每台電腦。

    推薦給誰?

    儘管大多數遠端監控和管理工具都是為 IT 部門以及託管服務部門設計的。 然而,N-able 生產了 N-sight 供 IT 部門和小型 MSP 使用。

    N-central 專為大型託管服務提供商而設計。 該軟體包安裝在裸機伺服器上。

    優點:

    • 專為中型到企業網路而設計
    • 提供眾多多租戶功能(非常適合 MSP)
    • 自動發現新資產並更新網路地圖
    • 提供強大的自動化功能和易於使用的模板

    缺點:

    • N-central 專為系統管理員而設計,需要技術知識才能充分受益

    N-central 中還包括一個 自動化管理器 ,容許網路管理員設定對檢驗到的問題的自動響應。

    在使用操作系統的過程中,我們經常需要檢視現用的的效能如何,需要了解CPU、記憶體和硬碟的使用情況; 本節介紹的這幾個工具能滿足日常工作要求。

    1. 監控CPU

    檢視CPU使用率

    $sar -u
    
    eg:
    $sar -u 1 2
    [/home/weber#]sar -u 1 2
    Linux 2.6.35-22-generic-pae (MyVPS)     06/28/2014      _i686_  (1 CPU)
    
    09:03:59 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    09:04:00 AM     all      0.00      0.00      0.50      0.00      0.00     99.50
    09:04:01 AM     all      0.00      0.00      0.00      0.00      0.00    100.00
    

    後面的兩個參數表示監控的頻率,比如例子中的1和2,表示每秒取樣一次,總共取樣2次;

    檢視CPU平均負載

    $sar -q 1 2
    

    sar指定-q後,就能檢視運行佇列中的程式數、系統上的程式大小、平均負載等;

    2. 查詢記憶體

    檢視記憶體使用狀況 sar指定-r之後,可檢視記憶體使用狀況;

    $sar -r 1 2
    09:08:48 AM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact
    09:08:49 AM     17888    359784     95.26     37796     73272    507004     65.42    137400    150764
    09:08:50 AM     17888    359784     95.26     37796     73272    507004     65.42    137400    150764
    Average:        17888    359784     95.26     37796     73272    507004     65.42    137400    150764
    

    檢視記憶體使用量

    $free -m
    

    3. 查詢頁面交換

    檢視頁面交換發生狀況 頁面發生交換時,伺服器的吞吐量會大幅下降;伺服器狀況不良時,如果懷疑因為記憶體不足而導致了頁面交換的發生,可以使用sar -W這個指令來確認是否發生了大量的交換;

    $sar -W 1 3
    

    4. 查詢硬碟使用

    檢視磁碟空間利用情況

    $df -h
    

    查詢現用的目錄下空間使用情況

    du -sh  -h是人性化顯示 s是遞歸整個目錄的大小
    

    檢視該目錄下所有資料夾的排序後的大小

    for i in `ls`; do du -sh $i; done | sort
    或是
    du -sh `ls`
    

    5. 綜合應用

    當系統中sar不可用時,可以使用以下工具替代:linux下有 vmstat、Unix系統有prstat

    eg: 檢視cpu、記憶體、使用情況: vmstat n m (n 為監控頻率、m為監控次數)

    [/home/weber#]vmstat 1 3
    procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
    r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
    0  0  86560  42300   9752  63556    0    1     1     1    0    0  0  0 99  0
    1  0  86560  39936   9764  63544    0    0     0    52   66   95  5  0 95  0
    0  0  86560  42168   9772  63556    0    0     0    20  127  231 13  2 84  0
    

    使用watch 工具監控變化 當需要持續的監控應用的某個資料變化時,watch工具能滿足要求; 執行watch指令後,會進入到一個介面,輸出現用的被監控的資料,一旦資料變化,便會高亮顯示變化情況;

    eg:操作redis時,監控記憶體變化:

    $watch -d -n 1 './redis-cli info | grep memory'
    (以下為watch工具中的介面內容,一旦記憶體變化,即實時高亮顯示變化)
    Every 1.0s: ./redis-cli info | grep memory                                                                  Mon Apr 28 16:10:36 2014
    
    used_memory:45157376
    used_memory_human:43.07M
    used_memory_rss:47628288
    used_memory_peak:49686080
    used_memory_peak_human:47.38M
    

    6. 總結

    top / sar / free / watch

    這一節我們介紹程式管理工具

    使用程式管理工具,我們可以查詢程式現用的的運行狀態,或終止一個程式

    任何程式都與檔案關聯;我們會用到lsof工具(list opened files),作用是列舉系統中已經被開啟的檔案。在linux環境中,任何事物都是檔案,裝置是檔案,目錄是檔案,甚至sockets也是檔案。用好lsof指令,對日常的linux管理非常有幫助。

    1. 查詢程式

    查詢正在運行的程式訊息

    $ps -ef
    

    eg:查詢歸屬於使用者colin115的程式

    $ps -ef | grep colin115
    $ps -lu colin115
    

    查詢程式ID(適合只記得部分程式欄位)

    $pgrep 搜尋程式
    
    eg:查詢程式名中含有re的程式
    [/home/weber#]pgrep -l re
    2 kthreadd
    28 ecryptfs-kthrea
    29515 redis-server
    

    以完整的格式顯示所有的程式

    $ps -ajx
    

    顯示程式訊息,並實時更新

    $top
    

    檢視連接埠佔用的程式狀態:

    lsof -i:3306
    

    檢視使用者username的程式所開啟的檔案

    $lsof -u username
    

    查詢init程式現用的開啟的檔案

    $lsof -c init
    

    查詢特殊的程式ID(23295)開啟的檔案:

    $lsof -p 23295
    

    查詢指定目錄下被程式開啟的檔案(使用+D 遞歸目錄):

    $lsof +d mydir1/
    

    2. 終止程式

    殺死指定PID的程式 (PID為Process ID)

    $kill PID
    

    殺死關聯程式

    kill -9 3434
    

    殺死job工作 (job為job number)

    $kill %job
    

    3. 程式監控

    檢視系統中使用CPU、使用記憶體最多的程式;

    $top
    (->)P
    

    輸入top指令後,進入到互動介面;接著輸入字元指令後顯示相應的程式狀態:

    對於程式,平時我們最常想知道的就是哪些程式佔用CPU最多,佔用記憶體最多。以下兩個指令就可以滿足要求:

    P:根據CPU使用百分比大小進行排序。
    M:根據駐留記憶體大小進行排序。
    i:使top不顯示任何閒置或是僵死程式。
    

    這裡介紹最使用的幾個選項,對於更詳細的使用,詳見 top linux下的任務管理器 ;

    4. 分析執行緒棧

    使用指令pmap,來輸出程式記憶體的狀況,可以用來分析執行緒堆疊;

    $pmap PID
    
    eg:
    [/home/weber#]ps -fe| grep redis
    weber    13508 13070  0 08:14 pts/0    00:00:00 grep --color=auto redis
    weber    29515     1  0  2013 ?        02:55:59 ./redis-server redis.conf
    [/home/weber#]pmap 29515
    29515:   ./redis-server redis.conf
    08048000    768K r-x--  /home/weber/soft/redis-2.6.16/src/redis-server
    08108000      4K r----  /home/weber/soft/redis-2.6.16/src/redis-server
    08109000     12K rw---  /home/weber/soft/redis-2.6.16/src/redis-server
    

    5. 綜合運用

    將使用者colin115下的所有程式名以av_開頭的程式終止:

    ps -u colin115 |  awk '/av_/ {print "kill -9 " $1}' | sh
    

    將使用者colin115下所有程式名中包括HOST的程式終止:

    ps -fe| grep colin115|grep HOST |awk '{print $2}' | xargs kill -9;
    

     

    Linux 項目管理軟體:釋放開源解決專案的潛力

    用於管理 Linux 中的項目的軟體或 Linux 項目管理軟體是專門為 Linux 操作系統編寫的軟體。 Linux 因其穩定性、安全性和多功能性而成為流行的開源操作系統。

    Linux 項目管理軟體提供了一系列特性和功能來幫助團隊高效地計劃、組織和執行項目。 這些軟體應用程式通常是為了支援合作工作環境而構建的,使團隊能夠無縫合作,無論其物理位置如何。

    Linux 項目管理軟體的一些主要功能內含:

    任務管理 :這些工具容許使用者建立和配置任務、設定截止日期、追蹤進度和監控任務依賴性。 團隊成員可以實時更新任務狀態、加入評論並合作處理任務。

    項目規劃 :Linux 項目管理軟體提供了用於建立項目計劃、定義項目里程碑和設定項目時間表的工具。 甘特圖和其他視覺表示幫助團隊可視化項目進度並確定關鍵路徑。

    文件管理 :這些工具提供集中的文件存儲庫,團隊成員可以在其中存儲和共享項目關聯檔案。 版本控制功能確保所有團隊成員都可以訪問最新版本的文件。

    溝通與合作 :Linux 項目管理軟體內含訊息傳遞、討論板和知會等通信功能。 團隊成員可以合作、分享想法並及時了解項目開發情況。

    資源管理 :這些工具幫助團隊管理項目資源,例如人力資源、裝置和材料。 資源配置和調度功能確保資源得到有效利用並避免衝突。

    報告和分析 :Linux 項目管理軟體提供報告和分析功能來追蹤項目績效、監控關鍵指標並生成進度報告。 這有助於項目經理做出資料驅動的決策並確定需要改進的領域。

    整合和定制 :Linux 項目管理軟體可以與組織中使用的其他工具和系統整合,例如版本控制系統、錯誤追蹤工具和客戶關係管理 (CRM) 軟體。 定制選項容許組織根據其特定的項目管理工作流程和要求定制軟體。

    Linux 項目管理軟體為組織提供了強大的工具,可以在 Linux 操作系統上有效地管理和執行項目。 這些軟體應用程式具有任務管理、項目規劃、文件管理、通信、資源管理、報告和整合功能,支援合作、提高生產力並幫助團隊取得項目成功。

    Linux 項目管理軟件
    Linux 項目管理軟體

    Linux項目管理軟體的優點

    基於 Linux 的解決專案因其諸多優點而被個人和企業廣泛使用。 基於 Linux 的技術的主要優點內含:

    開源 ——Linux 的原始碼是公開的,因為它是一個開源操作系統。 這種透明度鼓勵開發人員共同工作並共享訊息。 使用者可以選取對代碼進行自己的變更並重新分發。 開源模式還鼓勵新功能的實驗和快速迭代。

    穩定性和可靠性 ——Linux 以其穩定性和可靠性而聞名。 它專為承受苛刻的任務而設計,可以連續運行數天,而不會崩潰或重新啟動。 由於與系統和伺服器中斷關聯的影響非常嚴重,因此這種可靠性至關重要。

    安全性 ——Linux 的安全措施在業界名列前茅。 由於它是開源的,社區可以快速修復發現的任何安全問題。 此外,Linux 具有強大的內建安全功能,內含訪問控制、使用者權限和安全配置。 這些新增功能增強了防禦能力並減少了遭受攻擊的可能性。

    彈性和可定制性 ——Linux 的適應性和定制選項是其最大的優勢之一。 Linux 發行版為使用者提供了廣泛的選項來滿足他們自己的要求和品味。 每個發行版都可以調整為僅包括使用者實際需要的程式,從而最大限度地減少操作系統的大小並最大限度地提高其效率。 Linux 在軟體配置方面也提供了很大的餘地,因為它可以運行各種各樣的程式和實用程式。

    成本效益 – 基於 Linux 的解決專案通常比基於專有操作系統的解決專案便宜。 作為開源操作系統,Linux 無需付費即可使用。 正因為如此,對於試圖削減軟體支出的個人和企業來說,這是一個可行的選取。 Linux 與不太現代的硬體的相容性也意味著它可以用來延緩不可避免的事情並節省資金。

    社區和支援 ——Linux 社區規模龐大且活躍,由開發人員、愛好者和組織組成,他們共同努力改進和推廣 Linux 操作系統。 使用者可以從社區獲得幫助和建議,因為他們可以訪問大量文件、論壇和其他線上資源。 當消費者遇到 Linux 問題時,他們可以向社區驅動的支援生態系統尋求幫助。

    可擴展性和效能 ——Linux 在從小型裝置到大型伺服器群的各種硬體平台上都具有出色的可擴展性和效能。 它充分利用可用的系統資源,提高速度和響應能力。 基於 Linux 的解決專案非常靈活,由於能夠輕鬆擴展,因此可以用於小型項目和大型企業環境。

    總之,基於 Linux 的系統具有開源、背後有強大社區等優勢,以及穩定性、安全性、彈性、經濟性、可擴展性和效能。 這些優點使 Linux 對於尋求可靠、靈活和高效軟體的使用者、企業和程式員來說成為有吸引力的選取。

    因此,如果您是一名 Linux 使用者,並且正在尋找適合 Linux 的優秀項目管理軟體,這裡有 30 個實用的 Linux 應用程式。

    Linux 生態系統中項目管理軟體的演變

    Linux 作為計算平台的日益普及和廣泛使用,刺激了 Linux 生態系統內項目管理軟體的長足發展。

    與其他平台相比,由於缺乏專門的工具,Linux 生態系統最初為項目管理軟體提供的可能性較少。

    儘管如此,Linux 使用者和程式員多年來在建立強大且功能豐富的項目管理應用程式方面取得了重大進展。 Linux 生態系統已經成熟,現在您可以使用多種項目管理選取。

    從指令行工具和簡單程式開始,Linux 生態系統的項目管理軟體僅提供最基本的功能,例如任務追蹤、調度和資源管理。 儘管這些資源很有用,但仍達不到專門項目管理程式所提供的複雜性和易用性。

    選取正確的 Linux 項目管理軟體

    為了確保項目的成功和效率,請使用適當的 Linux 項目管理軟體。 選取時,請考慮以下因素:

    項目需求 :列出您的項目需求。 考慮項目規模、複雜性、團隊規模、任務追蹤、日程安排、合作和報告。 了解您的項目需求將幫助您評估軟體解決專案。

    特性和功能 :尋找具有您所需特性和功能的 Linux 項目管理軟體。 考慮任務管理、日程安排、資源配置、文件管理、合作工具、報告和整合。 根據項目需求確定關鍵功能的優先級。

    使用者介面和可用性 :軟體的使用者介面和可用性至關重要。 尋找具有易於使用的介面的軟體,可以讓您快速訪問項目資料。 它應該是使用者友好的,容許團隊成員輕鬆學習和適應該軟體,而無需額外培訓。

    整合能力 :評估軟體與項目工作流程中其他工具和系統的整合能力。 檢查程式是否與版本控制系統、問題追蹤工具、通信平台和其他項目關鍵應用程式整合。 整合簡化了工作流程並提高了生產力。

    定制和彈性 :項目管理軟體是否容許定制以滿足您的工作流程和要求? 定制可以提高程式效率。 欄位、工作流程和使用者角色應該可以在軟體中自訂。

    社區和支援 :應考慮項目管理軟體的社區和支援。 尋找活躍的使用者組、論壇和文件以取得見解、幫助和資源。 支援和充滿活力的社區可以幫助您解決問題、發現最佳實踐並最大化軟體。

    安全和資料隱私 :評估軟體的安全程式以保護您的項目資料。 軟體應遵循資料加密、訪問限制和頻繁的程式更新。 考慮您組織的資料隱私需求並確保軟體滿足這些需求。

    成本和許可證 :考慮項目管理軟體的定價和許可證。 該軟體可能是免費的,也可能是付費的。 您的預算和軟體的價值應該決定定價。

    使用者評論和反饋 :閱讀其他軟體使用者或組織的使用者評論和反饋。 他們對軟體優缺點的了解可能會幫助您進行選取。

    這些考慮因素可能會幫助您選取滿足您需求、促進團隊合作並提高項目效率和成功的 Linux 項目管理軟體。 在做出決定之前,優先考慮您的需求,調查不同的可能性並測試該程式。

    Linux 項目管理軟體選項

    1 SimManTools – Linux 項目管理軟體

    SimManTools 被稱為 簡單的管理工具 。 它是一組基於網路的 項目管理工具 它內含一個簡單的時間表 (ASTS),用於記錄每週在任務上花費的時間,以及一個簡單的項目追蹤器 (ASPT),用於根據估計追蹤項目進度。

    訪問: SimManTools

    2 ConsultComm 諮詢通信

    ConsultComm 是一款輕量級、小型、無平台的項目管理軟體,容許使用者處理多個項目、客戶或任務,以有效地管理他們在每個項目上工作的確切時間。

    訪問: ConsultComm

    3 Redmine – 基於Linux的項目管理軟體

    Redmine 是一款使用 Ruby on Rails 框架編寫的靈活的項目管理軟體。 它是一個多平台、多資料庫支援的項目管理工具,用於管理多個項目。 此外,它還具有可調整的基於角色的訪問控制和問題追蹤系統。

    訪問: Redmine

    4 Achievo 大展

    Achievo 是一款面向中小型企業的基於網路的項目和資源管理工具。 通過大展,使用者可以輕鬆管理所有資源、項目、客戶、聯繫人、計劃和日常日程安排。

    它內含一個帶有多種統計工具的時間註冊模組。 此外,Achievo 是多語系的、完全可定制的,並使用模組化系統以容許未來的擴展。

    參觀: Achievo

    5 Kunagi – 線上項目管理軟體

    Kunagi 是一個基於 Web 的工具,用於基於 Scrum 的整合項目管理和合作。 它容許使用者僅使用一台裝置來管理和完成他們的項目。 它不僅提供主要 Scrum 文件的管理,還提供各種附加資料。

    訪問: 從未

    6 RationalPlan 理性計劃

    RationalPlan 是一個強大的 Linux 項目管理工具,旨在幫助項目經理和團隊。 它定期管理項目、配置資源、分析工作量、追蹤工作進度、估算項目成本並管理預算。

    訪問: RationalPlan

    7 NavalPlan – Linux 規劃工具

    NavalPlan 是一款方便的規劃工具,適合任何工作流程需要項目和訂單管理及調度的公司。

    訪問: 海軍計劃

    8 開放項目

    OpenProj 是一個類似於 Microsoft Project 的開源項目管理工具。 它有一個簡單的使用者介面,甚至可以開啟現有的 MS Project 檔案。 此外,openProj 與項目、甘特圖和 PERT 圖表相容。

    訪問: OpenProj

    9 activeCollab – Linux 項目管理軟體

    ActiveCollab 是一個用於規劃、進度追蹤和溝通的項目管理和合作平台。 它為您提供了對檔案和通信的完全自由和控制,無限的使用者、項目和無限的存儲空間 – 它與您的公司一起成長,無需支付月費。

    訪問: ActiveCollab

    10 GanttProject  甘特圖項目

    GanttProject 是一個開源項目調度和管理工具,用於建立工作分解結構、繪製依賴關係並使用甘特圖定義里程碑。

    訪問: GanttProject

    11 KPlato – Linux 項目管理軟體

    KPlato 是一款適用於 Linux 的項目管理軟體。 它主要專注於管理具有多種資源的中型項目,並提供對甘特圖、資源檢視和帳戶檢視等各種檢視的支援。

    特徵:-

    1. 甘特圖上可配置的詳細程度
    2. 支援摘要任務
    3. 任務和里程碑
    4. 可配置的調度約束
    5. 使用標準結構
    6. 工作分解結構(WBS)
    7. 資源分解結構 (RBS)
    8. 成本分解結構(CBS)

    訪問: KPlato

    12 GnoTime – 適用於 Linux 的待辦事項清單/日記/日記工具

    GnoTime 是 Linux 上的待辦事項清單/日記/日記工具。 借助 GnoTime,使用者可以追蹤項目所花費的時間,並根據該時間生成報告和發票。

    訪問: GnoTime

    13 Cyber​​ience 項目經理

    Cyber​​ience Project Manager 是一款使用 PHP CodeIgniter 框架構建的開源線上項目管理軟體應用程式。 它整合了所有有用的功能,可以提高團隊和項目的生產力和管理。

    例如項目管理和合作、任務/待辦事項清單、客戶管理、PDF 發票和收據、使用者管理以及易於追蹤和管理項目所花費的時間。

    訪問: Cyber​​ience

    14 Devalot – 基於 Rails 的項目管理軟體

    Devalot 是一種新的 基於 Rails 的軟體項目管理工具 ,可讓您與開發社區聯繫以改善溝通和合作。

    特徵:-

    1. 處理您的軟體項目的所有基本功能
    2. 包括追蹤修訂歷史記錄的 Wiki 頁面
    3. 用於發佈項目新聞和文章的部落格系統
    4. 用於追蹤錯誤和功能請求的票務系統
    5. 會員名單
    6. 可定制的 CSS 檔案

    訪問: 德瓦洛

    15 Dotproject – 多使用者項目管理軟體

    Dotproject 是一個 BSD 許可的、基於 PHP-MySQL 的多使用者項目管理工具。 它提供公司、項目、任務(支援甘特圖)、論壇、檔案、日曆、聯繫人、票證/幫助台、多語系支援、使用者/模組權限和主題所需的所有模組。

    訪問: dotProject

    16 Endeavor Agile ALM

    Endeavor Agile ALM 是一種高效的基於 Web 的開源項目管理工具,用於管理大型企業。 它為日常敏捷軟體開發流程提供支援,特別關注案例驅動方法的使用。

    訪問: Endeavor Agile ALM

    17 TaskJuggler – Linux 項目管理軟體

    TaskJuggler 是一個基於 Linux 的 GPL 許可的開源項目管理工具。 該軟體使用 QT 工具包和 KDE 庫以 C++ 進行寫程式。

    該軟體致力於許多項目經理的使用,涵蓋了從第一個想法到項目完成的整個項目管理任務。

    它可以幫助您進行項目規劃、資源配置、成本和收入規劃、風險和溝通管理。

    訪問: TaskJuggler

    18 規劃師

    XPlanner 是一款 項目規劃 和追蹤工具,適用於遵循極限寫程式 (XP) 或 Scrum 的敏捷團隊。

    訪問: XPlanner

    19 WebCollab – Linux 項目管理軟體

    WebCollab 是一種易於使用的基於 Web 的合作工具,用於幫助人們協同工作的項目。 該軟體對於想要在任何規模的組織中追蹤多個項目和許多小任務的人很有幫助。

    訪問: WebColab

    20 Vondle 馮德爾

    Vondle 是一個 100% 基於 SaaS 的項目管理和合作平台,讓您可以完全控制項目。

    它提供了聯繫人、日曆、任務、通信、檢視多種檔案格式和自動化流程等功能,這些都是您可以優化項目的一些示例。

    訪問: 馮德爾

    21 Vision Project – Linux 項目管理軟體

    Vision Project 是一個基於網路的項目管理和問題追蹤工具,支援精益和敏捷的項目管理模式。

    它提供了許多有用的工具,例如任務板、看板、燃盡圖和累積流程圖 (CFD)。 儘管如此,它仍然可以用於傳統的項目管理。

    訪問: Vision Project

    22 Todoyu 東道友

    Todoyu 是一個現代的、引人注目的基於 PHP 的開源項目和任務管理工具。 使用者可以專注於他們的項目,然後讓 Todoyu 在一台裝置上為他們完成其餘的工作:時間追蹤、報告、組織、批准、控制、討論計費等等。

    訪問: Todoyu

    23 Teamwork – Linux 項目管理軟體

    Teamwork 是一款易於使用的基於 Web 的項目管理和團隊合作應用程式,容許項目經理、項目人員和客戶線上合作並提高生產力。 經理可以輕鬆地與團隊和客戶分享他們的想法、訊息、筆記、檔案等。

    參觀: Teamwork

    24 Team Elements

    Team Elements 是一種線上項目管理和合作工具。 它為您提供 wiki 新聞、部落格、項目計劃、作業、團隊成員、共享討論、公告、清單、問題追蹤、文件存儲、全文搜尋、報告和個性化 RSS 源。 它是專業和個人使用者的理想工具,其中每個項目都有自己的一組權限和使用者。

    訪問: Team Elements

    25 Streber – Linux 項目管理軟體

    Streber 是一個用 php5 編寫的免費 wiki 驅動的項目管理工具。 自由職業者和小團隊可以快速設定項目並追蹤任務、問題、錯誤、工作等。

    訪問: Streber

    26 ScrumDo

    ScrumDo 是一個 Scrum/敏捷項目管理工具,用於追蹤待辦事項、規劃迭代、玩規劃撲克以及完成 Scrum。

    訪問: ScrumDo

    27 Planner – Linux 項目管理軟體

    Planner 是一款適用於 Linux 的開源項目管理工具,支援甘特圖、資源配置以及與其他 GNOME 應用程式的整合。

    訪問: Planner

    28 項目碼頭

    ProjectPier 是另一個基於 PHP 的開源項目管理工具,用於通過直觀的 Web 介面管理任務、項目和團隊。

    參觀: ProjectPier

    29 管家計劃

    ProjectButler 也是一個基於 PHP 的多使用者項目管理工具,專為面向項目的公司設計。 該軟體容許所有使用者輕鬆地從網路訪問他們的項目並管理項目、約會、任務、工作清單、客戶、客戶聯繫人、項目進度等。

    訪問: ProjectButler

    30 phpaga – Linux項目管理軟體

    phpaga 是一個基於 Web 的工具,可讓您追蹤項目、任務、發票、報價等,提供高效、集中的模式來掌控您的日常工作和活動。

    訪問: phpaga

    結論:

    總之,選取合適的 Linux 項目管理軟體需要仔細考慮各種因素。 通過評估您的項目需求、考慮特性和功能、評估使用者介面和可用性、檢查整合功能、定制選項、社區和支援、安全和資料隱私措施、成本和許可以及使用者評論,您可以做出明智的決定。

    找到符合您的特定項目需求並提供必要特性和功能的 Linux 項目管理軟體至關重要。 使用者友好的介面以及與其他工具的無縫整合可以增強合作並簡化您的工作流程。 自訂選項容許您定制軟體以符合您的項目工作流程,而強大的社區和可靠的支援可確保您擁有所需的資源和幫助。

    安全和資料隱私考慮對於保護您的項目資料並遵守您的組織可能有的任何特定要求至關重要。 評估成本和許可模式可幫助您確定最適合您的預算並物有所值的軟體。

    通過仔細評估您的合作需求、考慮可用選項並優先考慮對您的項目最重要的因素,您可以自信地選取合適的 Linux 項目管理軟體。 請記住收集其他使用者和組織的反饋,以深入了解他們使用該軟體的體驗。

    最終,選取正確的 Linux 項目管理軟體使您能夠有效地管理項目、改善合作並取得成功的結果。

    日程磁碟管理中,我們最常用的有檢視現用的磁碟使用情況,檢視現用的目錄所佔大小,以及打包壓縮與解壓縮。

    1. 檢視磁碟空間

    檢視磁碟空間利用大小:

    df -h
    

    -h: human縮寫,以易讀的模式顯示結果(即帶單位:比如M/G,如果不加這個參數,顯示的數字以B為單位)

    $df -h
    /opt/app/todeav/config#df -h
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup00-LogVol00
    2.0G  711M  1.2G  38% /
    /dev/mapper/vg1-lv2    20G  3.8G   15G  21% /opt/applog
    /dev/mapper/vg1-lv1    20G   13G  5.6G  70% /opt/app
    

    檢視現用的目錄所佔空間大小:

    du -sh
    
    • -h 人性化顯示
    • -s 遞歸整個目錄的大小
    $du -sh
    653M
    

    檢視現用的目錄下所有子資料夾排序後的大小:

    for i in `ls`; do du -sh $i; done | sort
    或是:
    du -sh `ls` | sort
    

    2. 打包/ 壓縮

    在linux中打包和壓縮和分兩步來實現的;

    打包

    打包是將多個檔案歸並到一個檔案:

    tar -cvf etc.tar /etc <==僅打包,不壓縮!
    
    • -c :打包選項
    • -v :顯示打包進度
    • -f :使用檔案檔案

    註:有的系統中指定參數時不需要在前面加上-,直接使用tar xvf

    示例:用tar實現資料夾同步,排除部分檔案不同步:

    tar --exclude '*.svn' -cvf - /path/to/source | ( cd /path/to/target; tar -xf -)
    

    壓縮

    $gzip demo.txt
    

    生成 demo.txt.gz

    3. 解包/解壓縮

    解包

    tar -xvf demo.tar
    

    -x 解包選項

    解壓副檔名為 .tar.gz的檔案 1. 先解壓縮,生成**.tar:

    $gunzip    demo.tar.gz
    
    1. 解包:

      $tar -xvf  demo.tar
      $bzip2 -d demo.tar.bz2
      

    bz2解壓:

    tar jxvf demo.tar.bz2
    

    如果tar 不支援j,則同樣需要分兩步來解包解壓縮,使用bzip2來解壓,再使用tar解包:

    bzip2 -d  demo.tar.bz2
    tar -xvf  demo.tar
    

    -d decompose,解壓縮

    tar解壓參數說明:

    • -z 解壓gz檔案
    • -j 解壓bz2檔案
    • -J 解壓xz檔案

    4. 補充說明:

    檢視磁碟空間 df -h

    檢視目錄大小 du -sh

    打包 tar -cvf

    解包 tar -xvf

    壓縮 gzip

    解壓縮 gunzip bzip

    Linux 中的磁碟管理 – 了解基本概念

    本文向您介紹 Linux 中的磁碟管理,以了解基本的磁碟管理概念。 讓我們討論一下分區、命名約定、分區類型、主分區、擴展分區、邏輯分區、檔案系統。

    在下一篇文章中,我們向您解釋了 如何在 Linux 中使用 fdisk 建立和刪除分區。

     

    什麼是磁碟分區?

    磁碟分區是指使用分區編輯器(例如fdisk、parted工具)將單個硬碟劃分為多個邏輯磁碟機。 一旦磁碟被劃分為多個分區,不同類別的目錄和檔案就可能存儲在不同的分區中。

    許多新的 Linux 管理員只建立兩個分區 /(根)並交換整個硬碟機。 所以linux的所有其他目錄如/usr、/var、/bin都將在這個/(root)下建立。 稍後可能需要為這些目錄或其他安裝點建立新分區,因此管理員應該能夠使用分區編輯器手動建立新分區。

    在 Linux 中,分區由裝置檔案表示。 這些裝置檔案位於/dev 中。 下面列出了一些示例檔案。

    [root@node1 ~]# ll /dev/

    brw-rw—- 1 根磁碟 3, 0 May 5 1998 hda
    brw-rw—- 1 根磁碟 8, 0 May 5 1998 sda
    crw—– 1 root tty 4, 64 1998 年 5 月 5 日 ttyS0

    檢視輸出中兩行的第一個整數,前兩行以“b”開頭,它們是塊裝置(hda 和 sda)。 在 Linux 中,所有磁碟都僅表示為塊裝置。

     

    命名約定

    Linux 保留了 IDE 磁碟機和 SCSI 磁碟的命名約定。

    1. IDE 磁碟機裝置名稱為 /dev/hda、/dev/hdb。

    /dev/hda – “a”指的是它的第一個磁碟機。
    /dev/hdb – “b”指的是第二個磁碟機。
    /dev/hdc – “c”指的是第三個磁碟機。
    /dev/hdd – “d”指的是第四個磁碟機。

    2. SCSI 磁碟機裝置名稱為 /dev/sda、/dev/sdb。
    SCSI 磁碟機遵循類似的模式; 它們由“sd”而不是“hd”表示。

    /dev/sda – “a”指的是它的第一個磁碟機。
    /dev/sdb – “b”指的是第二個磁碟機。

    對磁碟機進行分區後,分區將在名稱末尾表示為數字。

    例如,假設我們有兩個 IDE 磁碟機,其分區如下。

    /dev/hda1 – 第一個磁碟機的第一個分區。
    /dev/hda2 – 第一個磁碟機的第二個分區。
    /dev/hdb1 – 第二個磁碟機的第一個分區。
    /dev/hdb2 – 第二個磁碟機的第二個分區。

    這就是我們處理 Linux 磁碟裝置檔案所需要知道的一切。

     

    分區類型

    1. 主分區 – 分區的數量從一開始就受到限制,我們只能有四個分區。 這些分區現在稱為主分區。
    2. 擴展分區 – 擴展分區是克服磁碟機上四個主分區限制的一種方法。 如果你想要有四個以上的分區,你可以在裡面放很多分區。
    3. 邏輯分區 – 邏輯分區是在擴展分區內建立的分區。

    在Linux中,分區被標示為託管某種檔案系統。

     

    什麼是檔案系統?

    檔案系統是操作系統用來追蹤磁碟或分區上的檔案的方法和資料結構; 即檔案在磁碟上的組織模式。 該詞還用於指用於存儲檔案或檔案系統類型的分區或磁碟。

    這樣的檔案系統可以是linux標準ext3檔案系統、ext4檔案系統、linux交換分區或其他檔案系統。 每個事物都有一個關聯的數字代碼。 例如,linux檔案系統的代碼是0x83,linux交換區的代碼是0x82。 運行“/sbin/sfdisk -T”檢視分區類型及其代碼清單,執行/sbin/sfdisk -T

    希望您從基本概念中了解 Linux 中的磁碟管理。

    本節將介紹Linux下使用Shell處理文字時最常用的工具: find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk; 提供的例子和參數都是常用的。

    我對shell腳本使用的原則是指令單行書寫,盡量不要超過2行; 如果有更為複雜的任務需求,還是考慮python吧。

    1. find 檔案搜尋

    搜尋txt和pdf檔案:

    find . \( -name "*.txt" -o -name "*.pdf" \) -print
    

    正則模式搜尋.txt和pdf:

    find . -regex  ".*\(\.txt|\.pdf\)$"
    

    -iregex: 忽略大小寫的正則

    否定參數 ,搜尋所有非txt文字:

    find . ! -name "*.txt" -print
    

    指定搜尋深度,列印出現用的目錄的檔案(深度為1):

    find . -maxdepth 1 -type f
    

    定制搜尋

    • 按類型搜尋
    find . -type d -print  //只列出所有目錄
    

    -type f 檔案 / l 符號連結 / d 目錄

    find支援的檔案檢索類型可以區分普通檔案和符號連結、目錄等,但是二進位檔案和文字檔案無法直接通過find的類型區分出來;

    file指令可以檢查檔案具體類型(二進位或文字):

    $file redis-cli  # 二進位檔案
    redis-cli: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
    $file redis.pid  # 文字檔案
    redis.pid: ASCII text
    

    所以,可以用以下指令組合來實現搜尋本地目錄下的所有二進位檔案:

    ls -lrt | awk '{print $9}'|xargs file|grep  ELF| awk '{print $1}'|tr -d ':'
    
    • 按時間搜尋
      • -atime 訪問時間 (單位是天,分鐘單位則是-amin,以下類似)
      • -mtime 修改時間 (內容被修改)
      • -ctime 變化時間 (元資料或權限變化)

    最近第7天被訪問過的所有檔案:

    find . -atime 7 -type f -print
    

    最近7天內被訪問過的所有檔案:

    find . -atime -7 -type f -print
    

    查詢7天前被訪問過的所有檔案:

    find . -atime +7 type f -print
    
    • 按大小搜尋:

    w字 k M G 尋找大於2k的檔案:

    find . -type f -size +2k
    

    按權限搜尋:

    find . -type f -perm 644 -print //找具有可執行權限的所有檔案
    

    按使用者搜尋:

    find . -type f -user weber -print// 找使用者weber所擁有的檔案
    

    找到後的後續動作

    • 刪除

    刪除現用的目錄下所有的swp檔案:

    find . -type f -name "*.swp" -delete
    

    另一種語法:

    find . type f -name "*.swp" | xargs rm
    
    • 執行動作(強大的exec)

    將現用的目錄下的所有權變更為weber:

    find . -type f -user root -exec chown weber {} \;
    

    註:{}是一個特殊的字串,對於每一個符合的檔案,{}會被置換成相應的檔名;

    將找到的檔案全都copy到另一個目錄:

    find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD \;
    
    • 結合多個指令

    如果需要後續執行多個指令,可以將多個指令寫成一個腳本。然後 -exec 呼叫時執行腳本即可:

    -exec ./commands.sh {} \;
    

    -print的定界符

    預設使用’\n’作為檔案的定界符;

    -print0 使用’\0’作為檔案的定界符,這樣就可以搜尋包括空格的檔案;

    2. grep 文字搜尋

    grep match_patten file // 預設訪問符合行
    

    常用參數

    • -o 只輸出符合的文字行 VS -v 只輸出沒有符合的文字行
    • -c 統計檔案中包括文字的次數
      grep -c “text” filename
    • -n 列印符合的行號
    • -i 搜尋時忽略大小寫
    • -l 只列印檔名

    在多級目錄中對文字遞歸搜尋(程式員搜代碼的最愛):

    grep "class" . -R -n
    

    符合多個模式:

    grep -e "class" -e "vitural" file
    

    grep輸出以0作為結尾符的檔名(-z):

    grep "test" file* -lZ| xargs -0 rm
    

    綜合應用:將日誌中的所有帶where條件的sql搜尋搜尋出來:

    cat LOG.* | tr a-z A-Z | grep "FROM " | grep "WHERE" > b
    

    搜尋中文示例:專案目錄中utf-8格式和gb2312格式兩種檔案,要搜尋字的是中文;

    1. 搜尋到它的utf-8編碼和gb2312編碼分別是E4B8ADE69687和D6D0CEC4

    2. 查詢:

      grep:grep -rnP "\xE4\xB8\xAD\xE6\x96\x87|\xD6\xD0\xCE\xC4" *即可
      

     

    3. xargs 指令行參數轉換

    xargs 能夠將輸入資料轉化為特定指令的指令行參數;這樣,可以配合很多指令來組合使用。比如grep,比如find; – 將多行輸出轉化為單行輸出

    cat file.txt| xargs
    

    n 是多行文字間的定界符

    • 將單行轉化為多行輸出
    cat single.txt | xargs -n 3
    

    -n:指定每行顯示的欄位數

    xargs參數說明

    • -d 定義定界符 (預設為空格 多行的定界符為 n)
    • -n 指定輸出為多行
    • -I {} 指定置換字串,這個字串在xargs擴展時會被置換掉,用於待執行的指令需要多個參數時
    • -0:指定0為輸入定界符

    示例:

    cat file.txt | xargs -I {} ./command.sh -p {} -1
    
    #統計程式行數
    find source_dir/ -type f -name "*.cpp" -print0 |xargs -0 wc -l
    
    #redis通過string存儲資料,通過set存儲索引,需要通過索引來查詢出所有的值:
    ./redis-cli smembers $1  | awk '{print $1}'|xargs -I {} ./redis-cli get {}
    

    4. sort 排序

    欄位說明

    • -n 按數字進行排序 VS -d 按字典序進行排序
    • -r 逆序排序
    • -k N 指定按第N列排序

    示例:

    sort -nrk 1 data.txt
    sort -bd data // 忽略像空格之類的前導空白字元
    

    5. uniq 消除重複行

    • 消除重複行
    sort unsort.txt | uniq
    
    • 統計各行在檔案中出現的次數
    sort unsort.txt | uniq -c
    
    • 找出重複行
    sort unsort.txt | uniq -d
    

    可指定每行中需要比較的重複內容:-s 開始位置 -w 比較字元數

    6. 用tr進行轉換

    • 通用用法
    echo 12345 | tr '0-9' '9876543210' //加解密轉換,置換對應字元
    cat text| tr '\t' ' '  //製表符轉空格
    
    • tr刪除字元
    cat file | tr -d '0-9' // 刪除所有數字
    

    -c 求補集

    cat file | tr -c '0-9' //取得檔案中所有數字
    cat file | tr -d -c '0-9 \n'  //刪除非數字資料
    
    • tr壓縮字元

    tr -s 壓縮文字中出現的重複字元;最常用於壓縮多餘的空格:

    cat file | tr -s ' '
    
    • 字元類
    tr中可用各種字元類:
    • alnum:字母和數字
    • alpha:字母
    • digit:數字
    • space:空白字元
    • lower:小寫
    • upper:大寫
    • cntrl:控制(非可列印)字元
    • print:可列印字元

    使用方法:tr [:class:] [:class:]

    tr '[:lower:]' '[:upper:]'
    

    7. cut 按列切分文字

    • 截取檔案的第2列和第4列
    cut -f2,4 filename
    
    • 去檔案除第3列的所有列
    cut -f3 --complement filename
    
    • -d 指定定界符
    cat -f2 -d";" filename
    
    • cut 取的範圍
      • N- 第N個欄位到結尾
      • -M 第1個欄位為M
      • N-M N到M個欄位
    • cut 取的單位
      • -b 以位元組為單位
      • -c 以字元為單位
      • -f 以欄位為單位(使用定界符)

    示例:

    cut -c1-5 file //列印第一到5個字元
    cut -c-2 file  //列印前2個字元
    

    截取文字的第5到第7列

    $echo string | cut -c5-7
    

    8. paste 按列拼接文字

    將兩個文字按列拼接到一起;

    cat file1
    1
    2
    
    cat file2
    colin
    book
    
    paste file1 file2
    1 colin
    2 book
    

    預設的定界符是製表符,可以用-d指明定界符:

    paste file1 file2 -d ","
    1,colin
    2,book
    

    9. wc 統計行和字元的工具

    $wc -l file // 統計行數
    
    $wc -w file // 統計單詞數
    
    $wc -c file // 統計字元數
    

    10. sed 文字置換利器

    • 首處置換
    sed 's/text/replace_text/' file   //置換每一行的第一處符合的text
    
    • 全局置換
    sed 's/text/replace_text/g' file
    

    預設置換後,輸出置換後的內容,如果需要直接置換原檔案,使用-i:

    sed -i 's/text/repalce_text/g' file
    
    • 移除空白行
    sed '/^$/d' file
    
    • 變量轉換

    已符合的字串通過標示&來引用.

    echo this is en example | sed 's/\w+/[&]/g'
    $>[this]  [is] [en] [example]
    
    • 子串符合標示

    第一個符合的括號內容使用標示 1 來引用

    sed 's/hello\([0-9]\)/\1/'
    
    • 雙引號求值

    sed通常用單引號來引用;也可使用雙引號,使用雙引號後,雙引號會對表達式求值:

    sed 's/$var/HLLOE/'
    

    當使用雙引號時,我們可以在sed樣式和置換字串中指定變量;

    eg:
    p=patten
    r=replaced
    echo "line con a patten" | sed "s/$p/$r/g"
    $>line con a replaced
    
    • 其它示例

    字串插入字元:將文字中每行內容(ABCDEF) 轉換為 ABC/DEF:

    sed 's/^.\{3\}/&\//g' file
    

    11. awk 資料流處理工具

    • awk腳本結構
    awk ' BEGIN{ statements } statements2 END{ statements } '
    
    • 工作模式

    1.執行begin中語句塊;

    2.從檔案或stdin中讀入一行,然後執行statements2,重複這個過程,直到檔案全部被讀取完畢;

    3.執行end語句塊;

    print 列印現用的行

    • 使用不帶參數的print時,會列印現用的行
    echo -e "line1\nline2" | awk 'BEGIN{print "start"} {print } END{ print "End" }'
    
    • print 以逗號分割時,參數以空格定界;
    echo | awk ' {var1 = "v1" ; var2 = "V2"; var3="v3"; \
    print var1, var2 , var3; }'
    $>v1 V2 v3
    
    • 使用-拼接符的模式(”“作為拼接符);
    echo | awk ' {var1 = "v1" ; var2 = "V2"; var3="v3"; \
    print var1"-"var2"-"var3; }'
    $>v1-V2-v3
    

    特殊變量: NR NF $0 $1 $2

    NR:表示記錄數量,在執行過程中對應現用的行號;

    NF:表示欄位數量,在執行過程總對應現用的行的欄位數;

    $0:這個變量包括執行過程中現用的行的文字內容;

    $1:第一個欄位的文字內容;

    $2:第二個欄位的文字內容;

    echo -e "line1 f2 f3\n line2 \n line 3" | awk '{print NR":"$0"-"$1"-"$2}'
    
    • 列印每一行的第二和第三個欄位
    awk '{print $2, $3}' file
    
    • 統計檔案的行數
    awk ' END {print NR}' file
    
    • 累加每一行的第一個欄位
    echo -e "1\n 2\n 3\n 4\n" | awk 'BEGIN{num = 0 ;
    print "begin";} {sum += $1;} END {print "=="; print sum }'
    

    傳遞外部變量

    var=1000
    echo | awk '{print vara}' vara=$var #  輸入來自stdin
    awk '{print vara}' vara=$var file # 輸入來自檔案
    

    用樣式對awk處理的行進行過濾

    awk 'NR < 5' #行號小於5
    awk 'NR==1,NR==4 {print}' file #行號等於1和4的列印出來
    awk '/linux/' #包括linux文字的行(可以用正則表達式來指定,超級強大)
    awk '!/linux/' #不包括linux文字的行
    

    設定定界符

    使用-F來設定定界符(預設為空格):

    awk -F: '{print $NF}' /etc/passwd
    

    讀取指令輸出

    使用getline,將外部shell指令的輸出讀入到變量cmdout中:

    echo | awk '{"grep root /etc/passwd" | getline cmdout; print cmdout }'
    

    在awk中使用迴圈

    for(i=0;i<10;i++){print $i;}
    for(i in array){print array[i];}
    

    eg:以下字串,列印出其中的時間串:

    2015_04_02 20:20:08: mysqli connect failed, please check connect info
    $echo '2015_04_02 20:20:08: mysqli connect failed, please check connect info'|awk -F ":" '{ for(i=1;i<=;i++) printf("%s:",$i)}'
    >2015_04_02 20:20:08:  # 這種模式會將最後一個冒號列印出來
    $echo '2015_04_02 20:20:08: mysqli connect failed, please check connect info'|awk -F':' '{print $1 ":" $2 ":" $3; }'
    >2015_04_02 20:20:08   # 這種模式滿足需求
    

    而如果需要將後面的部分也列印出來(時間部分和後文分開列印):

    $echo '2015_04_02 20:20:08: mysqli connect failed, please check connect info'|awk -F':' '{print $1 ":" $2 ":" $3; print $4;}'
    >2015_04_02 20:20:08
    >mysqli connect failed, please check connect info
    

    以逆序的形式列印行:(tac指令的實現):

    seq 9| \
    awk '{lifo[NR] = $0; lno=NR} \
    END{ for(;lno>-1;lno--){print lifo[lno];}
    } '
    

    awk結合grep找到特殊的服務,然後將其kill掉

    ps -fe| grep msv8 | grep -v MFORWARD | awk '{print $2}' | xargs kill -9;
    

    awk實現head、tail指令

    • head
    awk 'NR<=10{print}' filename
    
    • tail
    awk '{buffer[NR%10] = $0;} END{for(i=0;i<11;i++){ \
    print buffer[i %10]} } ' filename
    

    列印指定列

    • awk模式實現
    ls -lrt | awk '{print $6}'
    
    • cut模式實現
    ls -lrt | cut -f6
    

    列印指定文字區域

    • 確定行號
    seq 100| awk 'NR==4,NR==6{print}'
    
    • 確定文字

    列印處於start_pattern 和end_pattern之間的文字:

    awk '/start_pattern/, /end_pattern/' filename
    

    示例:

    seq 100 | awk '/13/,/15/'
    cat /etc/passwd| awk '/mai.*mail/,/news.*news/'
    

    awk常用內建函數

    index(string,search_string):返回search_string在string中出現的位置

    sub(regex,replacement_str,string):將正則符合到的第一處內容置換為replacement_str;

    match(regex,string):檢查正則表達式是否能夠符合字串;

    length(string):返回字串長度

    echo | awk '{"grep root /etc/passwd" | getline cmdout; print length(cmdout) }'
    

    printf 類似c語系中的printf,對輸出進行格式化:

    seq 10 | awk '{printf "->%4s\n", $1}'
    

    12. 迭代檔案中的行、單詞和字元

    1. 迭代檔案中的每一行

    • while 迴圈法
    while read line;
    do
    echo $line;
    done < file.txt
    
    改成子shell:
    cat file.txt | (while read line;do echo $line;done)
    
    • awk法
    cat file.txt| awk '{print}'
    

    2.迭代一行中的每一個單詞

    for word in $line;
    do
    echo $word;
    done
    

    3. 迭代每一個字元

    ${string:start_pos:num_of_chars}:從字串中提取一個字元;(bash文字切片)

    ${#word}:返回變量word的長度

    for((i=0;i<${#word};i++))
    do
    echo ${word:i:1);
    done
    

    以ASCII字元顯示檔案:

    $od -c filename
    

    檔案管理不外乎檔案或目錄的建立、刪除、查詢、搬移,有mkdir/rm/mv

    檔案查詢是重點,用find來進行查詢;find的參數豐富,也非常強大。

    檢視檔案內容是個大的話題,文字的處理有太多的工具供我們使用,在本章中只是點到即止,後面會有專門的一章來介紹文字的處理工具。

    有時候,需要給檔案建立一個別名,我們需要用到ln,使用這個別名和使用原檔案是相同的效果。

    1. 建立和刪除

    • 建立:mkdir
    • 刪除:rm
    • 刪除非空目錄:rm -rf file目錄
    • 刪除日誌 rm *log (等價: $find ./ -name “*log” -exec rm {} 😉
    • 搬移:mv
    • 複製:cp (複製目錄:cp -r )

    檢視現用的目錄下檔案個數:

    $find ./ | wc -l
    

    複製目錄:

    $cp -r source_dir  dest_dir
    

    2. 目錄切換

    • 找到檔案/目錄位置:cd
    • 切換到上一個工作目錄: cd –
    • 切換到home目錄: cd or cd ~
    • 顯示現用的路徑: pwd
    • 變更現用的工作路徑為path: $cd path

    3. 列出目錄項

    • 顯示現用的目錄下的檔案 ls
    • 按時間排序,以清單的模式顯示目錄項 ls -lrt

    以上這個指令用到的頻率如此之高,以至於我們需要為它建立一個快捷指令模式:

    在.bashrc 中設定指令別名:

    alias lsl='ls -lrt'
    alias lm='ls -al|more'
    

    這樣,使用lsl,就可以顯示目錄中的檔案按照修改時間排序;以清單模式顯示;

    • 給每項檔案前面增加一個id編號(看上去更加整潔):

      >ls | cat -n
      

      1 a 2 a.out 3 app 4 b 5 bin 6 config

    註:.bashrc 在/home/你的使用者名/ 資料夾下,以隱藏檔案的模式存儲;可使用 ls -a 檢視;

    4. 搜尋目錄及檔案 find/locate

    搜尋檔案或目錄:

    $find ./ -name "core*" | xargs file
    

    搜尋目的資料夾中是否有obj檔案:

    $find ./ -name '*.o'
    

    遞歸現用的目錄及子目錄刪除所有.o檔案:

    $find ./ -name "*.o" -exec rm {} \;
    

    find是實時搜尋,如果需要更快的查詢,可試試locate;locate會為檔案系統建立索引資料庫,如果有檔案更新,需要定期執行更新指令來更新索引庫:

    $locate string
    

    尋找包括有string的路徑:

    $updatedb
    

    與find不同,locate並不是實時搜尋。你需要更新資料庫,以獲得最新的檔案索引訊息。

    5. 檢視檔案內容

    檢視檔案:cat vi head tail more

    顯示時同時顯示行號:

    $cat -n
    

    按頁顯示清單內容:

    $ls -al | more
    

    只看前10行:

    $head - 10 **
    

    顯示檔案第一行:

    $head -1 filename
    

    顯示檔案倒數第五行:

    $tail -5 filename
    

    檢視兩個檔案間的差別:

    $diff file1 file2
    

    動態顯示文字最新訊息:

    $tail -f crawler.log
    

    6. 搜尋檔案內容

    使用egrep查詢檔案內容:

    egrep '03.1\/CO\/AE' TSF_STAT_111130.log.012
    egrep 'A_LMCA777:C' TSF_STAT_111130.log.035 > co.out2
    

    7. 檔案與目錄權限修改

    • 改變檔案的擁有者 chown
    • 改變檔案讀、寫、執行等屬性 chmod
    • 遞歸子目錄修改: chown -R tuxapp source/
    • 增加腳本可執行權限: chmod a+x myscript

    8. 給檔案增加別名

    建立符號連結/硬連結:

    ln cc ccAgain :硬連線;刪除一個,將仍能找到;
    ln -s cc ccTo :符號連結(軟連結);刪除源,另一個無法使用;(後面一個ccTo 為新增的檔案)
    

    9. 管道和重定向

    • 批處理指令連線執行,使用 |
    • 串聯: 使用分號 ;
    • 前面成功,則執行後面一條,否則,不執行:&&
    • 前面失敗,則後一條執行: ||
    ls /proc && echo  suss! || echo failed.
    

    能夠提示命名是否執行成功or失敗;

    與上述相同效果的是:

    if ls /proc; then echo suss; else echo fail; fi
    

    重定向:

    ls  proc/*.c > list 2> &l 將標準輸出和標準錯誤重導至同一檔案;
    

    等價的是:

    ls  proc/*.c &> list
    

    清理檔案:

    :> a.txt
    

    重定向:

    echo aa >> a.txt
    

    10. 設定環境變量

    啟動帳號後自動執行的是 檔案為 .profile,然後通過這個檔案可設定自己的環境變量;

    安裝的軟體路徑一般需要加入到path中:

    PATH=$APPDIR:/opt/app/soft/bin:$PATH:/usr/local/bin:$TUXDIR/bin:$ORACLE_HOME/bin;export PATH
    

    11. Bash快捷輸入或刪除

    快捷鍵:

    Ctl-U   刪除游標到行首的所有字元,在某些設定下,刪除全行
    Ctl-W   刪除現用的游標到前邊的最近一個空格之間的字元
    Ctl-H   backspace,刪除游標前邊的字元
    Ctl-R   符合最相近的一個檔案,然後輸出
    

    12. 綜合應用

    搜尋record.log中包括AAA,但不包括BBB的記錄的總數:

    cat -v record.log | grep AAA | grep -v BBB | wc -l
    

    13. 總結

    檔案管理,目錄的建立、刪除、查詢、管理: mkdir rm mv

    檔案的查詢和檢索: find locate

    檢視檔案內容:cat vi tail more

    管道和重定向: ; | && >

    Linux系統中的wget是一個下載檔案的工具,它用在指令行下。對於Linux使用者是必不可少的工具,我們經常要下載一些軟體或從遠端伺服器恢復備份到本地伺服器。wget支援HTTP,HTTPS和FTP協定,可以使用HTTP代理。

    wget 可以追蹤HTML頁面上的連結依次下載來建立遠端伺服器的本地版本,完全重建原始站台的目錄結構。這又常被稱作”遞歸下載”。在遞歸下載的時候,wget 遵循Robot Exclusion標準(/robots.txt). wget可以在下載的同時,將連結轉換成指向本地檔案,以方便離線瀏覽。

    wget 非常穩定,它在頻寬很窄的情況下和不穩定網路中有很強的適應性.如果是由於網路的原因下載失敗,wget會不斷的嘗試,直到整個檔案下載完畢。如果是伺服器打斷下載過程,它會再次聯到伺服器上從停止的地方繼續下載。這對從那些限定了連結時間的伺服器上下載大檔案非常有用。

    17.1. 指令格式

    wget [參數] [URL位址]

    17.2. 指令參數:

    啟動參數:

    • -V, –version 顯示wget的版本後離開
    • -h, –help 列印語法幫助
    • -b, –background 啟動後轉入後台執行
    • -e, –execute=COMMAND 執行’.wgetrc’格式的指令,wgetrc格式參見/etc/wgetrc或~/.wgetrc

    記錄和輸入檔案參數

    • -o, –output-file=FILE 把記錄寫到FILE檔案中
    • -a, –append-output=FILE 把記錄追加到FILE檔案中
    • -d, –debug 列印除錯輸出
    • -q, –quiet 安靜模式(沒有輸出)
    • -v, –verbose 冗長模式(這是預設設定)
    • -nv, –non-verbose 關掉冗長模式,但不是安靜模式
    • -i, –input-file=FILE 下載在FILE檔案中出現的URLs
    • -F, –force-html 把輸入檔案當作HTML格式檔案對待
    • -B, –base=URL 將URL作為在-F -i參數特殊的檔案中出現的相對連結的首碼

    –sslcertfile=FILE 可選用戶端證書 –sslcertkey=KEYFILE 可選用戶端證書的KEYFILE –egd-file=FILE 指定EGD socket的檔名

    下載參數

    • -bind-address=ADDRESS 指定本地使用位址(主機名或IP,當本地有多個IP或名字時使用)
    • -t, –tries=NUMBER 設定最大嘗試連結次數(0 表示無限制).
    • -O –output-document=FILE 把文件寫到FILE檔案中
    • -nc, –no-clobber 不要覆蓋存在的檔案或使用.#首碼
    • -c, –continue 接著下載沒下載完的檔案
    • -progress=TYPE 設定程式條標示
    • -N, –timestamping 不要重新下載檔案除非比本地檔案新
    • -S, –server-response 列印伺服器的回應
    • -T, –timeout=SECONDS 設定響應逾時的秒數
    • -w, –wait=SECONDS 兩次嘗試之間間隔SECONDS秒
    • -waitretry=SECONDS 在重新連結之間等待1…SECONDS秒
    • -random-wait 在下載之間等待0…2*WAIT秒
    • -Y, -proxy=on/off 開啟或關閉代理
    • -Q, -quota=NUMBER 設定下載的容量限制
    • -limit-rate=RATE 限定下載輸率

    目錄參數

    • -nd –no-directories 不建立目錄
    • -x, –force-directories 強制建立目錄
    • -nH, –no-host-directories 不建立主機目錄
    • -P, –directory-prefix=PREFIX 將檔案儲存到目錄 PREFIX/…
    • -cut-dirs=NUMBER 忽略 NUMBER層遠端目錄

    HTTP 選項參數

    • -http-user=USER 設定HTTP使用者名為 USER.
    • -http-passwd=PASS 設定http密碼為 PASS
    • -C, –cache=on/off 容許/不容許伺服器端的資料快取 (一般情況下容許)
    • -E, –html-extension 將所有text/html文件以.html副檔案名儲存
    • -ignore-length 忽略 ‘Content-Length’頭域
    • -header=STRING 在headers中插入字串 STRING
    • -proxy-user=USER 設定代理的使用者名為 USER
    • proxy-passwd=PASS 設定代理的密碼為 PASS
    • referer=URL 在HTTP請求中包括 ‘Referer: URL’頭
    • -s, –save-headers 儲存HTTP頭到檔案
    • -U, –user-agent=AGENT 設定代理的名稱為 AGENT而不是 Wget/VERSION
    • no-http-keep-alive 關閉 HTTP活動連結 (永遠連結)
    • cookies=off 不使用 cookies
    • load-cookies=FILE 在開始會話前從檔案 FILE中加載cookie
    • save-cookies=FILE 在會話結束後將 cookies儲存到 FILE檔案中

    FTP 選項參數

    • -nr, –dont-remove-listing 不移走 ‘.listing’檔案
    • -g, –glob=on/off 開啟或關閉檔名的 globbing機制
    • passive-ftp 使用被動傳輸模式 (預設值).
    • active-ftp 使用主動傳輸模式
    • retr-symlinks 在遞歸的時候,將連結指向檔案(而不是目錄)

    遞歸下載參數

    • -r, –recursive 遞歸下載--慎用!
    • -l, –level=NUMBER 最大遞歸深度 (inf 或 0 代表無窮)
    • -delete-after 在現在完畢後局部刪除檔案
    • -k, –convert-links 轉換非相對連結為相對連結
    • -K, –backup-converted 在轉換檔案X之前,將之備份為 X.orig
    • -m, –mirror 等價於 -r -N -l inf -nr
    • -p, –page-requisites 下載顯示HTML檔案的所有圖片
      遞歸下載中的包括和不包括(accept/reject):
    • -A, –accept=LIST 分號分隔的被接受副檔案名的清單
    • -R, –reject=LIST 分號分隔的不被接受的副檔案名的清單
    • -D, –domains=LIST 分號分隔的被接受域的清單
    • -exclude-domains=LIST 分號分隔的不被接受的域的清單
    • -follow-ftp 追蹤HTML文件中的FTP連結
    • -follow-tags=LIST 分號分隔的被追蹤的HTML標籤的清單
    • -G, –ignore-tags=LIST 分號分隔的被忽略的HTML標籤的清單
    • -H, –span-hosts 當遞歸時轉到外部主機
    • -L, –relative 僅僅追蹤相對連結
    • -I, –include-directories=LIST 容許目錄的清單
    • -X, –exclude-directories=LIST 不被包括目錄的清單
    • -np, –no-parent 不要追溯到父目錄

    wget -S –spider url 不下載只顯示過程

    17.3. 使用案例

    案例1:使用wget下載單個檔案

    $wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip
    

    說明:以上例子從網路下載一個檔案並儲存在現用的目錄,在下載的過程中會顯示進度條,包括(下載完成百分比,已經下載的位元組,現用的下載速度,剩餘下載時間)。

    案例2:使用wget -O下載並以不同的檔名儲存

    $wget -O wordpress.zip http://www.minjieren.com/download.aspx?id=1080
    

    wget預設會以最後一個符合”/”的後面的字元來指令,對於動態連結的下載通常檔名會不正確。

    案例3:使用wget –limit -rate限速下載

    $wget --limit-rate=300k http://www.minjieren.com/wordpress-3.1-zh_CN.zip
    

    當你執行wget的時候,它預設會佔用全部可能的寬頻下載。但是當你準備下載一個大檔案,而你還需要下載其它檔案時就有必要限速了。

    案例4:使用wget -c斷點續傳

    $wget -c http://www.minjieren.com/wordpress-3.1-zh_CN.zip
    

    使用wget -c重新啟動下載中斷的檔案,對於我們下載大檔案時突然由於網路等原因中斷非常有幫助,我們可以繼續接著下載而不是重新下載一個檔案。需要繼續中斷的下載時可以使用-c參數。

    案例5:使用wget -b後台下載

    $wget -b http://www.minjieren.com/wordpress-3.1-zh_CN.zip
    Continuing in background, pid 1840.
    Output will be written to 'wget-log'.
    

    對於下載非常大的檔案的時候,我們可以使用參數-b進行後台下載。

    你可以使用以下指令來察看下載進度:

    $tail -f wget-log
    

    案例6:偽裝代理名稱下載

    wget --user-agent="Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16" http://www.minjieren.com/wordpress-3.1-zh_CN.zip
    

    有些網站能通過根據判斷代理名稱不是瀏覽器而拒絕你的下載請求。不過你可以通過–user-agent參數偽裝。

    案例7:使用wget -i下載多個檔案

    首先,儲存一份下載連結檔案,接著使用這個檔案和參數-i下載:

    $cat > filelist.txt
    url1
    url2
    url3
    url4
    
    $wget -i filelist.txt
    

    案例8:使用wget –mirror對映網站

    $wget --mirror -p --convert-links -P ./LOCAL URL
    
    下載整個網站到本地
    • -miror:開戶對映下載
    • -p:下載所有為了html頁面顯示標準的檔案
    • -convert-links:下載後,轉換成本地的連結
    • -P ./LOCAL:儲存所有檔案和目錄到本地指定目錄

    案例9: 使用wget -r -A下載指定格式檔案

    $wget -r -A.pdf url
    
    可以在以下情況使用該功能:
    • 下載一個網站的所有圖片
    • 下載一個網站的所有視訊
    • 下載一個網站的所有PDF檔案

    案例10:使用wget FTP下載

    $wget ftp-url
    $wget --ftp-user=USERNAME --ftp-password=PASSWORD url
    
    可以使用wget來完成ftp連結的下載
    • 使用wget匿名ftp下載:wget ftp-url
    • 使用wget使用者名和密碼認證的ftp下載:wget –ftp-user=USERNAME –ftp-password=PASSWORD url

    17.4. 編譯安裝

    使用如下指令編譯安裝:

    tar zxvf wget-1.9.1.tar.gz
    cd wget-1.9.1
    ./configure
    make
    make install
    

    SCP   (安全複製協定) 是一種網路協定,用於 Linux ( Unix 在網路上的 ) 系統之間安全地複製檔案/資料夾。 要傳輸,請使用 scp指令行實用程式, cp(複製)指令 的更安全變體。

    連線複製時保護您的資料 ,在通過SSH(安全外殼) SCP通過加密檔案和 密碼 。 因此,即使流量被攔截,訊息仍然是加密的。

    在以下情況下使用 SCP:

    • 將檔案從 本地主機 複製到遠端主機。
    • 將檔案從遠端主機複製到本地主機。
    • 之間複製檔案 在兩個遠端伺服器 。

    本指南向您展示如何 使用 SCP 指令複製檔案,並內含 13 個實際使用的指令示例

    如何使用SCP命令傳輸和復製文件。

    先決條件

    • 伺服器上的安全 shell 登入
    • (可選)用戶端和伺服器上的根訪問權限
    • 伺服器系統上的安全 shell 登入

    SCP 指令語法

    使用的語法 scp指令是:

    scp [option] [user_name@source_host:path/to/source/file] [user_name@target_host:target/path] 

    如果省略:

    • ,該指令預設為現用的使用者。 使用者名 主機(或目的)的
    • 複製 檔案 指令中的 path/to/source (或 target/path ),程式在本地搜尋(或

    使用遠端檔案時,請始終指定使用者和主機規範。

    確保使用對要在源系統上複製的檔案具有讀取權限的帳戶。 此外,您需要使用對 具有寫入權限的帳戶。 目的系統上儲存檔案的目錄

    scp指令在寫入之前不檢查目的位置。 目的中任何同名的檔案都將被覆蓋,恕不另行知會。

    SCP 指令選項

    可以加入很多 scp指令選項可自訂並加速該過程。 選項作為屬性加入在 scp指令。

    每個選項都有一個簡短的單字元形式和一個較長的描述性等效形式。

    -1 使用協定 1。
    -2 使用協定 2。
    -4 僅使用 Ipv4 位址。
    -6 僅使用 IPv6 位址。
    -B 以批處理模式運行,禁用對使用者輸入的所有查詢。
    -b buffer_size 指定用於資料傳輸的緩衝區大小。 如果未指定,則使用預設值 – 32768 位元組。
    -C 啟用壓縮。
    -c cipher 選取 資料加密的密碼 。 如果未指定,SCP 將使用預設值 – ‘AnyStdCipher’。
    -D debug_level 設定除錯層級(1、2、3 或 99)。
    -d 僅當目的目錄已存在時才複製檔案。
    -F file 的替代配置檔 指定SSH
    -h 顯示指令選項清單。
    -i file 指定從中讀取身份以進行公鑰身份驗證的檔案。
    -l limit 限制 頻寬 ( 以 Kbit/s為單位指定限制 )。
    -o ssh_option 以 ssh_config 格式將選項設定為 SSH。
    -P port 指定 連接埠 要連線的 。 如果未指定,SCP 使用連接埠 22。
    -q 在安靜模式下運行 SCP。
    -Q 禁用顯示任何檔案傳輸統計訊息。
    -r 遞歸複製。
    -S program 使用特殊的程式進行加密連線。
    -u 複製完成後刪除源檔案。
    -v 啟用詳細模式,將除錯層級設定為 2。

    SCP 指令示例

    為了更好地理解這個有用的實用程式,請檢視以下內容 scp指令示例。

    將檔案從本地複製到遠端伺服器

    在下面的示例中,我們將示例檔案從本地主機複製到遠端伺服器:

    scp Desktop/sample_example.txt root@136.183.142.28:/home/remote_dir 

    該指令包括以下訊息:

    • Desktop/sample_example.txt– 正在複製的檔案的名稱及其位置。
    • root@136.183.142.27使用者名和 IP位址。 -遠端伺服器的
    • /home/remote_dir– 存儲複製檔案的位置。
    使用 scp 命令將文件從本地服務器複製到遠程服務器。

    將檔案從遠端伺服器複製到本地主機

    要將示例檔案從遠端主機複製到本地主機,我們運行:

    scp 147.182.143.27:/home/remote_dir/sample_example.txt home/Desktop

    提供的訊息是

    • root@147.182.143.27– 檔案現用的所在的遠端伺服器的使用者名和 IP 位址。
    • /home/remote_dir/sample_example.txt– 正在複製的檔案的名稱及其位置。
    • home/Desktop– 存儲複製檔案的位置。
    使用 scp 命令將文件從遠程服務器複製到本地服務器。

    將檔案從一台遠端伺服器複製到另一台遠端伺服器

    接下來,讓我們看看如何使用以下指令將檔案從一台遠端伺服器複製到另一台遠端伺服器 scp指令:

    scp root@147.182.143.27:/home/remote_dir/sample_example.txt sofija@146.153.129.25:home/Desktop

    上面的指令指定:

    • root@147.182.143.27– 檔案現用的所在的遠端伺服器的使用者名和 IP 位址。
    • /home/remote_dir/sample_example.txt– 正在複製的檔案的名稱及其位置。
    • sofija@146.153.129.25– 我們要復製檔案的遠端伺服器的使用者名和 IP 位址。
    • home/Desktop– 遠端伺服器上存儲複製檔案的位置。

    使用 SCP 複製多個檔案

    SCP 容許您在單個指令中複製多個檔案。 例如,以下指令將兩個檔案從本地主機複製到遠端伺服器:

    scp example/sample1.txt example/sample2.txt root@147.182.143.27:/home/remote_dir

    它內含以下訊息:

    • example/sample1.txt– 正在複製的第一個檔案的名稱和位置。
    • example/sample2.txt– 正在複製的第二個檔案的名稱和位置。
    • root@147.182.143.27– 接收檔案的遠端伺服器的使用者名和 IP 位址。
    • /home/remote_dir– 遠端伺服器上存儲複製檔案的位置。
    使用 scp 命令將多個文件從本地服務器複製到遠程服務器。

    將資料夾從本地主機遞歸複製到遠端伺服器

    除了檔案之外, scp還可以安全地將 資料夾 複製到遠端伺服器或從遠端伺服器複製資料夾。 以下指令顯示如何以遞歸模式將示例目錄複製到遠端伺服器:

    scp -r example root@147.182.143.27:/home/remote_dir

    該指令內含:

    • -r– 遞歸複製資料夾的選項。
    • example– 從本地伺服器複製的資料夾的名稱。
    • root@147.182.143.27– 接收資料夾的遠端伺服器的使用者名和 IP 位址。
    • /home/remote_dir– 遠端伺服器上存儲複製的資料夾的位置。

    使用特定連接埠通過 SCP 複製檔案

    預設情況下,SCP 使用連接埠 22。但是,如果 遠端系統配置為偵聽 不同連接埠上的 SSH 請求,請使用 –P開關來指定連接埠。

    例如,以下指令使用連接埠 2222 將檔案從本地複製到遠端伺服器:

    scp -P 2222  Desktop/sample_example.txt root@147.182.143.27:/home/remote_dir

    上述指令的組成部分是:

    • -P 2222– 使用連接埠 2222。
    • Desktop/sample_example.txt– 您要複製的檔名及其位置。
    • root@147.182.143.27– 接收檔案的遠端伺服器的使用者名和 IP 位址。
    • /home/remote_dir– 遠端伺服器上存儲複製檔案的位置。

    在安靜模式下使用 SCP 複製檔案

    運行一個 scp安靜模式下的指令意味著禁止在輸出中顯示進度表和非錯誤訊息。 為此,您需要加入 -q選項:

    scp -q Desktop/sample_example.txt root@136.183.142:/home/remote_dir
    在安靜模式下使用 scp 命令複製文件。

    在詳細模式下使用 SCP 複製檔案

    你可以運行 scp在詳細模式下加入 -v選項將除錯層級設定為 2。這樣做會在輸出中列印除錯訊息,這可以幫助您排除故障。

    加入 -v之後的選項 scp啟用詳細模式,如下例所示:

    scp -v Desktop/sample_example.txt root@147.182.143.27:/home/remote_dir
    在詳細模式下使用 scp 命令複製文件。

    使用 SCP 和限制頻寬複製檔案

    另一個有用的選項是限制所使用的頻寬 scp指令通過加入 -l範圍。 這在複製大檔案以防止 SCP 耗盡頻寬時特別有用。

    限制頻寬時,您需要指定以千位/秒為單位的數字。 請記住 1 位元組 = 8 位。 因此,如果要將 SCP 的頻寬限制為 100 KB/s,則 l 的值(以 kbps 為單位)將為 800 (100 x 8),如以下指令所示:

    scp -l 800 Desktop/sample_example.txt root@147.182.143.27:/home/remote_dir

    使用 SCP 更快地複製檔案

    要加快從一台伺服器到另一台伺服器的檔案傳輸速度,請加入 -C在傳輸檔案時壓縮檔的選項。 一旦檔案到達目的地,它就會恢復到標準大小。

    scp -C Desktop/sample_example.txt root@147.182.143.27:/home/remote_dir

    使用特定密碼複製帶有 SCP 的檔案

    預設情況下,SCP 使用 AES-128 加密檔案。 但是,那 -c選項容許您變更 SCP 將用於加密檔案的密碼。

    例如,為了提高安全性,您可以切換到 3des 加密,如下例所示:

    scp -c 3des Desktop/sample_example.txt root@147.182.143.27:/home/remote_dir

    使用 IPv4 或 IPv6 通過 SCP 複製檔案

    您可以根據需要通過加入 -4 -6 屬性來強制 SCP 僅使用 IPv4 或 IPv6。

    要將示例檔案從本地伺服器複製到僅使用 IPv6 的遠端主機,您可以運行:

    scp -6 Desktop/sample_example.txt root@147.182.143.27:/home/remote_dir

    注意: 了解 IPv4 和 IPv6 之間的主要區別。

    使用 SCP 保留檔案屬性複製檔案

    要使用 SCP 複製檔案並保留檔案屬性(例如修改和訪問時間、模式和權限),請使用 -p選項:

    scp -p Desktop/sample_example.txt root@147.182.143.27:/home/remote_dir

    結論

    在本指南中,您已經了解了 scp指令是什麼以及如何使用它來保護檔案傳輸。

    這作為 FTP 的替代品特別有用,因為預設情況下 FTP 本質上是不安全的。 還 安全複製協定 遵循一般指令行和 SSH 功能,有助於建立用於管理 Linux 電腦之間的檔案的無縫指令集。

     

    備註:本文引用來至:phoenixnap.com

     

    1. 學會使用指令幫助

    1.1. 概述

    在linux終端,面對指令不知道怎麼用,或不記得指令的拼字及參數時,我們需要求助於系統的幫助文件; linux系統內建的幫助文件很詳細,通常能解決我們的問題,我們需要掌握如何正確的去使用它們;

    • 在只記得部分指令關鍵字的場合,我們可通過man -k來搜尋;
    • 需要知道某個指令的簡要說明,可以使用whatis;而更詳細的介紹,則可用info指令;
    • 檢視指令在哪個位置,我們需要使用which;
    • 而對於指令的具體參數及使用方法,我們需要用到強大的man;

    下面介紹這些指令;

    1.2. 指令使用

    檢視指令的簡要說明

    簡要說明指令的作用(顯示指令所處的man分類頁面):

    $whatis command
    

    正則符合:

    $whatis -w "loca*"
    

    更加詳細的說明文件:

    $info command
    

    使用man

    查詢指令command的說明文件:

    $man command
    eg:man date
    

    使用page up和page down來上下翻頁

    在man的幫助手冊中,將幫助文件分為了9個類別,對於有的關鍵字可能存在多個類別中, 我們就需要指定特定的類別來檢視;(一般我們查詢bash指令,歸類在1類中);

    man頁面所屬的分類標識(常用的是分類1和分類3)

    (1)、使用者可以操作的指令或是是可執行檔案
    (2)、系統核心可呼叫的函數與工具等
    (3)、一些常用的函數與資料庫
    (4)、裝置檔案的說明
    (5)、設定檔案或是某些檔案的格式
    (6)、游戲
    (7)、慣例與協定等。例如Linux標準檔案系統、網路協定、ASCⅡ,碼等說明內容
    (8)、系統管理員可用的管理條令
    (9)、與內核有關的檔案
    

    前面說到使用whatis會顯示指令所在的具體的文件類別,我們學習如何使用它

    eg:
    $whatis printf
    printf               (1)  - format and print data
    printf               (1p)  - write formatted output
    printf               (3)  - formatted output conversion
    printf               (3p)  - print formatted output
    printf [builtins]    (1)  - bash built-in commands, see bash(1)
    

    我們看到printf在分類1和分類3中都有;分類1中的頁面是指令操作及可執行檔案的幫助;而3是常用函數庫說明;如果我們想看的是C語系中printf的用法,可以指定檢視分類3的幫助:

    $man 3 printf
    
    $man -k keyword
    

    查詢關鍵字 根據指令中部分關鍵字來查詢指令,適用於只記住部分指令的場合;

    eg:搜尋GNOME的config配置工具指令:

    $man -k GNOME config| grep 1
    

    對於某個單詞搜尋,可直接使用/word來使用: /-a; 多關注下SEE ALSO 可看到更多精彩內容

    檢視路徑

    檢視程式的binary檔案所在路徑:

    $which command
    

    eg:搜尋make程式安裝路徑:

    $which make
    /opt/app/openav/soft/bin/make install
    

    檢視程式的搜尋路徑:

    $whereis command
    

    當系統中安裝了同一軟體的多個版本時,不確定使用的是哪個版本時,這個指令就能派上用場。

    適合初學者的 30 個基本 Linux 命令

     

    接觸 Linux 時,我很難習慣和學習 Linux 命令。 一兩天內輕鬆學習 Linux 沒有什麼秘訣,但要不斷練習、失敗、站起來再次練習,並從錯誤中吸取教訓。 學習 Linux 最簡單的方法就是,如果你不明白它是如何工作的,就不要放棄它。 在本文中,我們來看看一些適合初學者的基本 Linux 命令。

    此 Linux 終端命令列表包含所有常用命令。 將其視為 Linux 命令備忘單,因為它包含幾乎所有入門的基本命令。

    基本 Linux 命令:Linux 初學者

    1. mkdir

    這個名字說明了一切。 Linux 中的 mkdir 命令用於創建新目錄,或者,如果您來自 Windows,則創建文件夾。

    mkdir folder name

    其中“文件夾名稱”是您要創建的文件夾的名稱。

    2. Echo

    Echo 是 Linux 中最簡單的命令。 它用於顯示命令中空格後傳遞的文本。

    focusblast@pop-os:~$ echo fossbytes
    fossbytes
    

    echo 命令可能看起來沒什麼用,但它用於調試代碼和確定程序的狀態。 如果您了解一點編程知識,請將其視為僅輸出字符串的打印語句。

    Python3
    
    print("fossbytes")
    >> fossbytes

    3. PWD

    PWD 代表打印工作目錄。 這為我們提供了一種快速查找工作目錄路徑的方法。

    focusblast@pop-os:~$ pwd
    /home/focusblast

    4. cd

    Cd 是更改目錄的縮寫。 顧名思義,它用於臨時更改您正在工作的目錄。

    focusblast@pop-os:~$ cd /Desktop
    focusblast@pop-osDesktop:~/Desktop$

    5. cp

    命令 cp 用於將文件複製並粘貼到第二個參數指定的目錄中。

    focusblast@pop-os:~/Desktop$ cp new.txt /home/focusblast/Downloads

    在上面的命令中,“new.txt”是我們複製到目錄“/home/focusblast/Downloads”的文件。

    6. MV

    Linux 中的 mv 命令代表“移動”。 它用於將文件或目錄從一個地方移動到另一個地方。 考慮文件“移動”。 要將其移至“下載”文件夾,我們需要做的就是:

    focusblast@pop-os:~/Desktop$ mv move /home/focusblast/Downloads

    7. man

    手冊頁 (man) 命令就像軟件文檔,使用它您可以了解特定命令的作用及其工作原理:

    focusblast@pop-os:~$ man cp
    
    CP(1)                            User Commands                           CP(1)
    
    NAME
           cp - copy files and directories
    
    SYNOPSIS
           cp [OPTION]... [-T] SOURCE DEST
           cp [OPTION]... SOURCE... DIRECTORY
           cp [OPTION]... -t DIRECTORY SOURCE...
    
    DESCRIPTION
           Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.
    
           Mandatory  arguments  to  long  options are mandatory for short options
           too.
    
           -a, --archive
                  same as -dR --preserve=all
    
           --attributes-only
                  don't copy the file data, just the attributes
    
           --backup[=CONTROL]
     Manual page cp(1) line 1 (press h for help or q to quit)
    

    8. ls

    ls 命令用於列出目錄的內容。

    focusblast@pop-os:~$ ls
    
    Downloads      Public   Documents
    snap          Templates  Videos
    Music        Pictures    VMs

    9. cat

    cat 命令用於打印或合併第一個文件結束行的內容。

    focusblast@pop-os:~$ cat file1

    合併兩個文件並創建一個新文件或將它們合併到任意兩個文件中的命令是。

    cat file1 file2 > file3 #This will merge files in file 1 and file 2 in a new file
    

    現在,cat 命令有很多我們無法在本文中介紹的命令。 您可以使用命令“man cat”來了解更多信息。

    10. rm

    rm 命令用於刪除文件和目錄。 您需要 rm 和 -r (遞歸)來刪除目錄。

    rm new2.txt #removes the file
    sudo rm -rf directory #removes the directory

    “-rf”中的 f 用於告訴 rm 忽略不存在的文件和參數。

    11. Zip 和 Unzip

    Zip 用於創建新的 zip 文件,而 Unzip 用於解壓縮壓縮文件。 以下是如何使用 Zip 和 Unzip 命令。

    focusblast@pop-os:~$ zip newzipfile.zip file1.txt file2.txt

    在上面的命令中,newzipfile.zip 是壓縮文件的名稱,我們將在其中放置兩個文本文件 file1.txt 和 file2.txt。

    使用命令從壓縮文件中提取所有文件。

    focusblast@pop-os:~$ unzip newzipfile.zip

    將“newzipfile”替換為您要解壓的壓縮文件的名稱。

    12. wget

    wget 是一個方便的命令,可以幫助您從互聯網下載文件。 使用方法如下:

    wget "download link"

    13. top

    與 Windows 任務管理器類似,top 命令顯示正在運行的進程列表以及正在使用的 CPU 數量。

    focusblast@pop-os:~$ top

    14.history

    歷史命令用於顯示您之前輸入的命令。

    focusblast@pop-os:~$ history

    15. wc

    wc 命令用於統計行數 (-l)、字數 (-w)、字節數 (-c) 和字符數 (m)。

    focusblast@pop-os:~$ wc -l filename.txt
    33 filename.txt

    16. clear

    顧名思義,clear 用於清除終端屏幕。

    focusblast@pop-os:~$ clear

    17. passwd

    你猜對了! passwd命令用於更改用戶帳戶的密碼。 要使用它,請鍵入 passwd,然後鍵入用戶名。

    focusblast@pop-os:~$ passwd focusblast

    18. chown

    chown命令用於轉移文件的所有權。 假設有一個名為 file1 的文件,而您是 user0。 您想要將所有權轉移給 user1。

    focusblast@pop-os:~$ chown user1 file1.txt

    您還可以使用該命令將所有權轉移給 root。

    sudo chown root file1.txt

    19. Apt

    Apt 代表高級打包工具。 它是 Ubuntu/Debian 最流行、最強大的包管理器之一。 對於初學者來說,包管理器本質上自動化了安裝和刪除應用程序的過程。

    以下命令安裝 Flameshot 應用程序,它是 Linux 上最流行的屏幕截圖工具之一。

    sudo apt install flameshot

    20 . Reboot

    這個名字說明了一切。 Reboot 命令用於重新啟動、關閉或停止系統。

    reboot

    21. chmod

    chmod 命令用於更改文件的讀取 (-r)、寫入 (-w) 和執行 (-x) 指令。 chmod 命令的一個示例是:

    chmod 742 program.sh

    以下是這些數字的含義。

    數字 允許 表示
    0 無權限
    1 執行權限 -X
    2 寫權限 -在-
    3 寫入並執行 -wx
    4 讀取權限 r–
    5 讀取並執行 接收
    6 讀和寫 RW-
    7 讀、寫和執行 讀寫
    Linux權限

    上述命令中的第一個數字 (7) 代表您授予用戶的權限,即讀取、寫入和執行。

    第二個數字 (4) 是賦予文件本身的權限,在本例中為“僅限讀取權限”。

    第三個也是最後一個數字 (2) 代表授予不屬於該組的每個人的權限。

    22. grep

    grep 命令用於搜索和查找文件中的文本。

    grep "fossbytes" text.save

    23. locate

    與Windows中的搜索命令類似,locate命令用於在Linux中定位文件。

    $ locate text.save
    /home/focusblast/Desktop/text.save

    24. Sudo

    這是您最終使用最多的唯一命令。 Sudo 的縮寫是 SuperUser Do,您可以使用它來修改需要 root 權限的文件。

    請注意,如果一個文件需要 root 權限,它可能對操作系統很重要。 因此,如果您不知道自己在做什麼,我們建議不要玩。

    25. hostname

    hostname 命令用於了解您的設備名稱。 此外,使用 -I 參數將幫助您了解您的 IP 地址。

    $ hostname
    pop-os
    $ hostname -I
    192.1.1.1

    26. exit

    exit命令可用於快速關閉終端。

    27. df

    假設您想知道每個磁盤分區的空間,請輸入 df。 默認空間度量為千字節,但您可以使用參數“-m”將其更改為兆字節。

    $ df -m

    28. netstat

    netstat 命令可用於檢查網絡統計信息、接口統計信息、路由表信息等等。

    $ netstat

    29. fdisk

    fdisk 命令將列出所有分區以及分區名稱、扇區、大小和分區類型等信息。 fdisk 需要超級用戶權限才能運行。

    $ sudo fdisk -l

    30.Nano

    Nano 是我最喜歡的 Linux 文本編輯器。 如果您想打開一個文本文件,如果您位於文件所在的目錄中,則可以鍵入“nano”,後跟“文件名”來打開它。

    編輯完文本文件後,按組合鍵“Ctrl+O”寫入更改,然後按“Ctrl+X”退出。 要了解有關 Nano 的更多信息,您還可以按“Ctrl+G”轉到幫助部分。

    有趣的獎勵命令

    31. sl

    你可以使用 apt 安裝 sl,每當你輸入 sl 而不是我們之前討論過的 ls(列出目錄)命令時,就會出現一列火車。

    sudo apt install sl

    上面的命令只是眾所周知的冰山一角。 Linux 的內涵遠不止我們所看到的那樣。

    scp 跨機遠端複製

    scp是secure copy的簡寫,用於在Linux下進行遠端複製檔案的指令,和它類似的指令有cp,不過cp只是在本機進行複製不能跨伺服器,而且scp傳輸是加密的。當你伺服器硬碟變為唯讀 read only system時,用scp可以幫你把檔案移出來。

    註解

    類似的工具有rsync;scp消耗資源少,不會提高多少系統負荷,在這一點上,rsync就遠遠不及它了。rsync比scp會快一點,但當小檔案多的情況下,rsync會導致硬碟I/O非常高,而scp基本不影響系統標準使用。

    1. 指令格式:

    scp [參數] [原路徑] [目的路徑]

    2. 指令參數:

    • -1 強制scp指令使用協定ssh1
    • -2 強制scp指令使用協定ssh2
    • -4 強制scp指令只使用IPv4尋址
    • -6 強制scp指令只使用IPv6尋址
    • -B 使用批處理模式(傳輸過程中不詢問傳輸密碼或短語)
    • -C 容許壓縮。(將-C標誌傳遞給ssh,從而開啟壓縮功能)
    • -p 留原檔案的修改時間,訪問時間和訪問權限。
    • -q 不顯示傳輸進度條。
    • -r 遞歸複製整個目錄。
    • -v 詳細模式顯示輸出。scp和ssh(1)會顯示出整個過程的除錯訊息。這些訊息用於除錯連線,驗證和配置問題。
    • -c cipher 以cipher將資料傳輸進行加密,這個選項將直接傳遞給ssh。
    • -F ssh_config 指定一個替代的ssh配置檔,此參數直接傳遞給ssh。
    • -i identity_file 從指定檔案中讀取傳輸時使用的密鑰檔案,此參數直接傳遞給ssh。
    • -l limit 限定使用者所能使用的頻寬,以Kbit/s為單位。
    • -o ssh_option 如果習慣於使用ssh_config(5)中的參數傳遞模式,
    • -P port 注意是大寫的P, port是指定資料傳輸用到的連線埠號
    • -S program 指定加密傳輸時所使用的程式。此程式必須能夠理解ssh(1)的選項。

    3. 使用說明

    從本地伺服器複製到遠端伺服器

    複製檔案:

    $scp local_file remote_username@remote_ip:remote_folder
    $scp local_file remote_username@remote_ip:remote_file
    $scp local_file remote_ip:remote_folder
    $scp local_file remote_ip:remote_file
    

    指定了使用者名,指令執行後需要輸入使用者密碼;如果不指定使用者名,指令執行後需要輸入使用者名和密碼;

    複製目錄:

    $scp -r local_folder remote_username@remote_ip:remote_folder
    $scp -r local_folder remote_ip:remote_folder
    

    第1個指定了使用者名,指令執行後需要輸入使用者密碼; 第2個沒有指定使用者名,指令執行後需要輸入使用者名和密碼;

    註解

    從遠端複製到本地的scp指令與上面的指令一樣,只要將從本地複製到遠端的指令後面2個參數互換順序就行了。

    4. 使用示例

    案例1:從遠處複製檔案到本地目錄

    $scp root@10.6.159.147:/opt/soft/demo.tar /opt/soft/
    

    說明: 從10.6.159.147機器上的/opt/soft/的目錄中下載demo.tar 檔案到本地/opt/soft/目錄中

    案例2:從遠處複製到本地

    $scp -r root@10.6.159.147:/opt/soft/test /opt/soft/
    

    說明: 從10.6.159.147機器上的/opt/soft/中下載test目錄到本地的/opt/soft/目錄來。

    案例3:上傳本地檔案到遠端機器指定目錄

    $scp /opt/soft/demo.tar root@10.6.159.147:/opt/soft/scptest
    

    說明: 複製本地opt/soft/目錄下的檔案demo.tar 到遠端機器10.6.159.147的opt/soft/scptest目錄

    案例4:上傳本地目錄到遠端機器指定目錄

    $scp -r /opt/soft/test root@10.6.159.147:/opt/soft/scptest
    

    說明: 上傳本地目錄 /opt/soft/test到遠端機器10.6.159.147上/opt/soft/scptest的目錄中

    crontab 定時任務

    通過crontab 指令,我們可以在固定的間隔時間執行特殊的系統指令或 shell script腳本。時間間隔的單位可以是分鐘、小時、日、月、周及以上的任意組合。這個指令非常適合週期性的日誌分析或資料備份等工作。

    1. 指令格式

    crontab [-u user] file crontab [-u user] [ -e | -l | -r ]

    2. 指令參數

    • -u user:用來設定某個使用者的crontab服務;
    • file:file是指令檔案的名字,表示將file做為crontab的任務清單檔案並載入crontab。如果在指令行中沒有指定這個檔案,crontab指令將接受標準輸入(鍵盤)上鍵入的指令,並將它們載入crontab。
    • -e:編輯某個使用者的crontab檔案內容。如果不指定使用者,則表示編輯現用的使用者的crontab檔案。
    • -l:顯示某個使用者的crontab檔案內容,如果不指定使用者,則表示顯示現用的使用者的crontab檔案內容。
    • -r:從/var/spool/cron目錄中刪除某個使用者的crontab檔案,如果不指定使用者,則預設刪除現用的使用者的crontab檔案。
    • -i:在刪除使用者的crontab檔案時給確認提示。

    3. crontab的檔案格式

    分 時 日 月 星期 要運行的指令

    • 第1列分鐘0~59
    • 第2列小時0~23(0表示子夜)
    • 第3列日1~31
    • 第4列月1~12
    • 第5列星期0~7(0和7表示星期天)
    • 第6列要運行的指令

    4. 常用方法

    建立一個新的crontab檔案

    向cron程式送出一個crontab檔案之前,首先要設定環境變量EDITOR。cron程式根據它來確定使用哪個編輯器編輯crontab檔案。9 9 %的UNIX和LINUX使用者都使用vi,如果你也是這樣,那麼你就編輯$HOME目錄下的. profile檔案,在其中加入這樣一行:

    EDITOR=vi; export EDITOR
    

    然後儲存並離開。不妨建立一個名為<user> cron的檔案,其中<user>是使用者名,例如, davecron。在該檔案中加入如下的內容。

    # (put your own initials here)echo the date to the console every
    # 15minutes between 6pm and 6am
    0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console
    

    儲存並離開。注意前面5個域用空格分隔。

    在上面的例子中,系統將每隔1 5分鐘向控制台輸出一次現用的時間。如果系統崩潰或掛起,從最後所顯示的時間就可以一眼看出系統是什麼時間停止工作的。在有些系統中,用tty1來表示控制台,可以根據實際情況對上面的例子進行相應的修改。為了送出你剛剛建立的crontab檔案,可以把這個新建立的檔案作為cron指令的參數:

    $ crontab davecron
    

    現在該檔案已經送出給cron程式,它將每隔1 5分鐘運行一次。同時,新建立檔案的一個副本已經被放在/var/spool/cron目錄中,檔名就是使用者名(即dave)。

    列出crontab檔案

    使用-l參數列出crontab檔案:

    $ crontab -l
    0,15,30,45 18-06 * * * /bin/echo `date` > dev/tty1
    

    可以使用這種方法在$HOME目錄中對crontab檔案做一備份:

    $ crontab -l > $HOME/mycron
    

    這樣,一旦不小心誤刪了crontab檔案,可以用上一節所講述的方法迅速恢復。

    編輯crontab檔案

    如果希望加入、刪除或編輯crontab檔案中的條目,而EDITOR環境變量又設定為vi,那麼就可以用vi來編輯crontab檔案:

    $ crontab -e
    

    可以像使用vi編輯其他任何檔案那樣修改crontab檔案並離開。如果修改了某些條目或加入了新的條目,那麼在儲存該檔案時, cron會對其進行必要的完整性檢查。如果其中的某個域出現了超出容許範圍的值,它會提示你。 我們在編輯crontab檔案時,沒準會加入新的條目。例如,加入下面的一條:

    # DT:delete core files,at 3.30am on 1,7,14,21,26,26 days of each month
    30 3 1,7,14,21,26 * * /bin/find -name 'core' -exec rm {} \;
    

    儲存並離開。

    註解

    最好在crontab檔案的每一個條目之上加入一條注解,這樣就可以知道它的功能、運行時間,更為重要的是,知道這是哪位使用者的定時作業。

    刪除crontab檔案

    $crontab -r
    

    5. 使用案例

    案例1:每1分鐘執行一次myCommand

    * * * * * myCommand
    

    案例2:每小時的第3和第15分鐘執行

    3,15 * * * * myCommand
    

    案例3:在上午8點到11點的第3和第15分鐘執行

    3,15 8-11 * * * myCommand
    

    案例4:每隔兩天的上午8點到11點的第3和第15分鐘執行

    3,15 8-11 */2  *  * myCommand
    

    案例5:每週一上午8點到11點的第3和第15分鐘執行

    3,15 8-11 * * 1 myCommand
    

    案例6:每晚的21:30重啟smb

    30 21 * * * /etc/init.d/smb restart
    

    案例7:每月1、10、22日的4 : 45重啟smb

    45 4 1,10,22 * * /etc/init.d/smb restart
    

    案例8:每週六、週日的1 : 10重啟smb

    10 1 * * 6,0 /etc/init.d/smb restart
    

    案例9:每天18 : 00至23 : 00之間每隔30分鐘重啟smb

    0,30 18-23 * * * /etc/init.d/smb restart
    

    案例10:每星期六的晚上11 : 00 pm重啟smb

    0 23 * * 6 /etc/init.d/smb restart
    

    案例11:每一小時重啟smb

    * */1 * * * /etc/init.d/smb restart
    

    案例12:晚上11點到早上7點之間,每隔一小時重啟smb

    0 23-7 * * * /etc/init.d/smb restart
    

    6. 使用注意事項

    注意環境變量問題

    有時我們建立了一個crontab,但是這個任務卻無法自動執行,而手動執行這個任務卻沒有問題,這種情況一般是由於在crontab檔案中沒有配置環境變量引起的。

    在crontab檔案中定義多個調度任務時,需要特別注環境變量的設定,因為我們手動執行某個任務時,是在現用的shell環境下進行的,程式當然能找到環境變量,而系統自動執行任務調度時,是不會加載任何環境變量的,因此,就需要在crontab檔案中指定任務運行所需的所有環境變量,這樣,系統執行任務調度時就沒有問題了。

    不要假定cron知道所需要的特殊環境,它其實並不知道。所以你要保證在shelll腳本中提供所有必要的路徑和環境變量,除了一些自動設定的全局變量。所以注意如下3點:

    1. 腳本中涉及檔案路徑時寫全局路徑;

    2. 腳本執行要用到java或其他環境變量時,通過source指令引入環境變量,如:

      cat start_cbp.sh
      !/bin/sh
      source /etc/profile
      export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf
      /usr/local/jboss-4.0.5/bin/run.sh -c mev &
      
    3. 當手動執行腳本OK,但是crontab死活不執行時,很可能是環境變量惹的禍,可嘗試在crontab中直接引入環境變量解決問題。如:

      0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh
      

    注意清理系統使用者的信件日誌

    每條任務調度執行完畢,系統都會將任務輸出訊息通過電子信件的形式傳送到給現用的系統使用者,這樣日積月累,日誌訊息會非常大,可能會影響系統的標準運行,因此,將每條任務進行重定向處理非常重要。 例如,可以在crontab檔案中設定如下形式,忽略日誌輸出:

    0 */3 * * * /usr/local/apache2/apachectl restart >/dev/null 2>&1
    

    “/dev/null 2>&1”表示先將標準輸出重導至/dev/null,然後將標準錯誤重導至標準輸出,由於標準輸出已經重導至了/dev/null,因此標準錯誤也會重導至/dev/null,這樣日誌輸出問題就解決了。

    系統級任務調度與使用者級任務調度

    系統級任務調度主要完成系統的一些維護操作,使用者級任務調度主要完成使用者自訂的一些任務,可以將使用者級任務調度放到系統級任務調度來完成(不建議這麼做),但是反過來卻不行,root使用者的任務調度操作可以通過”crontab –uroot –e”來設定,也可以將調度任務直接寫入/etc/crontab檔案,需要注意的是,如果要定義一個定時重啟系統的任務,就必須將任務放到/etc/crontab檔案,即使在root使用者下建立一個定時重啟系統的任務也是無效的。

    其他注意事項

    新建立的cron job,不會馬上執行,至少要過2分鐘才執行。如果重啟cron則馬上執行。

    當crontab失效時,可以嘗試/etc/init.d/crond restart解決問題。或是檢視日誌看某個job有沒有執行/報錯tail -f /var/log/cron。

    千萬別亂運行crontab -r。它從Crontab目錄(/var/spool/cron)中刪除使用者的Crontab檔案。刪除了該使用者的所有crontab都沒了。

    在crontab中%是有特殊含義的,表示換行的意思。如果要用的話必須進行轉義%,如經常用的date ‘+%Y%m%d’在crontab裡是不會執行的,應該換成date ‘+%Y%m%d’。

    更新系統時間時區後需要重啟cron,在ubuntu中服務名為cron:

    $service cron restart
    

    ubuntu下啟動、停止與重啟cron:

    $sudo /etc/init.d/cron start
    $sudo /etc/init.d/cron stop
    $sudo /etc/init.d/cron restart
    

    遠端備份(Linux主機伺服器架設技術)

    rSync 是遠端備份資料的機制,而且這個機制是跨平台的,也就是不限作業系統類型。
    建議的作法是,用 Linux 架一台 rSync Server ,供其他 Linux Server 或 Windows 平台備份資料。

    在架設上,Linux Server 的方式最簡易,但由於其預設檔名編碼為 Big5 碼,鑑於相容,筆者建議採用 Linux 系列來架設。
    但是 Linux 上沒有 Linux server 的 rysnc 快速設定工具, 所以若要把 Linux 當成 rsync server, 就得依下面步驟來處理。
    rSync伺服器

    * 修改 /etc/default/rsync
    RSYNC_ENABLE=false → 改成RSYNC_ENABLE=true

    * 到現有的 Linux server 產生伺服器設定檔 /etc/rsyncd.conf 及 /etc/rsyncd.secrets 複製到 Linux 的 /etc 底下。再依以下 rsyncd.conf 示例中所示, 必須建立 /mybk1 資料夾來放備份資料。

    o rsyncd.secrets 的內容為「帳號:密碼」, 示例如下

    my_backup:my_backup_passwd

    o 權限改為 400
    user@Linux:# sudo chmod 400 rsyncd.secrets

    o rsyncd.conf 檔示例

    log file = /var/log/rsyncd.log
    [mybk1]
    path = /mybk1
    auth users = my_backup
    uid = root
    gid = root
    secrets file = /etc/rsyncd.secrets
    read only = no

    [mybk2]
    path = /mybk2
    auth users = my_backup
    uid = root
    gid = root
    secrets file = /etc/rsyncd.secrets
    read only = no

    註:[mybk1]是區段名稱, 從[mybk1]至read only = no為一區段, 而一個設定檔, 允許設定多個區段

    *
    o 建立 /mybk1 及 /mybk2 資料夾
    user@Linux:# sudo mkdir /mybk1
    user@Linux:# sudo mkdir /mybk2

    rSync客戶端

    * 到現有的 Linux server 產生客戶端執行檔 bk-Linux.sh 及 rsyncd.secrets 丟至 rsync 客戶端電腦上的 /root 底下, 這兩個檔案的擁有者必須為 root , 而且必須 su 至 root 權限來執行
    o Client 端的 rsyncd.secrets 必須注意兩件事
    1. 內容只含密碼

    my_backup_passwd

    2. 檔案權限必須設定為 400 (-r——–)
    o Client 端的 bk-Linux.sh 內容示例如下

    #! /bin/sh

    /usr/bin/rsync -rvlHpogDtS –password-file=/root/rsyncd.secrets /var/www my_backup@rsync.server::mybk1

    註:把 /var/www 備份至 rsync.server這台主機的 mybk1 區段

    * 對 bk-Linux.sh 賦予執行權
    user@Linux:# sudo chmod +x /root/bk-Linux.sh

    * 執行備份動作
    user@Linux:# sudo /root/bk-Linux.sh

    * 設定 crontab , 定時執行 /root/bk-Linux.sh
    user@Linux:# sudo crontab -e

    0 3 * * * /root/bk-Linux.sh

    註:每日 3 時執行 bk-Linux.sh 以備份資料

    在 Windows 用 rsync 備份至 Linux 上的 rsync server

    * 請參考下列網址:
    http://myip.tw/itsmw/index.php/DeltaCopy

    rSync還原

    * 不論您的 client 端為何種 OS,一律建議使用 FileZilla,使用 SFTP 模式取回即可。請參考下面動畫示範:
    http://myip.tw/Linuxdoc/LinuxBase/m6_filezilla_sftp.htm

    vi 指令大全(Linux主機)

    Vi指令大全
    進入vi的指令
    vi filename: 開啟或新增檔案,並將游標置於第一行首
    vi +n filename: 開啟檔案,並將游標置於第n行首
    vi + filename: 開啟檔案,並將游標置於最後一行首
    vi +/pattern filename: 開啟檔案,並將游標置於第一個與pattern符合的串處
    vi -r filename: 在上次正用vi編輯時發生系統崩潰,還原filename
    vi filename….filename: 開啟多個檔案,依次進行編輯
    搬移游標類指令
    h: 游標左移一個字元
    l: 游標右移一個字元
    space: 游標右移一個字元
    Backspace: 游標左移一個字元
    k或Ctrl+p: 游標上移一行
    j或Ctrl+n: 游標下移一行
    Enter: 游標下移一行
    w或W : 游標右移一個字至字首
    b或B : 游標左移一個字至字首
    e或E : 游標右移一個字至字尾
    ): 游標移至句尾
    (: 游標移至句首
    }: 游標移至段落開頭
    {: 游標移至段落結尾
    nG: 游標移至第n行首
    n+: 游標下移n行
    n-: 游標上移n行
    n$: 游標移至第n行尾
    H: 游標移至螢幕頂行
    M: 游標移至螢幕中間行
    L: 游標移至螢幕最後行
    0: 游標移至現用的行首
    $: 游標移至現用的行尾
    螢幕翻滾類指令
    Ctrl+u: 向檔案首翻半屏
    Ctrl+d: 向檔案尾翻半屏
    Ctrl+f: 向檔案尾翻一屏
    Ctrl+b: 向檔案首翻一屏
    nz: 將第n行滾至螢幕頂部,不指定n時將現用的行滾至螢幕頂部。
    插入文字類指令
    i: 在游標前
    I: 在現用的行首
    a: 游標後
    A: 在現用的行尾
    o: 在現用的行之下新開一行
    O: 在現用的行之上新開一行
    r: 取代現用的字元
    R: 取代現用的字元及其後的字元,直至按ESC鍵
    s: 從現用的游標位置處開始,以輸入的文字替代指定數目的字元
    S: 刪除指定數目的行,並以所輸入文字代替之
    ncw或nCW: 修改指定數目的字
    nCC: 修改指定數目的行
    [
    編輯
    ]
    刪除指令
    ndw或ndW: 刪除游標處開始及其後的n-1個字
    do: 刪至行首
    d$: 刪至行尾
    ndd: 刪除現用的行及其後n-1行
    x或X: 刪除一個字元,x刪除游標後的,而X刪除游標前的
    Ctrl+u: 刪除輸入模式下所輸入的文字
    搜尋及取代指令/pattern: 從游標開始處向檔案尾搜尋pattern
    ?pattern: 從游標開始處向檔案首搜尋pattern
    n: 在同一方向重複上一次搜尋指令
    N: 在反方向上重複上一次搜尋指令
    :s/p1/p2/g: 將現用的行中所有p1均用p2替代
    :n1,n2s/p1/p2/g: 將第n1至n2行中所有p1均用p2替代
    :g/p1/s//p2/g: 將檔案中所有p1均用p2取代
    [
    編輯
    ]
    選項設定
    all: 列出所有選項設定情況
    term: 設定終端類型
    ignorance: 在搜尋中忽略大小寫
    list: 顯示定位點(Ctrl+I)和行尾標誌($)
    number: 顯示行號
    report: 顯示由面向行的指令修改過的數目
    terse: 顯示簡短的警示訊息
    warn: 在轉到別的檔案時若沒儲存現用的檔案則顯示NO write訊息
    nomagic: 容許在搜尋模式中,使用前面不帶「」的特殊字元
    nowrapscan: 禁止vi在搜尋到達檔案兩端時,又從另一端開始
    mesg: 容許vi顯示其他使用者用write寫到自己終端上的訊息
    最後行模式指令:n1,n2 co n3: 將n1行到n2行之間的內容複製到第n3行下
    :n1,n2 m n3:將n1行到n2行之間的內容移至到第n3行下
    :n1,n2 d: 將 n1行到n2行之間的內容刪除
    :w: 儲存現用的檔案
    :e filename: 開啟檔案filename進行編輯
    :x: 儲存現用的檔案並離開
    :q: 離開vi
    :q!: 不儲存檔案並離開vi
    :!command: 執行shell指令command
    :n1,n2 w!command: 將檔案中n1行至n2行的內容作為command的輸入並執行之,
    若不指定n1,n2,則表示將整個檔案內容作為command的輸入
    :r!command: 將指令command的輸出結果放到現用的行
    暫存器操作
    "?nyy: 將現用的行及其下n行的內容儲存到暫存器?中,其中?為一個字母,n為一個數字
    "?nyw: 將現用的行及其下n個字儲存到暫存器?中,其中?為一個字母,n為一個數字
    "?nyl: 將現用的行及其下n個字元儲存到暫存器?中,其中?為一個字母,n為一個數字
    "?p: 取出暫存器?中的內容並將其放到游標位置處。這裡?可以是一個字母,也可以是一個數字
    ndd: 將現用的行及其下共n行文字刪除,並將所刪內容放到1號刪除暫存器中