在很多人學習Linux命令行,會經(jīng)常遇到command not found 錯誤,出現(xiàn)上述錯誤主要有以下幾種情況:
創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計,鄭州網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務涵蓋:鄭州等地區(qū)。鄭州做網(wǎng)站價格咨詢:13518219792
命令書寫錯誤,如有些人將Windows命令與Linux命令搞錯,如查看ip相關(guān)信息,Linux命令行應該為ifconfig
環(huán)境變量沒有配置好,這里一般有兩種解決方法,第一,可以切換到root用戶執(zhí)行命令,第二種,就是配置用戶的環(huán)境變量,其指令如下:
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
----------------------------分割線----------------------------
Linux命令找不到?(找不到命令)
這個問題其實很簡單,如果你在終端輸入一個命令,而系統(tǒng)提示你說命令沒有找到(Command not found)的話,要么是因為你沒有裝相應的軟件包,要么就是因為路徑設(shè)置的問題。如果是因為軟件包的問題,那沒有別的好說的,安裝相應的軟件包就好了。而另外一種情況,則需要對用戶的路徑進行設(shè)置。這里針對普通用戶和超級用戶分開介紹,以 RedHat 些列為例。
一、普通用乎如果一些程序沒有安裝在系統(tǒng)默認的路徑(ie /bin/, /usr/bin, /usr/local/bin/ )里面,這個時候普通用戶想要調(diào)用這些命令,必須設(shè)定路徑。方法很簡單:以普通用戶登錄,然后在終端輸入:
vi ~/.bash_profile
會出現(xiàn)如下的內(nèi)容:# .bash_profile
export PATH此時,只要在export PATH前面加入自己的路徑即可,例如我的修改后如下:[ @localhost bin]$ cat ~/.bash_profile# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then . ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:/usr/local/programs/crosstool/gcc-4.0.2-glibc-2.3.6/arm-linux-gnu/bin/export PATH
二、超級用戶這里主要是一些用在系統(tǒng)管理上的命令,例如ifconfig, route等等, 他們位于/sbin, 或/usr/sbin/下。其實這些命令本身就沒有任何問題,軟件包早已安裝完畢,路徑設(shè)置也沒有絲毫問題。而出現(xiàn)Command not found的原因在于:在終端使用su變成超級用戶的時候沒有將root的路徑(環(huán)境)一起切換過來,從而導致身份雖然已經(jīng)是root,但是工作的環(huán)境和路徑依舊是普通用戶的。這種問題的解決方法有兩個,其一是按照(一)里面提到的,對普通用戶的工作路徑進行修改,但是這樣比較麻煩。其二則簡單的多,只要在使用su的時候在其后家上一個空格和”-“ ,即將su改為 su - 。這樣就可以在成為root的同時將root的工作路徑也一起切換過來了。如果你已經(jīng)使用su變成了root,那也沒有關(guān)系,只要在輸入一下su - 就好了。
原文地址:
不是
Linux
中的
make
命令出錯,而是你的
makefile
文件中的文法、或者編譯源程序的先后順序有問題,所以導致
make
命令無法編譯多個源程序。make
命令對
makefile
的語法是很嚴格的,所以需要你仔細檢查
makefile
中的內(nèi)容哪里有寫得不規(guī)范的地方。
linux管理常見錯誤一:隨意許可,原因是不理解許可
如果對許可配置不當,就會給黑客留下機會。處理許可問題的最簡單方法是使用所謂的RWE方法,即Read(讀取)、Write(寫入)、Execute(執(zhí)行)。假設(shè)你想讓一個用戶能夠讀取一個文件但不能寫入文件。為此,你可以執(zhí)行:chmod
u+w,u-rx 文件名,一些新用戶可能會看到一個錯誤,說他們沒有使用文件的許可,因此他們就使用了:Chmod 777
文件名,以為這樣能夠避免問題。但這樣做實際上會導致更多的問題,因為它給了文件的可執(zhí)行的權(quán)限。
記住這一點:777將一個文件的讀取、寫入、執(zhí)行的許可給了所有用戶,666將一個文件的讀取、寫入權(quán)限給了所有用戶,而555將文件的讀取、執(zhí)行權(quán)限給了所有用戶,還有444、333、222、111等等。
linux管理常見錯誤二:忽視更新
這并不是說Linux管理員缺乏技巧。不過,許多Linux管理員在運行了Linux之后,以為日后就無事可做了,以為它安全可靠。其實,新的更新可以為一些新的漏洞打上補丁。維持更新可以在一個易受損的系統(tǒng)與一個安全的系統(tǒng)之間構(gòu)造分水嶺。Linux的安全來自于不斷地維護。為了實現(xiàn)安全性,為了使用一些新的特性和穩(wěn)定性,任何管理員都應當跟上Linux的更新步伐。
linux管理常見錯誤三:不經(jīng)過嚴格審核,從多種渠道下載安裝各種類型的應用程序
乍看起來,這也許是一個不錯的主意。如果你在運行Ubuntu,你會知道包管理程序使用的是。deb軟件包。不過,你找到的許多應用程序是以源代碼的形式提供的。沒有問題嗎?這些程序安裝后也許能夠正常工作。但是你為什么不能隨意安裝程序呢?道理很簡單,如果你以源的形式安裝了程序,那么,你的軟件包管理系統(tǒng)將無法跟蹤你所安裝的東西。
因此,在程序包A(以源的形式安裝)依賴于程序包B(從一個。deb庫安裝的),而軟件包B是從更新管理器更新的時候,會發(fā)生什么事情呢?程序包A可能運行,也可能無法運行。不過,如果程序包A和B都從。deb庫安裝的話,二者都能運行的機會將更高。此外,在所有的程序包都來自于同樣的二進制類型時,更新程序包將更為容易。
linux管理常見錯誤四:將服務器啟動進入到X
在一臺機器是專用服務器時,你可能會想到安裝X,這樣一些管理任務就會簡單一些。不過,這并不意味著用戶需要將服務器啟動進入到X.這樣會浪費珍貴的內(nèi)存和CPU資源。相反地,你應當在級別3上停止啟動過程,進入命令行模式。這樣做不但會將所有的資源留給服務器,而且還會防止泄露機器的機密。要登錄到X,用戶只需要以命令行方式登錄,然后鍵入startx進入到桌面。
linux管理常見錯誤五:糟糕的口令
記住,root
的口令通常是linux王國的關(guān)鍵。所以為什么要讓root的口令那么容易被破解呢?保障你的用戶口令的健壯性至關(guān)重要。如果你的口令比較長,且難于記憶,可將這個口令存放在一個可被加密的位置。在需要這個口令時,可用解密軟件解開這個口令使用之。
linux管理常見錯誤六:沒有備份關(guān)鍵的配置文件
許多管理員都有這樣的體會,在升級到某個X版本,如X11之后,卻發(fā)現(xiàn)新版本破壞了你的xorg.conf配置文件,以至于你再也無法使用X?建議你在升級X之前,先對以前的/etc/x11/xorg.conf作一個備份,以免升級失敗。當然,X的升級程序會設(shè)法為用戶備份xorg.conf文件,但它卻在/etc/x11目錄內(nèi)備份。即使這種備份看起來不錯,你最好還是自己做一個備份吧。筆者的一個習慣是將其備份到/root目錄中,這樣,用戶就可以知道只有根(root)用戶能夠訪問此文件。記住,安全第一。這里的方法也適用于其它的關(guān)鍵備份,如Samba、Apache、Mysql等。
linux管理常見錯誤七:忽視日志文件
/var/log的存在是有理由的。這是存放所有的日志文件的唯一位置。在發(fā)生問題時,你首先需要看一下這里。檢查安全問題,可看一下/var/log/secure.筆者看的第一個位置是/var/log/messages.這個日志文件保存著所有的一般性錯誤。在此文件中,你可以得到關(guān)于網(wǎng)絡、媒體變更等消息。在管理一臺機器時,用戶可以使用某個第三方的應用程序,如logwatch,這樣就可以創(chuàng)建為用戶創(chuàng)建基于/var/log文件的各種報告。
linux管理常見錯誤八:沒有安裝一個可正常運行的內(nèi)核
你可能不會在一臺機器上安裝10個以上的內(nèi)核。但你需要更新內(nèi)核,這種更新并沒有刪除以前的內(nèi)核。你是怎么做的呢?你一直保持使用最近的可正常工作的內(nèi)核。假設(shè)你目前正常工作的內(nèi)核是2.6.22,而2.6.20是備份內(nèi)核。如果你更新到2.6.26,而在新內(nèi)核中一切都工作正常,你就可以刪除2.6.20了。
linux管理常見錯誤九:逃避使用命令行
恐怕很少有人愿意記住那么多命令。在大多數(shù)情況下,圖形用戶界面是許多人的最愛。不過,有時,命令行使用起來更加容易、快捷、安全、可靠。逃避使用命令行是Linux管理的大忌。管理員至少應當理解命令行是如何工作的,至少還要掌握一些重要的管理命令。
linux管理常見錯誤十:以根用戶身份登錄
這是一種很危險的錯誤。如果用戶需要根特權(quán)來執(zhí)行或配置一個應用程序,可以在一個標準的用戶賬戶中使用su切換到root用戶。登錄到root為什么不是一件好事兒?在用戶以標準用戶身份登錄時,所有正在運行的X應用程序仍擁有僅限于此用戶的訪問權(quán)。如果用戶以根用戶身份登錄,X就擁有了root的許可。這就會導致兩個問題,一、如果用戶由GUI犯了一個大錯,這個錯誤對系統(tǒng)來說,有可能是一個巨大的災難。二、以根用戶的身份運行X使得系統(tǒng)更易于遭受攻擊。
嚴格來說,你的命令不是很嚴格。先不說這個問題了。
你的寫法思路正確,只是在處理管道前邊得到的內(nèi)容時有三個小小的錯誤。
第一,要把grep 進程也一并過濾去。
grep 123換成grep -i grep |grep 123
第二,我們要處理這種情況,這就是不嚴格的所在。如果出現(xiàn)了出現(xiàn)進程名稱也是123和1234的話,我們怎么處理,所以應該把awk '{print $2}'放到grep -i grep |grep 123它們之前,即grep -i grep | awk '{print $2}' |grep 123
第三,如果有兩個或多個進程的id包含123,當然這種情況例外了一些,kill 前邊的管道會返回多個值,如下
2123
1234
12345
這時通過kill命令執(zhí)行一定會報錯。
所以要做進一步修改
print $2要改成printf $2" "
這樣如果遇到上面的特例,kill前邊的管道就會得到:
"2123 1234 12345 "不包含引號
所以按照你的思路正確的做法是,
ps -ef |grep -i grep |awk '{printf $2" "}' |grep 123 | kill -9
其它有更好的實現(xiàn),更建議用pkill和pgrep。多看man手冊還是有好處的。有幾位已經(jīng)寫到,不贅述了就。
你截圖是提示缺少lib庫文件
這兩個lib文件都是軟鏈接的,可以看看實際文件是否存在,如果存在,重新建立軟鏈接。
如果lib文件就沒有,可以使用安裝光盤作為yum源,然后補lib庫
yum install?gnutls