日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

【方向盘】达到Linux第三阶段的常用命令笔记记录---PartⅠ

發(fā)布時間:2023/12/18 linux 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【方向盘】达到Linux第三阶段的常用命令笔记记录---PartⅠ 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

既然絕非庸才,為何甘于平凡
本文已被https://yourbatman.cn收錄;女媧Knife-Initializr工程可公開訪問啦;程序員專用網(wǎng)盤https://wangpan.yourbatman.cn;公號后臺回復(fù)“專欄列表”獲取全部小而美的原創(chuàng)技術(shù)專欄

相關(guān)閱讀

【小家運(yùn)維】達(dá)到Linux第三階段的常用命令筆記記錄—PartⅠ
【小家運(yùn)維】達(dá)到Linux第三階段的常用命令筆記記錄—Part Ⅱ
【小家運(yùn)維】達(dá)到Linux第三階段的常用命令筆記記錄—Part Ⅲ

前言

你好,我是方向盤(YourBatman、方哥)

Linux雖然在個人桌面領(lǐng)域處于弱勢,被Windows絕對壓制。但是在服務(wù)器領(lǐng)域、嵌入式領(lǐng)域(比如Android的內(nèi)核也是Linux)幾乎一騎絕塵,為實(shí)際上的統(tǒng)治者。

它免費(fèi)、穩(wěn)定、高效、開源等一系列特點(diǎn)在在市場上都得到了很明顯的體現(xiàn)。

Linux的體系架構(gòu)

一般來說著名的linux系統(tǒng)基本上分兩大類:

  • RedHat系列:Redhat、Centos、Fedora等
  • Debian系列:Debian、Ubuntu等

Linux 的基石是 Unix 內(nèi)核,其基于 Unix 的基本特點(diǎn)以及 POSIX 和單獨(dú)的 UNIX 規(guī)范標(biāo)準(zhǔn)。看起來,該操作系統(tǒng)官方名字取自于 Linus,其中其操作系統(tǒng)名稱的尾部的 “x” 和 Unix 系統(tǒng)相聯(lián)系。

我不得不貼出最經(jīng)典的一張圖了:

內(nèi)核:從本質(zhì)上看是一種軟件——控制計算機(jī)的硬件資源,并提供上層應(yīng)用程序運(yùn)行的環(huán)境
系統(tǒng)調(diào)用:是操作系統(tǒng)的最小功能單位。現(xiàn)在各種版本的Unix實(shí)現(xiàn)都提供了不同數(shù)量的系統(tǒng)調(diào)用,如Linux的不同版本提供了240-260個系統(tǒng)調(diào)用,FreeBSD大約提供了320個(reference:UNIX環(huán)境高級編程)。我們可以把系統(tǒng)調(diào)用看成是一種不能再化簡的操作(類似于原子操作,但是不同概念)
Shell:是一個特殊的應(yīng)用程序,俗稱命令行,本質(zhì)上是一個命令解釋器,它下通系統(tǒng)調(diào)用,上通各種應(yīng)用,通常充當(dāng)著一種“膠水”的角色,來連接各個小功能程序,讓不同程序能夠以一個清晰的接口協(xié)同工作,從而增強(qiáng)各個程序的功能。同時,Shell是可編程的,它可以執(zhí)行符合Shell語法的文本,這樣的文本稱為Shell腳本,通常短短的幾行Shell腳本就可以實(shí)現(xiàn)一個非常大的功能,原因就是這些Shell語句通常都對系統(tǒng)調(diào)用做了一層封裝。為了方便用戶和系統(tǒng)交互,一般,一個Shell對應(yīng)一個終端,終端是一個硬件設(shè)備,呈現(xiàn)給用戶的是一個圖形化窗口。我們可以通過這個窗口輸入或者輸出文本。這個文本直接傳遞給shell進(jìn)行分析解釋,然后執(zhí)行。

總結(jié)一下,用戶態(tài)的應(yīng)用程序可以通過三種方式來訪問內(nèi)核態(tài)的資源:
1、系統(tǒng)調(diào)用(所以應(yīng)用程序也是不經(jīng)過shell,直接通過系統(tǒng)調(diào)用來訪問內(nèi)核資源的)
2、庫函數(shù)
3、Shell腳本

Linux的學(xué)習(xí)階段

本人結(jié)合平時閱讀的一些文章,大概把Linux選手分為如下這些階段:

  • 第一階段:會使用Linux下的基本操作命令。包括cd、文件命令(rm、mkdir、chmod、chown)編輯工具vim,用戶管理(useradd、userdel、usermod等)
  • 第二階段:會在Linux安裝一些軟件。并且能修改一些配置,環(huán)境變量、網(wǎng)絡(luò)配置、服務(wù)配置等等。能寫簡單的shell腳本
  • 第三階段:會在Linux進(jìn)行相關(guān)的開發(fā)工作。比如Python開發(fā)、大數(shù)據(jù)開發(fā)等等
  • 第四階段:能寫復(fù)雜的shell腳本,對服務(wù)器進(jìn)行維護(hù)
  • 第五階段:能保護(hù)服務(wù)器進(jìn)行安全設(shè)置。放置攻擊。保證服務(wù)器的正常運(yùn)行,能對Linux系統(tǒng)進(jìn)行調(diào)優(yōu)
  • 第六階段:深入理解Linux系統(tǒng),深入內(nèi)核。對內(nèi)核有研究,能對Linux開源社區(qū)貢獻(xiàn)對應(yīng)代碼
  • 如題,很顯然,本文做的相關(guān)筆記止步于第三階段。并且絕大部分內(nèi)容還是以命令/shell的講解記錄為主

    Linux的學(xué)習(xí)不比編程,多實(shí)踐就自然出真知了。

    Linux的目錄結(jié)構(gòu)

    在Linux的世界里,一切皆目錄

    重點(diǎn)目錄介紹

    • /:根目錄是整個系統(tǒng)最重要的一個目錄,因?yàn)椴坏械哪夸浂际怯筛夸浹苌鰜淼?#xff0c; 同時根目錄也與開機(jī)/還原/系統(tǒng)修復(fù)等動作有關(guān)

    根目錄(/)所在分區(qū)應(yīng)該越小越好, 且應(yīng)用程序所安裝的軟件最好不要與根目錄放在同一個分區(qū)內(nèi),保持根目錄越小越好。 如此不但效能較佳,根目錄所在的文件系統(tǒng)也較不容易發(fā)生問題。說白了,就是根目錄和Windows的C盤一個樣。

    • /bin:系統(tǒng)有很多放置執(zhí)行檔的目錄,但/bin比較特殊。在/bin底下的指令可以被root與一般帳號所使用,主要有:cat,chmod(修改權(quán)限), chown, date, mv, mkdir, cp, bash等等常用的指令。
    • /sbin:Linux有非常多指令是用來設(shè)定系統(tǒng)環(huán)境的,這些指令只有root才能夠利用來設(shè)定系統(tǒng),其他使用者最多只能用來查詢而已。里面包括了開機(jī)、修復(fù)、還原系統(tǒng)所需要的指令。 至于某些伺服器軟體程式,一般則放置到**/usr/sbin/當(dāng)中。至于本機(jī)自行安裝的軟體所產(chǎn)生的系統(tǒng)執(zhí)行檔(system binary),則放置到/usr/local/sbin/**當(dāng)中了。常見的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。
    • /boot:主要放置開機(jī)會使用到的檔案
    • /dev:在Linux系統(tǒng)上,任何裝置與周邊設(shè)備都是以檔案的型態(tài)存在于這個目錄當(dāng)中。比如u盤等一般都掛在這里。比要重要的檔案有/dev/null, /dev/zero, /dev/tty , /dev/lp*, / dev/hd*, /dev/sd*等等 類似于windows的設(shè)備管理器
    • /etc:系統(tǒng)主要的配置幾乎都放置在這個目錄內(nèi),例如人員的帳號密碼檔、各種服務(wù)的啟始檔等等。 普通用戶一般只能看,root用戶才能修改此目錄下的文件。 比較重要的檔案有:/etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/等等 其下重要的目錄有:/etc/init.d/ :所有服務(wù)的預(yù)設(shè)啟動script都是放在這里的,例如要啟動或者關(guān)閉iptables的話: /etc/init.d/iptables start、/etc/init.d/ iptables stop
    • /home:家目錄。新建一個用戶就會有一個家目錄。~ :代表當(dāng)前使用者的家目錄,而 ~guest:則代表用戶名為guest的家目錄。
    • /lib:系統(tǒng)的函式庫。比如一些驅(qū)動程序等等
    • /media:是媒體的英文,顧名思義,這個/media底下放置的就是可移除的裝置
    • /mnt:**如果妳想要暫時掛載某些額外的裝置,一般建議妳可以放置到這個目錄中。**在古早時候,這個目錄的用途與/media相同啦。 只是有了/media之后,這個目錄就用來暫時掛載用了。
    • /opt:這個目錄對我們平時就很重要了。一般我們的第三方軟件都會放在這個目錄里,比如我們java的源代碼、jar包、打包腳本等等都放在這里。我們安裝的軟件:比如需要安裝一個redis,也可以安裝在這個目錄里。
    • /root:root用戶的家目錄。
    • /srv:srv可以視為service的縮寫,是一些網(wǎng)路服務(wù)啟動之后,這些服務(wù)所需要取用的資料目錄。 常見的服務(wù)例如WWW, FTP等等。
    • /tmp:暫時存放目錄。比如一些日志文件、程序運(yùn)行時的中間臨時文件等等可放在這。這個目錄所有用戶都可以操作的
    • /var:/var就是在系統(tǒng)運(yùn)作后才會漸漸占用硬盤容量的目錄。因?yàn)?var目錄主要針對常態(tài)性變動的文件,包括緩存(cache)、登錄檔(log file)以及某些軟件運(yùn)作所產(chǎn)生的文件、打印輸出的日志文件、mysql的數(shù)據(jù)庫文件等等
      /var/cache/:應(yīng)用程序本身運(yùn)作過程中會產(chǎn)生的一些暫存檔
      /var/lib/:
      程序本身執(zhí)行的過程中,需要使用到的數(shù)據(jù)文件放置的目錄。
      /var/lock/:
      /var/log/:非常重要。這是登錄文件放置的目錄。里面比較重要的文件如/var/log/messages, /var/log/wtmp(記錄登入者的信息)等。
      /var/mail/:放置個人電子郵件信箱的目錄,不過這個目錄也被放置到/var/spool/mail/目錄中,通常這兩個目錄是互為鏈接文件。
      /var/run/:某些程序或者是服務(wù)啟動后,會將他們的PID放置在這個目錄下
      /var/spool/:
    • /usr:usr不是user的縮寫,其實(shí)usr是Unix Software Resource的縮寫。也就是Unix操作系統(tǒng)軟件資源所放置的目錄,而不是用戶的數(shù)據(jù)啦。 因?yàn)槭撬邢到y(tǒng)默認(rèn)的軟件(distribution發(fā)布者提供的軟件)都會放置到/usr底下,因此這個目錄有點(diǎn)類似Windows 系統(tǒng)的C:\Windows\ + C:\Program files\這兩個目錄的綜合體,系統(tǒng)剛安裝完畢時,這個目錄會占用最多的硬盤容量。

    /usr/bin/:絕大部分的用戶可使用指令都放在這里。請注意到他與/bin的不同之處。(是否與開機(jī)過程有關(guān))
    /usr/lib/:如果你使用的是X86_64的Linux系統(tǒng), 那可能會有/usr/lib64/目錄產(chǎn)生
    /usr/local/:管理員在本機(jī)自行安裝自己下載的軟件。建議安裝到此目錄。該目錄下也是具有bin, etc, include, lib…的次級目錄
    /usr/sbin/:非系統(tǒng)正常運(yùn)作所需要的系統(tǒng)指令。最常見的就是某些網(wǎng)絡(luò)服務(wù)器軟件的服務(wù)指令(daemon)
    /usr/share/:放置共享文件的地方,在這個目錄下放置的數(shù)據(jù)幾乎是不分硬件架構(gòu)均可讀取的數(shù)據(jù), 因?yàn)閹缀醵际俏谋疚募?br /> /usr/src/:
    一般原始碼建議放置到這里,src有source的意思。至于核心原始碼則建議放置到/usr/src/linux/目錄下。

    linux一切皆文件,因此大家需要行程一共公式,對應(yīng)的文件放在對應(yīng)的目錄里吧

    常用命令

    man:幫助命令

    man是manual的縮寫,man命令用來提供在線幫助,通過man命令可以查看Linux中的命令幫助、配置文件幫助、編程幫助等信息。

    man命令支持上下翻,搜索(輸入斜線’/’加字符串),退出用q

    ping和telnet

    先說說ping和telnet命令(Linux和windows都有):

    telnet因?yàn)椴捎妹魑膫魉蛨笪?#xff0c;安全性不好,很多Linux服務(wù)器都不開放telnet服務(wù),而改用更安全的ssh方式了。windows默認(rèn)也是不開啟的,需要手動打開

    ping通常是用來檢查網(wǎng)絡(luò)是否通暢。
    telnet是用來探測指定ip是否開放指定端口。

    Linux查看系統(tǒng)版本、內(nèi)核信息

    • cat /etc/issue 或 cat /etc/centos-release 查看系統(tǒng)版本信息
    • uname -a 查看內(nèi)核信息
    • 查看系統(tǒng)版本信息

      備注:(使用命令時提示command not found,需要安裝yum install redhat-lsb -y)

    Linux中的SSHD服務(wù)

    如果我們需要使用類似xshell工具遠(yuǎn)程登錄到Linux中,那么需要遠(yuǎn)程的Linux啟用了SSHD服務(wù)。SSHD服務(wù)一般都是隨系統(tǒng)啟動的/etc/init.d/sshd

    檢查服務(wù)是否啟動:

    [root@l-groupclass-server1.syc.dev.ali.qr ~]# service sshd status

    已啟動了顯示如下:

    openssh-daemon (pid 13151) is running...

    沒有安裝SSHD服務(wù):請自行先安裝吧

    sshd:unrecognized service SSHD的默認(rèn)端口號為22,可以通過修改 /etc/ssh/sshd_config文件,修改默認(rèn)端口,比如我修改成了如下,然后重啟服務(wù)servcie sshd restart即可

    備注:修改此配置文件,該端口可以避免被端口掃描,規(guī)避風(fēng)險。同時也可以禁止root登錄等等配置。

    SSH的工作機(jī)制

    服務(wù)器啟動的時候自己產(chǎn)生一個密鑰(768bit公鑰),本地的ssh客戶端發(fā)送連接請求到ssh服務(wù)器,服務(wù)器檢查連接點(diǎn)客戶端發(fā)送的數(shù)據(jù)和IP地址,確認(rèn)合法后發(fā)送密鑰(768bits)給客戶端,此時客戶端將本地私鑰(256bit)和服務(wù)器的公鑰(768bit)結(jié)合成密鑰對key(1024bit),發(fā)回給服務(wù)器端,建立連接通過key-pair數(shù)據(jù)傳輸。

    SSH知識小結(jié)
  • SSH是安全的加密協(xié)議,用于遠(yuǎn)程連接Linux服務(wù)器
  • SSH的默認(rèn)端口是22,安全協(xié)議版本是SSH2
  • SSH服務(wù)器端主要包含2個服務(wù)功能:SSH連接和SFTP服務(wù)器
  • SSH客戶端包含ssh連接命令遠(yuǎn)程拷貝scp命令
  • SSH命令

    SSH是一種網(wǎng)絡(luò)協(xié)議,用于計算機(jī)之間的加密登錄。如果一個用戶從本地計算機(jī),使用SSH協(xié)議登錄另一臺遠(yuǎn)程計算機(jī),我們就可以認(rèn)為,這種登錄是安全的,即使被中途截獲,密碼也不會泄露。

    ssh命令用于遠(yuǎn)程登錄上Linux主機(jī)。一般我們會配置成免密碼的方式登錄

    常用格式:ssh [-l login_name] [-p port] [user@]hostname

    備注:ssh可以通過ssh 主機(jī)名的方式登錄到遠(yuǎn)程機(jī)器。需要修改主機(jī)的hostname配置:

    不指定用戶,默認(rèn)利用當(dāng)前宿主用戶的用戶名登錄

    ssh 192.168.0.11

    指定用戶登錄,若需要密碼,加-p password參數(shù)即可

    ssh root@192.168.0.11

    若修改過端口,可以指定端口登錄

    ssh -p 12333 root@192.168.0.11

    登錄到遠(yuǎn)程主機(jī)后立刻執(zhí)行某個命令(當(dāng)然也可以執(zhí)行腳本)

    ssh omd@192.168.1.100 "ls /home/fangshixiang"

    SSH為啥安全呢?

    SSH之所以能夠保證安全,原因在于它采用了公鑰加密。

    (1)遠(yuǎn)程主機(jī)收到用戶的登錄請求,把自己的公鑰發(fā)給用戶。
    (2)用戶使用這個公鑰,將登錄密碼加密后,發(fā)送回來。
    (3)遠(yuǎn)程主機(jī)用自己的私鑰,解密登錄密碼,如果密碼正確,就同意用戶登錄。

    這個過程本身是安全的,但是實(shí)施的時候存在一個風(fēng)險:如果有人截獲了登錄請求,然后冒充遠(yuǎn)程主機(jī),將偽造的公鑰發(fā)給用戶,那么用戶很難辨別真?zhèn)巍R驗(yàn)椴幌駂ttps協(xié)議,SSH協(xié)議的公鑰是沒有證書中心(CA)公證的,也就是說,都是自己簽發(fā)的。

    口令登錄(用戶名、密碼登錄)

    公鑰登錄

    遠(yuǎn)程主機(jī)的authorized_keys文件

    遠(yuǎn)程主機(jī)會將用戶的公鑰,保存在登錄后的用戶主目錄的$HOME/.ssh/authorized_keys文件中。公鑰就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。

    不使用上面的ssh-copy-id命令,改用下面的命令,這樣也是okl的,只是比較麻煩:

    $ ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

    scp(ssh提供的功能支持)

    scp在夸機(jī)器復(fù)制的時候?yàn)榱颂岣邤?shù)據(jù)的安全性,使用了ssh連接和加密方式,如果機(jī)器之間配置了ssh免密碼登錄,那在使用scp的時候密碼都不用輸入。

    遠(yuǎn)程文件的安全(加密)拷貝

    scp是加密遠(yuǎn)程拷貝,cp為本地拷貝。每次都是全量拷貝(效率不高,適合第一次),增量拷貝用rsync

    命令格式:
    scp [參數(shù)] [原路徑] [目標(biāo)路徑]
    -P port 注意是大寫的P, port是指定數(shù)據(jù)傳輸用到的端口號
    -r 遞歸復(fù)制整個目錄(復(fù)制目錄一般都需要帶上此參數(shù))

    scp -P52722 demo.txt fangshixiang@10.102.131.178:/home/fangshixiang

    這樣子就把我的機(jī)子的demo.txt文件拷貝到了遠(yuǎn)程機(jī)器10.102.131.178的指定目錄下了。
    交換給位置,就可以把遠(yuǎn)程服務(wù)器的文件copy到本地了:

    scp -P52722 fangshixiang@10.102.131.178:/home/fangshixiang/nohup.out ./

    rsync

    rsync是可以實(shí)現(xiàn)增量備份的工具。配合任務(wù)計劃,rsync能實(shí)現(xiàn)定時或間隔同步,配合inotify或sersync,可以實(shí)現(xiàn)觸發(fā)式的實(shí)時同步。

    因?yàn)槭褂幂^少,具體參考:rsync(一):基本命令和用法

    sudo和su

    sudo : 暫時切換到超級用戶模式以執(zhí)行超級用戶權(quán)限,提示輸入密碼時該密碼為當(dāng)前用戶的密碼,而不是超級賬戶的密碼。不過有時間限制,Ubuntu默認(rèn)為一次時長15分鐘。

    su : 切換到某某用戶模式,提示輸入密碼時該密碼為想要切換到的用戶的密碼,用法為su 賬戶名稱。如果后面不加賬戶時系統(tǒng)默認(rèn)為root賬戶,密碼也為root的密碼。沒有時間限制。

    備注:root切換到任何用戶的時候,是不需要輸入密碼的

    快捷命名:
    sudo -i: 為了頻繁的執(zhí)行某些只有超級用戶才能執(zhí)行的權(quán)限,而不用每次輸入密碼,可以使用該命令。提示輸入密碼時該密碼為當(dāng)前賬戶的密碼。沒有時間限制。執(zhí)行該命令后提示符變?yōu)椤?”而不是“$”。想退回普通賬戶時可以執(zhí)行“exit”或“l(fā)ogout” 。

    Linux下為用戶配置免密碼sudo權(quán)限(只有root用戶才能操作)


    我們也可以指定的用戶組,來sudo -i免密碼:

    1、root的密碼除了root本人知道外,不需被其他需要用到root權(quán)限用戶知道,因?yàn)槭褂胹udo時,要求輸入的密碼是『該位用戶自己的密碼』。
    2、把所有可執(zhí)行sudo指令的用戶都規(guī)范在『/etc/sudoers』這個文件中,root可以很容易地掌控整個系統(tǒng)。(一般每個用戶一行記錄,當(dāng)然可以按組來)

    普通用戶使用sudo 來執(zhí)行只有root才能執(zhí)行權(quán)限的命令,跟用root用戶執(zhí)行是不一樣的,因?yàn)檫@時候他用的還是普通用戶的環(huán)境變量。用su -成root的用戶還是有些環(huán)境變量是和root登陸是不一樣的。另外,它們的uid也是不一樣,只有euid是相同的。

    sudo /bin/bash : 這個命令也會切換到root的bash下,但不能完全擁有root的所有環(huán)境變量,比如PATH,可以擁有root用戶的權(quán)限。這個命令和 sudo -s 是等同的。
    sudo su : 這個命令,也是登錄到了root,但是并沒有切換root的環(huán)境變量,比如PATH。
    sudo su - : 這個命令,純粹的切換到root環(huán)境下,可以這樣理解,先是切換到了root身份,然后又以root身份執(zhí)行了 su - ,這個時候跟使用root登錄沒有什么區(qū)別。這個結(jié)果貌似跟sudo -i 的效果是一樣的,但是也有不同,sudo 只是臨時擁有了root的權(quán)限,而su則是使用root賬號登錄了linux系統(tǒng)。

    • sudo su - 約等于 sudo -i
    • sudo -s 完全等于 sudo /bin/bash 約等于 sudo su
    • sudo 終究被一個"臨時權(quán)限的帽子"扣住,不能等價于純粹的登錄到系統(tǒng)里

    相比于su切換身份須要用戶的password,常常性的是須要root的password,sudo僅僅是須要自己的password,就能夠以其它用戶的身份來運(yùn)行命令。常常是以root的身份運(yùn)行命令。所以sudo相對來說安全很多,畢竟root的密碼可不是隨便能讓人知道的。

    sudo的運(yùn)行有這樣一個流程:
    1).當(dāng)用戶運(yùn)行sudo時,系統(tǒng)于/etc/sudoers文件里查找該用戶是否有運(yùn)行sudo的權(quán)限;
    2).若用戶具有可運(yùn)行sudo的權(quán)限。那么讓用戶輸入用戶自己的password,注意這里輸入的是用戶自己的password。
    3).假設(shè)password正確。變開始進(jìn)行sudo后面的命令,root運(yùn)行sudo是不須要輸入password的,切換到的身份與運(yùn)行者身份同樣的時候。也不須要輸入password。

    區(qū)別總結(jié):

    了解完su和sudo,是不是發(fā)現(xiàn)sudo有太多的優(yōu)點(diǎn)了。su方式切換是須要輸入目標(biāo)用戶的password。而sudo僅僅須要輸入自己的password,所以sudo能夠保護(hù)目標(biāo)用戶的password不外流的。當(dāng)幫root管理系統(tǒng)的時候,su是直接將root全部權(quán)利交給用戶。而sudo能夠更好分工,僅僅要配置好/etc/sudoers,這樣sudo能夠保護(hù)系統(tǒng)更安全,并且分工明白,有條不紊。

    關(guān)機(jī)重啟相關(guān)命令:

    reboot、shutdown、poweroff、halt、init、sync

    reboot

    ROOT權(quán)限用戶下輸入reboot命令就可以看到The system is going down for reboot NOW的提示,目前就重啟VPS。

    reboot命令重啟動系統(tǒng)時是刪除所有的進(jìn)程,而不是平穩(wěn)地終止它們。因此,使用reboot命令可以快速地關(guān)閉系統(tǒng),但如果還有其它用戶在該系統(tǒng)上工作時,就會引起數(shù)據(jù)的丟失。所以使用reboot命令的場合主要是在單用戶模式。

    last reboot可以查看最近一次reboot的時間

    shutdown

    這個命令可以用來重啟也可以用來關(guān)機(jī)操作。參數(shù)相對較多,本文只介紹常用的。

    shutdown命令可以安全地關(guān)閉或重啟Linux系統(tǒng),它在系統(tǒng)關(guān)閉之前給系統(tǒng)上的所有登錄用戶提示一條警告信息。該命令還允許用戶指定一個時間參數(shù),可以是一個精確的時間,也可以是從現(xiàn)在開始的一個時間段。

    該命令的一般格式: shutdown [選項(xiàng)] [時間] [警告信息]

      • k 并不真正關(guān)機(jī)而只是發(fā)出警告信息給所有用戶
      • r 關(guān)機(jī)后立即重新啟動
      • c 取消一個已經(jīng)運(yùn)行的shutdown(這個比較重要咯)

    shutdown -h 2:30 ‘halt’:2點(diǎn)30分關(guān)機(jī),注意以本機(jī)時間為準(zhǔn)
    shutdown –r +10:系統(tǒng)10分鐘后關(guān)機(jī)并馬上重新啟動
    shutdown –h now:系統(tǒng)馬上關(guān)機(jī)(不重新啟動)
    shutdown -c :#取消之前的shutdown命令

    該命令只能由超級用戶使用

    halt

    是最簡單的關(guān)機(jī)命令,其實(shí)際上是調(diào)用shutdown -h命令。halt執(zhí)行時,殺死應(yīng)用進(jìn)程,文件系統(tǒng)寫操作完成后就會停止內(nèi)核。

    halt 立刻關(guān)機(jī)

    poweroff

    poweroff 立刻關(guān)機(jī)

    init

    是所有進(jìn)程的祖先,其進(jìn)程號始終為1。init用于切換系統(tǒng)的運(yùn)行級別,切換的工作是立即完成的。init 0命令用于立即將系統(tǒng)運(yùn)行級別切換為0,即關(guān)機(jī);init 6命令用于將系統(tǒng)運(yùn)行級別切換為6,即重新啟動

    sync

    一般在關(guān)機(jī)前可手動調(diào)用。表示:將數(shù)據(jù)同步寫入到磁盤

    在我們執(zhí)行關(guān)機(jī)、重啟命令時候一般都建議先執(zhí)行此命令。

    exit和logout

    對于Linux中的命令而言,每當(dāng)其執(zhí)行完成后,都會返回一個整數(shù),這個整數(shù)就是程序退出狀態(tài)(exit status),可以在shell中使用echo $?來查看上一個命令的退出狀態(tài)。退出狀態(tài)為0表示程序執(zhí)行成功,否則執(zhí)行失敗。(比如我們判斷上一條命令執(zhí)行成功了,才繼續(xù)往下執(zhí)行)

    在shell腳本中,可以使用exit [n]來退出當(dāng)前腳本,并且指定退出碼為n。若沒有指定退出碼,則以腳本執(zhí)行的最后一條命令的退出狀態(tài)作為當(dāng)前腳本的退出狀態(tài),即exit $?

    在命令行中,可以使用exit來退出當(dāng)前shell,或者使用logout命令。

    注意:
    1、退出當(dāng)前shell并不是關(guān)機(jī),只是關(guān)閉了與系統(tǒng)的交互接口,Linux仍然正常運(yùn)行。
    2、logout命令在運(yùn)行級別為圖形界面的時候,是無效的

    創(chuàng)建目錄 mkdir

    在Linux系統(tǒng)中,mkdir命令用來創(chuàng)建一個目錄或一個級聯(lián)目錄。

    -m:為目錄指定訪問權(quán)限,與chmod類似。
    -p:如果目錄已經(jīng)存在**,則不會有錯誤提示**。若父目錄不存在,將會創(chuàng)建父目錄。該選項(xiàng)常用于創(chuàng)建級聯(lián)目錄。

    mkdir命令不加任何選項(xiàng)默認(rèn)在當(dāng)前目錄下創(chuàng)建目錄,目錄的默認(rèn)權(quán)限為777。如果目錄已經(jīng)存在將會提示錯誤

    一次性創(chuàng)建多個目錄

    mkdir cep dod testlog

    可以一次性創(chuàng)建多個文件夾

    刪除目錄 rmdir

    rmdir是常用的命令,該命令的功能是刪除空目錄,一個目錄被刪除之前必須是空的。

    注意,rm -r dir 命令可以代替rmdir,但是很危險,萬一它突然就不是空的咧?

    注意:刪除某目錄時必須具有對父目錄的寫權(quán)限

    -p 遞歸刪除目錄dirname, 當(dāng)子目錄刪除后其父目錄為空時,也一同被刪除。如果整個路徑被刪除或者由于某種原因保留部分路徑,則系統(tǒng)在標(biāo)準(zhǔn)輸出上顯示相應(yīng)的信息。
    -v --verbose  顯示指令執(zhí)行過程

    改名了很少被使用了,一般使用更為強(qiáng)大的rm命令

    創(chuàng)建文件 touch

    touch 文件名

    若該文件名文件已存在你,不加參數(shù)的情況下會什么都不做

    拷貝 cp

    這個是使用頻率最多的命令,負(fù)責(zé)把一個源文件復(fù)制到目標(biāo)文件(夾)下。

    復(fù)制到文件夾下,則文件名保持不變,復(fù)制到文件中,則文件名變更。如果目標(biāo)文件已經(jīng)存在或目標(biāo)文件夾中含有同名文件,則復(fù)制之后目標(biāo)文件或目標(biāo)文件夾中的同名文件會被覆蓋。

    cp 源文件1 源文件2 目標(biāo)文件夾 或 cp 文件 目標(biāo)文件夾*,這樣可以一次性復(fù)制多個文件到目標(biāo)文件夾里面

    cp -r 源文件夾 目標(biāo)文件夾。這個也是使用頻率很高的命令,只需要記住復(fù)制文件夾一定要加“-r”參數(shù),否則會出現(xiàn)“cp: omitting directory”錯誤。

    cp -s 源文件 目標(biāo)文件:也可以用ln命令實(shí)現(xiàn)同樣的功能。當(dāng)一個文件路徑太深(如下述的a/b/c/d/e/orginalFile.txt),訪問起來十分不方便時,就會創(chuàng)建這個文件的軟鏈接,使之訪問起來更方便些。軟鏈接就相當(dāng)于windows上的快捷方式。

    cp -l 源文件 目標(biāo)文件:也可以用ln命令實(shí)現(xiàn)同樣的功能。有時候,為了某種原因,需要創(chuàng)建一個硬鏈接

    軟連接和硬鏈接的區(qū)別,這里不解釋了。記得自己理解哦

    刪除文件(夾) rm

    rm [選項(xiàng)]… 目錄… 刪除指定的<文件>(即解除鏈接)

    -d --directory 刪除可能仍有數(shù)據(jù)的目錄 (只限超級用戶)
    -f --force 略過不存在的文件,不顯示任何信息
    -r/R --recursive 同時刪除該目錄下的所有目錄層(一般刪除文件夾帶上)

    rm *.rb:刪除所有以.rb結(jié)尾的文件

    移動文件 mv 重命名也用此命令

    mv [選項(xiàng)] 源文件或目錄 目標(biāo)文件或目錄

    -f :force 強(qiáng)制的意思,如果目標(biāo)文件已經(jīng)存在,不會詢問而直接覆蓋;
    -i :若目標(biāo)文件 (destination) 已經(jīng)存在時,就會詢問是否覆蓋!

    mv test.log test1.txt:相當(dāng)于修改文件名

    cat more less head tail

    cat 是一次性顯示整個文件的內(nèi)容,還可以將多個文件連接起來顯示,它常與重定向符號配合使用,適用于文件內(nèi)容少的情況;

    cat file1 file2 > file 這是它的特殊能力 cat file1 file2 表示一次性顯示兩個文件的內(nèi)容

    cat -n a.txt:-n參數(shù),會在輸出前面加上行號 效果等同于 nl a.txt

    more和less一般用于顯示文件內(nèi)容超過一屏的內(nèi)容,并且提供翻頁的功能。more比cat強(qiáng)大,提供分頁顯示的功能,
    less比more更強(qiáng)大,提供翻頁,跳轉(zhuǎn),查找等命令。而且more和less都支持:用空格顯示下一頁,按鍵b顯示上一頁。

    more

    +num 從第num行開始顯示;

    我們查看一個內(nèi)容較大的文件時,要用到more的動作指令,比如ctrl+f(或空格鍵) 是向下顯示一屏,ctrl+b是返回上一屏;

    常用命令:
    Enter 向下n行 一般慢慢滾動這樣用
    Ctrl+f / 空格鍵 向下滾動一屏
    Ctrl+b 返回上一屏
    :f 輸出文件名和當(dāng)前行的行號;

    集合管道符使用

    比如我們列一個目錄下的文件,由于內(nèi)容太多,我們應(yīng)該學(xué)會用more來分頁顯示。這得和管道 | 結(jié)合起來,比如:

    ls -l /etc |more

    more默認(rèn)會顯示文件百分比。而less需要加參數(shù)-m / -M

    less

    less幾乎可以完全代替more命令,并且功能更加強(qiáng)大。

    -M 顯法讀取文件的百分比、行號及總行數(shù);
    -p pattern 搜索pattern;比如在/etc/profile搜索單詞MAIL,就用 less -p MAIL /etc/profile

    less中的命令

    Enter 向下移動一行;
    y 向上移動一行;
    空格鍵 / b 向下滾動一屏;
    b 向上滾動一屏;
    w 可以指定顯示哪行開始顯示,是從指定數(shù)字的下一行顯示;比如指定的是6,那就從第7行顯示;
    g 跳到第一行;
    G 跳到最后一行;
    /pattern 搜索pattern ,比如 /MAIL表示在文件中搜索MAIL單詞;
    v 調(diào)用vi編輯器;
    q 退出less

    head

    head 是顯示一個文件的內(nèi)容的前多少行; 用法比較簡單

    head -n 行數(shù)值 文件名;
    比如我們顯示/etc/profile的前10行內(nèi)容,應(yīng)該是:

    head -n 10 /etc/profile

    tail(非常有用)

    tail命令用途是依照要求將指定的文件的最后部分輸出到標(biāo)準(zhǔn)設(shè)備,通常是終端,通俗講來,就是把某個檔案文件的最后幾行顯示到終端上,假設(shè)該檔案有更新,tail會自己主動刷新,確保你看到最新的檔案內(nèi)容。

    tail -n 行數(shù)值 文件名;

    比如我們顯示/etc/profile的最后5行內(nèi)容,應(yīng)該是:

    tail -n 5 /etc/profile

    備注:最后一條命令tail非常有用,尤其在監(jiān)控日志文件時,可以在屏幕上一直顯示新增的日志信息。

    -f 該參數(shù)用于監(jiān)視File文件增長。(監(jiān)控日志需要加上此參數(shù)) 默認(rèn)顯示10行
    -n Number:從 Number 行位置讀取指定文件。(使用較多)

    tail -f -n100 README

    二進(jìn)制顯示文件 od

    od 文件名,就會以二進(jìn)制顯示內(nèi)容。全是0和1 使用較少

    >和>>指令

    重定向命令其實(shí)用得不少

    > 是重定向到一個文件(會覆蓋原有的內(nèi)容),>>是追加內(nèi)容到文件。兩個命令都是如果文件不存在則創(chuàng)建文件。

    查看命令歷史 history

    可以按一下上\下方向鍵,命令行就會顯示相對于當(dāng)前命令的上一條或下一條歷史記錄.但如果太多了,那就得使用history了

    history [n] n為數(shù)字,列出最近的n條命令 n不指定,默認(rèn)值為200條
    所有命令記錄在這里:~/.bash_history

    使用! 執(zhí)行歷史命令。

    • ! number 執(zhí)行第幾條命令
    • ! command 從最近的命令查到以command開頭的命令執(zhí)行
    • !! 執(zhí)行上一條

    查看系統(tǒng)時間、日期 date、cal

    直接輸出date、cal能看到系統(tǒng)當(dāng)前時間、日期、日歷等等

    格式化輸出:date +%Y-%m-%d 輸出為: 2018-12-28
    cal 2018 :會把2018年12個月的日歷都打印出來
    cal 12 2018:這查看的是2018年12月指定月的日歷

    搜索查找 find、locate、grep、whereis、which

    先說兩個最輕量級的查找whereis、which。
    whereis命令只能用于程序名的搜索,而且只搜索二進(jìn)制文件(參數(shù)-b)、man說明文件(參數(shù)-m)和源代碼文件(參數(shù)-s)。如果省略參數(shù),則返回所有信息。

    which命令的作用是,在PATH變量指定的路徑中,搜索某個系統(tǒng)命令的位置,并且返回第一個搜索結(jié)果。也就是說,使用which命令,就可以看到某個系統(tǒng)命令是否存在,以及執(zhí)行的到底是哪一個位置的命令。

    which 查看可執(zhí)行文件的位置
    whereis 查看文件的位置
    locate 配 合數(shù)據(jù)庫查看文件位置
    find 實(shí)際搜尋硬盤查詢文件名稱

    find

    -name 文件名查找
    -user 文件所屬查找
    -size 文件大小查找 +大于 -小于

    find /usr -name a.txt 在目錄/usr下查找名字叫a.txt的文件
    find /usr -user root 查找目錄下文件所屬為root的目錄和文件
    find /usr -size +20M /usr目錄下所有大于20M的文件

    多參數(shù)可以聯(lián)合使用

    locate

    使用locate數(shù)據(jù)庫快速查找,無需遍歷整個文件系統(tǒng),所以效率還是蠻高的。需要定期更新locate數(shù)據(jù)庫;第一次執(zhí)行時,updatedb創(chuàng)建locate數(shù)據(jù)庫。執(zhí)行前,可先執(zhí)行一遍updatedb命令。。。

    缺點(diǎn):centos系統(tǒng)要使用此命令,請先安裝:

    yum -y install mlocate

    然后執(zhí)行updatedb

    locate命令要比find -name快得多

    grep

    Linux系統(tǒng)中g(shù)rep命令是一種強(qiáng)大的文本搜索工具,它能使用正則表達(dá)式搜索文本,并把匹 配的行打印出來。grep全稱是Global Regular Expression Print,表示全局正則表達(dá)式版本,它的使用權(quán)限是所有用戶。

    常用參數(shù):
    -w或–word-regexp 只顯示全字符合的列。
    -c或–count 計算符合范本樣式的列數(shù)。
    –color :將匹配到的內(nèi)容以顏色高亮顯示。 這個還挺好用的

    # 若有如下文本 db.username=xbk_classroom slave.db.username=xbk_classroom slave1.db.username=xbk_classroom user.ribbon.listOfServers=http://10.102.131.176:9090 isolation.db.username=xbk_classroomgrep user -c 結(jié)果為:5 效果同grep -c user grep user -wc 結(jié)果為:1(完整匹配,所以經(jīng)常使用) grep -wc user

    pattern正則表達(dá)式主要參數(shù):
    \: 忽略正則表達(dá)式中特殊字符的原有含義。
    ^:匹配正則表達(dá)式的開始行。
    $: 匹配正則表達(dá)式的結(jié)束行。
    <:從匹配正則表達(dá) 式的行開始。
    >:到匹配正則表達(dá)式的行結(jié)束。
    [ ]:單個字符,如[A]即A符合要求 。
    [ - ]:范圍,如[A-Z],即A、B、C一直到Z都符合要求 。
    。:所有的單個字符。
    * :所有字符,長度可以為0。

    使用案例:

    grep ‘test’ d* #顯示所有以d開頭的[文件中]包含 test的行。 grep[a-z]\{5\}’ aa #顯示所有包含每個字符串至少有5個連續(xù)小寫字符的字符串的行。 grep man * #會匹配 ‘Batman’、’manic’、’man’等, grep\<man’ * #匹配’manic’和’man’,但不是’Batman’, grep\<man\>#只匹配’man’,而不是’Batman’或’manic’等其他的字符串。‘^’:指匹配的字符串在行首, ‘$’:指匹配的字符串在行 尾,grep -i pattern files :不區(qū)分大小寫地搜索。默認(rèn)情況區(qū)分大小寫, grep -l pattern files :只列出匹配的文件名, grep -w pattern files :只匹配整個單詞,而不是字符串的一部分(如匹配’magic’,而不是’magical’)grep -C number pattern files :匹配的上下文分別顯示[number]行, grep -n pattern files 即可顯示行號信息我常用的:grep -A(后面N行) -B(前面N行) -C(前后N行)

    過濾符。將前一個命令的結(jié)果,通過管道符進(jìn)行過濾

    | 管道命令,將前面命令的處理結(jié)果傳遞給后一個處理

    cat a.txt | grep -ni hello 把a(bǔ).txt的文件內(nèi)容傳遞給grep過濾,grep過濾出所有hello字段,-n表示顯示行號,-i表示不區(qū)分大小寫

    也可以直接使用:
    grep -n aaa /home/a.txt --在home文件下的a.txt查找含有aaa字符的行數(shù)(區(qū)分大小寫匹配aaa)

    統(tǒng)計出現(xiàn)的次數(shù) |wc -l

    如:

    grep -n You README |wc -l

    輸出: 這樣只會輸出一個總次數(shù)數(shù)字了

    6

    壓縮與解壓

    習(xí)慣上以.tar后綴代表tar包,用xxx.tar.gz或.tgz代表gzip壓縮過的tar文件,用.tar.bz2代表bzip2壓縮過的tar文件。

    tar

    打包:將一大堆文件或目錄變成一個總的文件【tar命令】
    壓縮:將一個大的文件通過一些壓縮算法變成一個小文件【gzip,bzip2等】

    只是打包動作,相當(dāng)于歸檔處理,不做壓縮;解壓也一樣,只是把歸檔文件釋放出來。
    tar [主選項(xiàng)+輔選項(xiàng)] 文件們或目錄
    主選項(xiàng):【一條命令以下5個參數(shù)只能有一個
    -c: --create 新建一個壓縮文檔,即打包
    -x: --extract,–get解壓文件(解壓的時候使用)

    -t: --list,查看壓縮文檔里的所有內(nèi)容
    -r:–append 向壓縮文檔里追加文件
    -u:–update 更新原壓縮包中的文件
    輔助選項(xiàng)(可多個):
    -v:顯示操作過程!這個參數(shù)很常用
    -f:使用文檔名,注意,在f之后要立即接文檔名,不要再加其他參數(shù)!
    -z:是否同時具有g(shù)zip的屬性?即是否需要用gzip壓縮或解壓?一般格式為xxx.tar.gz或xx.tgz
    -j:是否同時具有bzip2的屬性?即是否需要用bzip2壓縮或解壓?一般格式為xx.tar.bz2

    常用組合為:
    將img1和img2兩個文件夾打包成img.tar,僅打包不壓縮

    tar -cvf img.tar img1 img2

    將img1和img2兩個文件夾打包成img.tar.gz,打包后,以gzip壓縮

    tar -zcvf img.tar.gz img1 img2

    解壓:tar -tf img.tar這個不解壓直接查看
    tar -xvf file.tar //解壓 tar包

    gzip、gunzip、zip、unzip

    gzip 是linux中常見的壓縮/解壓工具,最常見的使用對象是*.gz格式的文件

    System.out.println("寫得可還行?收藏再看吧,點(diǎn)個贊吧,分享下吧"); echo("關(guān)注公號【Java方向盤】 https://yourbatman.cn https://wangpan.yourbatman.cn"); console.log("私聊【方向盤】:fsx1056342982");

    我是方向盤(YourBatman、方哥):一個前25年還不會寫Hallo World、早已畢業(yè)的大齡程序員。網(wǎng)癮失足、清考、延期畢業(yè)、房產(chǎn)中介、保險銷售、送外賣…是我不可抹滅的黑標(biāo)簽

    • 🎓2013.07 清考、畢業(yè)答辯3次未通過、延期畢業(yè)
    • 🏷2013.08-2014.07 寧夏中介公司賣二手房1年,畢業(yè)后第1份工作
    • ??🏷2014.07-2015.05 荊州/武漢,泰康人壽賣保險3月、餓了么送外賣2月,還有炸雞排、直銷等第2345份工作
    • 🏷2015.08 開始從事Java開發(fā),闖過外包,呆過大廠!多年架構(gòu)經(jīng)驗(yàn),任基礎(chǔ)架構(gòu)/中間件團(tuán)隊負(fù)責(zé)人
    • 🏷2021.08 因“雙減政策”失業(yè)!歷經(jīng)9面,終獲美團(tuán)外賣L8的offer
    • 🙅🏻?♀?Java架構(gòu)師、Spring開源貢獻(xiàn)者、CSDN博客之星年度Top 10、領(lǐng)域建模專家、寫作大賽1/2屆評委
    • 📚將出版書籍《Spring奇淫巧技》,致力于國內(nèi)zui好、zui具深度、zui實(shí)用的專欄,為市場貢獻(xiàn)微薄之力
    • 現(xiàn)在寫純粹技術(shù)專欄(公號后臺回復(fù)專欄列表),不嘩眾取寵。如果你也有共鳴,可加我好友(fsx1056342982)一起進(jìn)步

    總結(jié)

    以上是生活随笔為你收集整理的【方向盘】达到Linux第三阶段的常用命令笔记记录---PartⅠ的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。