我們?cè)贚inux下運(yùn)行程序的時(shí)候,一般都是這樣的操作的,例如啟動(dòng)Tomcat:
創(chuàng)新互聯(lián)公司專注于企業(yè)成都營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、鎮(zhèn)平網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為鎮(zhèn)平等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
[root@hostname bin]#?./catalina.sh run
我一直不理解這個(gè)“./”到底是什么意思,其實(shí)很好理解。
1.首先,我們看一下Windows在命令行里是怎么運(yùn)行可執(zhí)行程序的:
當(dāng)前目錄在D盤時(shí),我運(yùn)行C盤下的微信,需要指定完整的路徑;當(dāng)前目錄就在微信的安裝目錄下時(shí),我運(yùn)行微信,直接指定exe可執(zhí)行文件名就可以了。
搞懂了Windows怎么運(yùn)行程序,Linux也是一樣,說白了,都是直接敲文件名就能執(zhí)行。
2.那Linux中的“.”到底是啥意思?為啥一定要敲一個(gè)“./”呢?
.和./就是表示當(dāng)前目錄。同Windows一樣,Linux也是當(dāng)前目錄下沒有可執(zhí)行文件時(shí),需要指定完整的路徑;當(dāng)前目錄下有可執(zhí)行文件時(shí),直接指定可執(zhí)行文件名就可以了。只不過Linux有點(diǎn)呆呆的,執(zhí)行當(dāng)前目錄下的可執(zhí)行文件時(shí),必須要額外多敲一個(gè)"./",否則的話它自己不知道在當(dāng)前目錄下找這個(gè)可執(zhí)行文件。
不加這個(gè)“./”,Linux就會(huì)從環(huán)境變量PATH中定義的路徑中找可執(zhí)行文件,只有加了這個(gè)“./”之后,Linux才會(huì)從當(dāng)前目錄中找可執(zhí)行文件。
外延1:Windows和Linux中的command not found道理也是一樣的,都是給定的路徑不正確,導(dǎo)致找不到可運(yùn)行文件。
Windows中直接運(yùn)行微信如圖:
Linux中直接運(yùn)行Tomcat如圖:
外延2:Windows中的PATH這個(gè)環(huán)境變量和Linux中的PATH作用是一樣的
Windows中能直接運(yùn)行記事本,就是因?yàn)榄h(huán)境變量PATH里設(shè)置了C:\Windows\System32這個(gè)路徑
當(dāng)把PATH里中的C:\Windows\System32這個(gè)路徑去掉之后,就無法直接在命令行中運(yùn)行記事本了。
準(zhǔn)確說,linux
不存在“用命令行登陸”的說法。
準(zhǔn)確應(yīng)該是從本地字符終端登陸。因?yàn)樵诘顷懬?,是沒有命令行的,命令行是一個(gè)用戶交互操作界面,在你還沒有登陸的時(shí)候,是不存在“命令行”的。
至于如何切換到本地字符終端,圖形狀態(tài)下用
ctrl
+
alt
+
f1
到
f6
即可,一般
linux
的設(shè)計(jì)都是
1-6
是字符終端,7
是圖形終端,部分發(fā)行版
f1
是字符終端,f2-f7
是字符終端。
你切換到這個(gè)終端里,就可以看到提示你輸入用戶名的提示了,輸入用戶名后回車就是輸入密碼。密碼無回顯,正確輸入后回車即可,別因?yàn)闆]看到密碼哪一行按了鍵盤沒反應(yīng)就覺得機(jī)器壞了。
要充分理解本文,必須具備Windows 環(huán)境下桌面應(yīng)用程序的工作經(jīng)驗(yàn),我認(rèn)為讀者對(duì)如何使用 Linux 桌面有一個(gè)基本的了解。使用一個(gè)運(yùn)行的 Linux 計(jì)算來機(jī)探討本文的概念和示例是很有幫助的。
有時(shí)候第一次在 Linux 上運(yùn)行一個(gè)應(yīng)用程序需要一點(diǎn)額外工作。有些應(yīng)用程序,比如服務(wù)器服務(wù),可能無法安裝為服務(wù),因此您需要從命令行啟動(dòng)這些應(yīng)用程序。對(duì)于啟動(dòng)這些應(yīng)用程序的用戶帳戶而言,需要在應(yīng)用程序文件中設(shè)置執(zhí)行許可標(biāo)志 (x)。
Linux 在內(nèi)核空間或用戶空間運(yùn)行進(jìn)程。用戶空間 是操作系統(tǒng)的區(qū)域,應(yīng)用程序通常在此運(yùn)行。簡(jiǎn)單地說,每個(gè)用戶帳戶有其自己的用戶空間,應(yīng)用程序在這個(gè)領(lǐng)域內(nèi)運(yùn)行。
默認(rèn)情況下,只有 root 用戶有權(quán)訪問內(nèi)核空間。root 用戶 是 Linux 中的超級(jí)用戶,相當(dāng)于 Windows 中的管理員帳戶。在 root 用戶帳戶下運(yùn)行應(yīng)用程序可能會(huì)引起安全風(fēng)險(xiǎn),是不可取的。
很多服務(wù)器服務(wù)需要 root 權(quán)限啟動(dòng)服務(wù)。然而,服務(wù)啟動(dòng)后,root 帳戶通常會(huì)將其移至服務(wù)帳戶。嚴(yán)格地說,Linux 中的服務(wù)帳戶 才是標(biāo)準(zhǔn)的用戶帳戶。主要區(qū)別是服務(wù)帳戶僅用于運(yùn)行一個(gè)服務(wù),而不是為任何實(shí)際登錄的用戶準(zhǔn)備的。
您可以使用 chmod 命令在一個(gè)文件中設(shè)置執(zhí)行權(quán)限。在 Linux 中,umask 設(shè)置通常用來防止下載的文件被執(zhí)行,也有充分的理由相信,因?yàn)樗兄诰S護(hù) Linux 計(jì)算機(jī)的安全性。
大多數(shù) Linux 發(fā)行版具有一個(gè)值為 022 的 umask 設(shè)置,這意味著,默認(rèn)情況下一個(gè)新文件權(quán)限設(shè)置為 644。權(quán)限的數(shù)字表示形式采用讀 (4)、寫 (2)、執(zhí)行 (1) 的格式。因此,默認(rèn)權(quán)限為 644 的應(yīng)用程序下載意味著文件所有者有讀寫權(quán)限,而組用戶和其他用戶只有讀權(quán)限。
例如,為每個(gè)人賦予一個(gè)文件的執(zhí)行權(quán)限,使用 chmod a+x 命令。a 表示所有人,加號(hào) (+) 表示添加,而 x 表示執(zhí)行。同樣地,如果應(yīng)用程序是一個(gè)服務(wù)器服務(wù),您應(yīng)該確保只有授權(quán)帳戶才有權(quán)執(zhí)行此服務(wù)。
如果一個(gè)應(yīng)用程序能夠在標(biāo)準(zhǔn)用戶帳戶權(quán)限下運(yùn)行,但只有特定組中的用戶才需要使用它,您可以將該組所有者權(quán)限設(shè)置為可執(zhí)行,然后將這些用戶添加到該組中。
更具體地說,您可以在一個(gè)可執(zhí)行文件中設(shè)置訪問控制列表 (ACL) 權(quán)限,賦予特定用戶或組權(quán)限來運(yùn)行該應(yīng)用程序。使用 setfacl 實(shí)用工具設(shè)置 ACL 權(quán)限。
對(duì)于這些需要以 root 用戶啟動(dòng)進(jìn)程的應(yīng)用程序,比如服務(wù)器服務(wù),您有幾個(gè)選擇??偨Y(jié)了允許用戶執(zhí)行需要 root 權(quán)限的服務(wù)器服務(wù)的各種選項(xiàng)。
作為 root 用戶 不推薦用于服務(wù)器服務(wù)。當(dāng)用戶已經(jīng)知道 root 密碼而且應(yīng)用程序泄露不是首要關(guān)注問題時(shí),可用于應(yīng)用程序。
SetUID 由于安全問題,不推薦使用。SetUID 允許標(biāo)準(zhǔn)用戶以另一個(gè)用戶方式,比如 root 用戶,執(zhí)行一個(gè)文件。
sudo 很常用,并且被認(rèn)為是一個(gè)很好的實(shí)踐。sudo 授予一個(gè)用戶或組成員權(quán)限以執(zhí)行可能額外需要 root 權(quán)限的文件。該用戶不需要知道 root 密碼。
帶有文件權(quán)限的標(biāo)準(zhǔn)用戶帳戶 在一個(gè)文件上為用戶所有者、組所有者或其他人(所有人)設(shè)置執(zhí)行權(quán)限。這是授予那些不需要 root 權(quán)限來執(zhí)行應(yīng)用程序的用戶的常用方法。
帶有 ACL 權(quán)限的標(biāo)準(zhǔn)用戶帳戶 使用較少,但是如果您不想授予一個(gè)用戶 sudo 訪問或者更改文件的權(quán)限,這也是一個(gè)可行的解決方案。在一個(gè)文件上使用 setfacl 命令,您可以授予一個(gè)特定用戶或用戶組執(zhí)行該文件的權(quán)力。
在管理 Linux 服務(wù)器時(shí),從命令行運(yùn)行應(yīng)用程序是一項(xiàng)基本的任務(wù)。很多應(yīng)用程序使用 shell 腳本(類似于 Windows 批處理文件 .bat)來啟動(dòng)應(yīng)用程序并執(zhí)行其他任務(wù),比如設(shè)置變量以及為其他用戶分配進(jìn)程。例如,應(yīng)用程序可能需要一個(gè) Java? Virtual Machine (JVM) 來執(zhí)行。那樣的話,shell 腳本可以設(shè)置適當(dāng)?shù)沫h(huán)境變量,然后執(zhí)行 Java 命令來運(yùn)行 Java Archive (JAR) 或類文件。這同樣適用于使用 Perl、Python、甚至 C# 的應(yīng)用程序。(當(dāng)然,C# 編譯的應(yīng)用程序可以在 Linux 上運(yùn)行)
從命令行或者 shell 提示符執(zhí)行應(yīng)用程序的一個(gè)常用方法是使用 ./ 命令。如果您在 Linux 中使用句號(hào) (.) 和正斜杠 (/),就意味著告訴環(huán)境您想要以可執(zhí)行文件運(yùn)行該文件。例如,運(yùn)行一個(gè)名為 myapp 的可執(zhí)行文件,您可以使用 ./myapp 命令。同樣地,您可以在文件名之前加上語言環(huán)境,比如:
sh php python perl java
但更多情況下,套裝應(yīng)用程序使用 shell 腳本,以 #! 符號(hào)設(shè)置環(huán)境變量提供該語言的運(yùn)行時(shí)可執(zhí)行路徑,比如 #!/usr/bin/python。您也應(yīng)該熟悉這種方法。
清單 1 使用 catalina.sh 默認(rèn)腳本通過 ./ 方法啟動(dòng) Apache Tomcat 應(yīng)用程序服務(wù)器。然后,使用 sh 方法啟動(dòng)服務(wù)器。因?yàn)槟J(rèn)端口是 8080,標(biāo)準(zhǔn)用戶不需要對(duì)其進(jìn)行特別修改就可以啟動(dòng)該服務(wù)。
具體步驟如下:
1、首先我們?cè)诿钚羞\(yùn)行程序需要借助jdk的環(huán)境依賴,打開jdk包。
2、接下來我們需要打開運(yùn)行窗口,然后在運(yùn)行窗口中輸入cmd命令,如下圖所示
3、在CMD命令行界面中我們輸入cd命令進(jìn)入到程序文件所在的目錄,如下圖所示
4、接下來執(zhí)行命令對(duì)程序文件進(jìn)行編譯,如下圖所示
5、編譯完畢以后我們會(huì)在文件夾下面看到一個(gè)class文件,這個(gè)就是虛擬機(jī)編譯完產(chǎn)生的文件,如下圖所示
6、完成上述步驟后,即可在linux命令行中執(zhí)行應(yīng)用程序。
是這樣的
首先要保證你安裝的是正確的,接著保證你的這個(gè)可執(zhí)行文件有當(dāng)前登錄賬號(hào)的執(zhí)行權(quán)限,可以用ls -al查看一下
如果,你可以使用如下方式執(zhí)行:
1、./tlesp (如果后面又參數(shù),你可以根據(jù)需要添加參數(shù))
2、/home/path/tlsap (如果后面又參數(shù),你可以根據(jù)需要添加參數(shù))