真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux命令實(shí)現(xiàn) linux命令操作

2 Linux終端命令

職場(chǎng)中,大部分都是通過(guò) SSH客戶端 遠(yuǎn)程操作,實(shí)現(xiàn)磁盤讀取,文件讀取,目錄操作,進(jìn)程管理等等

順義網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,順義網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為順義上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的順義做網(wǎng)站的公司定做!

打開終端3種方式,收藏夾黑色屏幕圖標(biāo)點(diǎn)擊,右鍵打開終端,Ctrl+Alt+t組合鍵

command ?[-options] [parameters] ?

command即終端命令,options為選項(xiàng)一般前面有橫杠,后面是參數(shù),選項(xiàng)和參數(shù)有中括號(hào)表示可選項(xiàng)

man command (man表示手冊(cè)縮寫,查看命令幫助文檔)出現(xiàn)文檔,按回車下滾一行,按空格(或f)下翻一頁(yè),按b上翻一頁(yè),輸入橫杠加上對(duì)應(yīng)的option可實(shí)現(xiàn)對(duì)應(yīng)部分高亮

command --help也可以實(shí)現(xiàn)幫助文檔,頁(yè)面和上面不太一樣,部分還出現(xiàn)了中文

pwd 命令 顯示當(dāng)前路徑

tree [path] 命令(默認(rèn)沒(méi)有,需要安裝,sudo apt install tree)可以將你當(dāng)前(或指定)路徑下的文件以樹狀遍歷(所有文件,遞歸)顯示出來(lái)

ls 命令 以列表顯示當(dāng)前目錄文件,(不再深層挖掘)ls顯示出來(lái)白色是文件,藍(lán)色是文件夾,綠色是可執(zhí)行文件,紅色一般是壓縮包

ls -a 顯示所有的文件包括隱藏文件,顯示結(jié)果以. 點(diǎn)開頭的就是隱藏文件

ls -l 用較長(zhǎng)方式顯示文件?

前面10個(gè)字母(分成第一個(gè)和后9個(gè),第一個(gè)橫杠表示一個(gè)文件,d表示一個(gè)目錄,l表示是個(gè)鏈接(類似快捷方式),后九個(gè),rwx表示跟讀寫等操作有關(guān),后面講),硬鏈接數(shù),文件所屬用戶(第一個(gè)demo),文件所屬組(第二個(gè)demo),文件大?。˙為單位),最后修改時(shí)間,文件

ls -h以人性化顯示文件(一般和-l一起),可看出加了-h后,文件顯示的單位方便閱讀

cd 可以跟相對(duì)路徑和絕對(duì)路徑,路徑大小寫敏感

當(dāng)前路徑用“.”表示,上級(jí)路徑“..”

cd 什么都不加或者cd ~可以直接回家目錄/home

cd /去根目錄

cd -返回上次的目錄

mkdir創(chuàng)建目錄?

mkdir 目錄名 ? 不可以一次創(chuàng)建多級(jí)目錄(文件夾不存在情況下如mkdir a/b/c,a,b都不存在情況下,創(chuàng)建不了)

如果我們就是想創(chuàng)建多級(jí)目錄呢,使用遞歸創(chuàng)建目錄,會(huì)把沒(méi)有的目錄創(chuàng)建出來(lái)

mkdir a/b/c -p

touch創(chuàng)建文件

touch +文件名(建議加后綴名),可以一次創(chuàng)建多個(gè)文件用空格隔開

touch a.txt

touch a.txt b.txt

gedit打開文件

gedit 文件相對(duì)路徑或絕對(duì)路徑,(如果未成功打開需要加上sudo gedit)

同上個(gè)命令可以同時(shí)打開多個(gè),打開的編輯器編輯內(nèi)容點(diǎn)擊保存完成文件編輯

打開文件后終端進(jìn)入等待狀態(tài)

rm刪除文件和文件夾

文件刪除不能恢復(fù)

rm -i 文件 ? ? ? 這種會(huì)出現(xiàn)是否提示,給自己個(gè)提醒機(jī)會(huì)(centos沒(méi)有-i就有提示)

rm -f 文件 ? 強(qiáng)制刪除(不提示,和上個(gè)相反)

rm -r 目錄 ? 刪除目錄(多級(jí)遞歸刪除)

cp拷貝文件和文件夾

cp a.txt b.txt 當(dāng)前路徑下的a.txt拷貝一個(gè)b.txt到當(dāng)前路徑,如果已經(jīng)存在b.txt直接覆蓋掉

加上-i模式可以給與提示(不是同名文件不會(huì)出現(xiàn))

-f 強(qiáng)制復(fù)制不提示

-v 顯示一行拷貝的過(guò)程

如果是復(fù)制文件夾要加上 -r 遞歸拷貝

-a 把文件或文件夾(是遞歸拷貝)的權(quán)限也一起復(fù)制過(guò)去

mv移動(dòng)文件文件夾,重命名

mv 原路徑 目標(biāo)路徑

如果存在同名文件,默認(rèn)會(huì)覆蓋,還是加-i提示,如果選擇n,不會(huì)移動(dòng)成功

-f 強(qiáng)制移動(dòng)不提示

-v 顯示移動(dòng)過(guò)程

移動(dòng)文件夾不用加-r(刪除和拷貝不一樣)

clear 清除終端顯示內(nèi)容(類似DOS cls)快捷鍵,Ctrl+L

實(shí)際效果只是往下滾動(dòng),當(dāng)前輸入為第一行,拖動(dòng)滾動(dòng)條還是能看見之前的內(nèi)容= =

tab 自動(dòng)補(bǔ)全(有時(shí)多個(gè)可能要再按下tab出現(xiàn)候選提示)

which 查看命令位置

光標(biāo)↑↓ 查看翻查之前調(diào)用過(guò)的命令

Ctrl+C 終止程序運(yùn)行

終端字體大小調(diào)整Ctrl Shift +(放大)

Ctrl - (縮小,注意無(wú)shift)

cal顯示日歷,當(dāng)日高亮

cal -3顯示當(dāng)前月及上下月的日歷(沒(méi)有-別的數(shù)字)

cal -y 顯示一年的日歷

cal -j 日歷顯示是當(dāng)年第幾天

cal 年份4位數(shù)(獲得年份日歷)

date顯示日期

date 加雙引號(hào)字符串格式化顯示,注意對(duì)應(yīng)大小寫

%F,%T同樣實(shí)現(xiàn)類似效果,分別格式化日期和時(shí)間

history 獲得所有的歷史指令

history 數(shù)字 顯示最近的數(shù)字條指令

如果我看到對(duì)應(yīng)指令,然后根據(jù)指令編號(hào),直接輸入

! 指令編號(hào) ? ? 即可執(zhí)行對(duì)應(yīng)指令,這些歷史指令都存在于家目錄隱藏文件 .bash_history 中

cat 直接在命令行顯示文件內(nèi)容,和gedit不一樣

-n 查看文件同時(shí)顯示行號(hào)

-b 文件空行不編號(hào),但是給空出位置,顯示非空行編號(hào)

-s 兩行以上的空行只顯示一行(可以和前面的組合 -sb ? )

同時(shí)打開多個(gè)文件效果

more

more 文件路徑 ?

分屏查看,會(huì)顯示已經(jīng)顯示部分的百分比,

按回車滾一行,

按空格 ?或 ?Ctrl+F或F向下翻一屏,

Ctrl+B或B回滾一屏

q退出

more +num 表示從第num行開始查看,文件默認(rèn)第一行為1

-p 選項(xiàng) 清屏 置頂顯示內(nèi)容

-s 連續(xù)2行以上的空行顯示一個(gè)空行

more 也可以加多個(gè)文件,顯示不同文件有專門的分割,這是與cat的區(qū)別

【Linux】實(shí)現(xiàn)一個(gè)簡(jiǎn)單的shell命令解釋器

姓名:羅學(xué)元? ? ? ?學(xué)號(hào):21181214375 ????學(xué)院:廣州研究院

【嵌牛導(dǎo)讀】shell命令解釋器該包含哪些部分

【嵌牛鼻子】shell命令解釋器該包含哪些部分

【嵌牛提問(wèn)】shell命令解釋器該包含哪些部分

我們所做的這個(gè)簡(jiǎn)單的shell命令解釋器可以實(shí)現(xiàn)簡(jiǎn)單的常用的基本命令,如ls、pwd、cd、cd - 、cd ~ 等

根據(jù)簡(jiǎn)單命令的定義,它的第一個(gè)參數(shù)是要執(zhí)行的命令,后面的參數(shù)作為該命令的參數(shù)。

要執(zhí)行的命令有兩種情況:

一種是外部命令: 也就是對(duì)應(yīng)著磁盤上的某個(gè)程序,例如 pwd、ls等等。對(duì)于這種外部命令,我們首先要到指定的路徑下找到它,然后再執(zhí)行它。

另一種是內(nèi)部命令:內(nèi)部命令并不對(duì)應(yīng)磁盤上的程序,例如cd等等,它需要shell自己來(lái)決定該如何執(zhí)行。例如對(duì) cd 命令,shell就應(yīng)該根據(jù)它后面的參數(shù)改變當(dāng)前路徑。

對(duì)于外部命令,需要?jiǎng)?chuàng)建一個(gè)子進(jìn)程來(lái)執(zhí)行它,本質(zhì)就是fork+exec

#include stdio.h

#include stdlib.h

#include assert.h

#include string.h

#include pwd.h

#include sys/utsname.h

#include sys/types.h

#include unistd.h

#define MAX 10

#define STRLEN 128

#define PATH "/bin/" //系統(tǒng)bin路徑位置

char OLDPWD[STRLEN]={0}; //記錄上一次的命令,為了cd -這條命令

//================================================================================

//每次敲回車輸出當(dāng)前所在用戶信息

//普通用戶和root用戶的提示符區(qū)別

void Printf_Info()

{

char flag='$';

struct passwd *pw=getpwuid(getuid());

assert(pw!=NULL);

//uid為0則為root用戶

if(pw-pw_uid==0)

{

flag='#';

}

struct utsname hostname; //主機(jī)名

uname(hostname);

char node[STRLEN]={0};

strcpy(node,hostname.nodename); //獲取網(wǎng)絡(luò)上的名稱

char* name=strtok(node,".");

//獲取絕對(duì)路徑

char path[STRLEN]={0};

getcwd(path,STRLEN-1);

char*p=path+strlen(path); //p指向絕對(duì)路徑的末尾

while(*p!='/')

{

p--;

}

//p指向路徑末尾往前的第一個(gè)‘/’位置處

if(strlen(path)!=1)

{

p++; //++前,p-'/'

}

if(strcmp(path,pw-pw_dir)==0)

{

p="~";

}

printf("\033[;32mMyBash[%s@%s %s]%c\033[0m",pw-pw_name,name,p,flag);

//? \033[47;31mThis is a color test\033[0m? 設(shè)置打印結(jié)果的顏色

fflush(stdout);

}

//================================================================================

void Mycd(char*path)

{

//第一個(gè)字符串為cd而第二為空 如:cd 則結(jié)束本輪循環(huán)

if(path==NULL)

{

exit(0);

}

//cd ~ 回到用戶根目錄

if(strcmp(path,"~")==0)

{

? ? struct passwd*pw=getpwuid(getuid());

? ? path=pw-pw_dir;

}

//cd - 回到上一次的位置

if(strcmp(path,"-")==0)?

{

? //若是第一次輸入命令,則cd -命令不存在!

? ? if(strlen(OLDPWD)==0)

? ? {

? ? ? ? printf("\033[;31mMyBash:cd:OLDPWD not set\n\033[0m");

? ? ? ? return ;

? ? }

? ? //否則把上一次的命令給path

? ? path=OLDPWD;

}

//getpwd記錄當(dāng)前工作目錄的絕對(duì)路徑

char oldpwd[STRLEN]={0};

getcwd(oldpwd,STRLEN-1);

if(-1==chdir(path))//反之則不是空,則通過(guò)chdir系統(tǒng)調(diào)用進(jìn)入到該目錄中

{

? ? char err[128]="\033[;31mMybash: cd \033[0m";

? ? strcat(err,path);

? ? perror(err);

}

//每次執(zhí)行完cd命令后,把工作路徑賦給OLDPWD

strcpy(OLDPWD,oldpwd);

}

//================================================================================

//命令分割函數(shù)

void Strtok_cmd(char*buff,char*myargv[])

{

char *s=strtok(buff," "); //分割輸入的字符串

if(s==NULL) //如果s為空,則進(jìn)入下一輪循環(huán)

{

exit(0);

}

myargv[0]=s; //把分割出來(lái)的第一個(gè)字符串放在myargv[0]中

int i=1;

while((s=strtok(NULL,""))!=NULL) //把后續(xù)分割出來(lái)的字符串依次存放在數(shù)組中

{

myargv[i++]=s;

}

}

//===============================================================

int main()

{

while(1)

{

char buff[128]={0};

Printf_Info();

//從終端獲取命令存入buff中

fgets(buff,128,stdin);

buff[strlen(buff)-1]=0;

char *myargv[MAX]={0};

//分割輸入的命令

Strtok_cmd(buff,myargv);

//如果輸入exit則退出循環(huán)

if(strcmp(myargv[0],"exit")==0)

{

exit(0);

}

//如果分割出來(lái)的第一個(gè)字符串為cd

else if(strcmp(myargv[0],"cd")==0)

{

Mycd(myargv[1]);

continue;

}

//若是系統(tǒng)調(diào)用,直接替換fork+exec

pid_t pid=fork();

assert(pid!=-1);

if(pid==0)

{

char path[256]={0};

if(strncmp(myargv[0],"./",2)!=0 strncmp(myargv[0],"/",1)!=0)

{

//先把路徑放入path中

strcpy(path,PATH);

}

//進(jìn)行命令拼接,路徑+名稱

strcat(path,myargv[0]);

//替換進(jìn)程 例如:/bin/ls

execv(path,myargv);

perror("\033[;31mexecv error\033[0m");

}

//處理僵死進(jìn)程

else

{

wait(NULL);

}

}

}

運(yùn)行結(jié)果如下 :

異常處理如下:

若是第一次運(yùn)行程序,則不能使用cd - 命令,因?yàn)榇藭r(shí)還沒(méi)有歷史路徑

若進(jìn)入一個(gè)不存在的目錄則會(huì)報(bào)錯(cuò),沒(méi)有這個(gè)文件或目錄

若直接輸入一個(gè)不存在的無(wú)法識(shí)別的命令,也會(huì)報(bào)錯(cuò)。

怎么用C語(yǔ)言實(shí)現(xiàn)linux的命令

命令是查詢當(dāng)前登錄的每個(gè)用戶,它的輸出包括用戶名、終端類型、登錄日期及遠(yuǎn)程主機(jī),在Linux系統(tǒng)中輸入who命令輸出如下:

我們先man一下who,在幫助文檔里可以看到,who命令是讀取/var/run/utmp文件來(lái)得到以上信息的。

我們?cè)賛an一下utmp,知道utmp這個(gè)文件,是二進(jìn)制文件,里面保存的是結(jié)構(gòu)體數(shù)組,這些數(shù)組是struct utmp結(jié)構(gòu)體的。

struct utmp {

short ut_type;

pid_t ut_pid;

char ut_line[UT_LINESIZE];

char ut_id[4];

char ut_user[UT_NAMESIZE];

char ut_host[UT_HOSTSIZE];

struct {

int32_t tv_sec;

int32_t tv_usec;

} ut_tv;

/***等等***/

};

要實(shí)現(xiàn)who只需要把utmp文件的所有結(jié)構(gòu)體掃描過(guò)一遍,把需要的信息顯示出來(lái)就可以了,我們需要的信息有ut_user、ut_line、ut_tv、ut_host。

老師給的初始代碼:who1.c運(yùn)行結(jié)果如下:

需要注意的是utmp中所保存的時(shí)間是以秒和微妙來(lái)計(jì)算的,所以我們需要把這個(gè)時(shí)間轉(zhuǎn)換為我們能看懂的時(shí)間,利用命令man -k time | grep 3搜索C語(yǔ)言中和時(shí)間相關(guān)的函數(shù):

經(jīng)過(guò)搜索發(fā)現(xiàn)了一個(gè)ctime()函數(shù),似乎可以滿足我們的需求,于是對(duì)代碼中關(guān)于時(shí)間的printf進(jìn)行修改:

printf("%s",ctime(utbufp-ut_time));

編譯運(yùn)行發(fā)現(xiàn)出來(lái)的結(jié)果雖然已經(jīng)轉(zhuǎn)換成了我們能看懂的時(shí)間格式,但是很明顯這個(gè)時(shí)間是錯(cuò)的:

搜索一下ut_time這個(gè)宏,發(fā)現(xiàn)它被定義為int32_t類型:

但是ctime()函數(shù)中要求參數(shù)的類型是time_t類型,所以重新定義一下類型,編譯運(yùn)行之后,發(fā)現(xiàn)時(shí)間已經(jīng)改成了正確的,但是發(fā)現(xiàn)()中的內(nèi)容被換行了,猜想ctime()函數(shù)的返回值可能自動(dòng)在最后補(bǔ)了一個(gè)字符\n:

一開始想通過(guò)\r\b來(lái)實(shí)現(xiàn)“退行”,但實(shí)踐后發(fā)現(xiàn)并不可取,最后考慮到直接修改字符串中最后一個(gè)字符為\0,讓其字符串結(jié)束,使輸出達(dá)到與系統(tǒng)who命令一樣的效果,即在輸出語(yǔ)句前添加如下代碼:

cp[strlen(cp)-1] = '\0'

最后編譯執(zhí)行效果,發(fā)現(xiàn)解決了該問(wèn)題:

雖然能看出基本上和who指令的執(zhí)行結(jié)果一致,但是并非完全一樣,主要在兩點(diǎn),第一是時(shí)間格式不一樣,第二個(gè)是比who執(zhí)行的結(jié)果多了幾條,需要注意的是utmp中保存的用戶,不僅僅是已經(jīng)登陸的用戶,還有系統(tǒng)的其他服務(wù)所需要的“用戶”,所以在顯出所有登陸用戶的時(shí)候,應(yīng)該過(guò)濾掉其他用戶,只保留登陸用戶。我們可以通過(guò)ut_type來(lái)區(qū)別,登陸用戶的ut_type是USER_PROCESS。

先用if語(yǔ)句對(duì)執(zhí)行結(jié)果進(jìn)行過(guò)濾,效果如下:

接著解決時(shí)間格式問(wèn)題,利用man命令收到了兩個(gè)非常有用的函數(shù):localtime()和strftime(),localtime()是把從1970-1-1零點(diǎn)零分到當(dāng)前時(shí)間系統(tǒng)所偏移的秒數(shù)時(shí)間轉(zhuǎn)換為本地時(shí)間,strftime()則是用來(lái)定義時(shí)間格式的,如:年-月-日,利用這兩個(gè)函數(shù)對(duì)時(shí)間進(jìn)行修改后,結(jié)果顯示終于和系統(tǒng)中who命令一模一樣:

最終完整的代碼如下:

#include stdio.h

#include stdlib.h

#include utmp.h

#include fcntl.h

#include unistd.h

#include time.h

#define SHOWHOST

void show_time(long timeval){

char format_time[40];

struct tm *cp;

cp = localtime(timeval);

strftime(format_time,40,"%F %R",cp);

printf("%s",format_time);

}

int show_info( struct utmp *utbufp )

{

if(utbufp-ut_type == USER_PROCESS){

printf("%-8.8s", utbufp-ut_name);

printf(" ");

printf("%-8.8s", utbufp-ut_line);

printf(" ");

show_time(utbufp-ut_time);

printf(" ");

#ifdef SHOWHOST

printf("(%s)", utbufp-ut_host);

#endif

printf("\n");

}

return 0;

}

int main()

{

struct utmp current_record;

int utmpfd;

int reclen = sizeof(current_record);

if ( (utmpfd = open(UTMP_FILE, O_RDONLY)) == -1 ){

perror( UTMP_FILE );

exit(1);

}

while ( read(utmpfd, current_record, reclen) == reclen )

show_info(current_record);

close(utmpfd);

return 0;

}

Linux命令

快照功能:記錄當(dāng)前的硬盤的狀態(tài)。剛建快照時(shí)快照占用內(nèi)存為0,標(biāo)記了當(dāng)前硬盤的存儲(chǔ)狀態(tài)。當(dāng)虛擬機(jī)對(duì)快照標(biāo)記的內(nèi)容改寫時(shí),會(huì)將改寫的內(nèi)容存儲(chǔ)進(jìn)快照,與未改寫的部分整合得到完整的快照。當(dāng)快照標(biāo)記的部分被完全改寫,那么快照存儲(chǔ)空間完整記錄了當(dāng)時(shí)拍攝時(shí)的內(nèi)存狀態(tài)。

參數(shù)形式

第一種:參數(shù)用一橫的說(shuō)明后面的參數(shù)是字符形式。

第二種:參數(shù)用兩橫的說(shuō)明后面的參數(shù)是單詞形式。

第三種:參數(shù)前有橫的是 System V風(fēng)格。

第四種:參數(shù)前沒(méi)有橫的是 BSD風(fēng)格。

cat、more、less、head、tail命令的比較:

cat命令可以一次顯示整個(gè)文件,如果文件比較大,使用不是很方便;

more命令可以讓屏幕在顯示滿一屏幕時(shí)暫停,按空格往前翻頁(yè),按b往后翻頁(yè)。

less命令也可以分頁(yè)顯示文件,和more命令的區(qū)別就在于: 支持上下鍵卷動(dòng)屏幕、查找;不需要在一開始就讀取整個(gè)文件,打開大文件時(shí)比more、vim更快。

head命令用于查看文件的前n行。

tail命令用于查看文件的后n行,加上-f命令,查看在線日志非常方便,可以打印最新增加的日志。

一般模式:

編輯模式:

命令模式:

編碼

多行操作(列編輯模式)

插入:ctrl+v進(jìn)入列編輯模式,上下移動(dòng)光標(biāo)選擇需要插入的位置,然后輸入大寫I,輸入需要文本,最后按esc鍵退出,就會(huì)發(fā)現(xiàn)文本會(huì)在選擇的多行中插入。

刪除:ctrl+v進(jìn)入列編輯模式,上下移動(dòng)光標(biāo)選中需要?jiǎng)h除的部分,然后按d,就會(huì)刪除選中的內(nèi)容。

①head:顯示文件頭部?jī)?nèi)容

②tail:輸出文件尾部?jī)?nèi)容

注意:用vim和vi修改內(nèi)容會(huì)刪除源文件并生成新文件,所以tail -f會(huì)失效。需要用到

追加和覆蓋語(yǔ)句(或),才能被tail -f監(jiān)視到。

一般用于查看小文件

查看壓縮文件中的文本內(nèi)容

例:

①more:文件內(nèi)容分屏查看器

②less:分屏顯示文件內(nèi)容,效率比more高

1、簡(jiǎn)單讀取

運(yùn)行腳本如下

測(cè)試結(jié)果為:

2、-p 參數(shù),允許在 read 命令行中直接指定一個(gè)提示。

運(yùn)行腳本如下

測(cè)試結(jié)果為:

echo [選項(xiàng)] [輸出內(nèi)容] (輸出內(nèi)容到控制臺(tái))

輸出給定文本的sha256加密后的內(nèi)容

①顯示當(dāng)前時(shí)間信息

②顯示當(dāng)前時(shí)間年月日

③顯示當(dāng)前時(shí)間年月日時(shí)分秒

④顯示昨天

⑤顯示明天時(shí)間

⑥顯示上個(gè)月時(shí)間

需要注意的是取下個(gè)月的命令存在bug,執(zhí)行如下命令會(huì)得到21-10,但是正常應(yīng)該得到21-09,需要注意

date -d "2021-08-31 +1 month" +%y-%m

⑦修改系統(tǒng)時(shí)間

⑧獲取當(dāng)前時(shí)間戳

獲取秒時(shí)間戳: date +%s

獲取毫秒時(shí)間戳:$[ (date +%s%N) /1000000]

查看日歷

(1)查看當(dāng)前月的日歷

(2)查看2017年的日歷

例:

對(duì)比gzip/gunzip,zip/unzip可以壓縮文件和目錄且保留源文件。

①zip:壓縮

②unzip:解壓縮

只能壓縮文件不能壓縮目錄,不保留原來(lái)的文件。

gzip 文件 (只能將文件壓縮為*.gz文件)

gunzip 文件.gz (解壓縮文件命令)

例: crontab -e

(1)進(jìn)入crontab編輯界面。會(huì)打開vim編輯你的工作。

(2)每隔1分鐘,向/root/bailongma.txt文件中添加一個(gè)11的數(shù)字

*/1 * * * * /bin/echo ”11” /root/bailongma.txt

(3)可以用tail -f 目標(biāo)文件來(lái)實(shí)施監(jiān)控追加的內(nèi)容

查看日志

可以用tail -f /var/log/cron.log觀察

Cron表達(dá)式見文章:

ls [選項(xiàng)] [目錄或是文件]

cd [參數(shù)]

例: cd -P $(dirname $p1) ; pwd 先跳轉(zhuǎn)到文件的所在目錄,再打印$p1文件的實(shí)際路徑

概述

①cp(copy):只能在本機(jī)中復(fù)制

②scp(secure copy):可以復(fù)制文件給遠(yuǎn)程主機(jī)

scp -r test.sh hxr@hadoop102:/root

③rsync(remote sync):功能與scp相同,但是不會(huì)改文件屬性

rsync -av test.sh test.sh hxr@hadoop102:/root

④nc(netcat):監(jiān)聽端口,可以實(shí)現(xiàn)機(jī)器之間傳輸文件。

nc -lk 7777 (-l表示listen,-k表示keep)

強(qiáng)制覆蓋不提示的方法:\cp

例:scp -r test.sh hxr@bigdata1:/root

例:rsync -av test.sh hxr@bigdata1:/root

例:

nc -lp 10000 nc_test.txt

nc -w 1 hadoop102 nc_test.txt

遠(yuǎn)程登錄時(shí)默認(rèn)使用的私鑰為~/.ssh/id_rsa

生成密鑰對(duì)

將公鑰發(fā)送到本機(jī)

將密鑰發(fā)送到需要登錄到本機(jī)的服務(wù)器上

修改密鑰的權(quán)限

遠(yuǎn)程登陸

如果有多個(gè)節(jié)點(diǎn)需要遠(yuǎn)程登陸,可以在.ssh下創(chuàng)建config并輸入

再次登陸

①正向代理:

②反向代理:

所謂“反向代理”就是讓遠(yuǎn)端啟動(dòng)端口,把遠(yuǎn)端端口數(shù)據(jù)轉(zhuǎn)發(fā)到本地。

HostA 將自己可以訪問(wèn)的 HostB:PortB 暴露給外網(wǎng)服務(wù)器 HostC:PortC,在 HostA 上運(yùn)行:

那么鏈接 HostC:PortC 就相當(dāng)于鏈接 HostB:PortB。

使用時(shí)需修改 HostC 的 /etc/ssh/sshd_config 的一條配置如下,不然啟動(dòng)的進(jìn)程監(jiān)聽的ip地址為127.0.0.1,即只有本機(jī)可以訪問(wèn)該端口。

相當(dāng)于內(nèi)網(wǎng)穿透,比如 HostA 和 HostB 是同一個(gè)內(nèi)網(wǎng)下的兩臺(tái)可以互相訪問(wèn)的機(jī)器,HostC是外網(wǎng)跳板機(jī),HostC不能訪問(wèn) HostA,但是 HostA 可以訪問(wèn) HostC。

那么通過(guò)在內(nèi)網(wǎng) HostA 上運(yùn)行 ssh -R 告訴 HostC,創(chuàng)建 PortC 端口監(jiān)聽,把該端口所有數(shù)據(jù)轉(zhuǎn)發(fā)給我(HostA),我會(huì)再轉(zhuǎn)發(fā)給同一個(gè)內(nèi)網(wǎng)下的 HostB:PortB。

同內(nèi)網(wǎng)下的 HostA/HostB 也可以是同一臺(tái)機(jī)器,換句話說(shuō)就是 內(nèi)網(wǎng) HostA 把自己可以訪問(wèn)的端口暴露給了外網(wǎng) HostC。

例: 比如在我的內(nèi)網(wǎng)機(jī)192.168.32.244上有一個(gè)RabbitMQ的客戶端,端口號(hào)為15672。現(xiàn)在我希望在外網(wǎng)上訪問(wèn)固定ip的云服務(wù)器chenjie.asia的6009端口,通過(guò)跳板機(jī)192.168.32.243來(lái)轉(zhuǎn)發(fā)請(qǐng)求到192.168.32.244:15672,從而實(shí)現(xiàn)在外網(wǎng)訪問(wèn)內(nèi)網(wǎng)服務(wù)的功能,即內(nèi)網(wǎng)穿透。

①在192.168.32.244上啟動(dòng)RabbitMQ服務(wù)

②將chenjie.asia云服務(wù)器的私鑰復(fù)制到跳板機(jī)192.168.32.243的~/.ssh下,并重命名為id_rsa。通過(guò)如下命令看是否可以遠(yuǎn)程登陸到云服務(wù),可以登陸則進(jìn)行下一步。

③修改chenjie.asia服務(wù)器的ssh配置文件 /etc/ssh/sshd_config ,允許其他節(jié)點(diǎn)訪問(wèn)

然后重啟sshd服務(wù)

④在跳板機(jī)192.168.32.243啟動(dòng)ssh反向代理

這個(gè)進(jìn)程在關(guān)閉session時(shí)會(huì)停止,可以添加啟動(dòng)參數(shù) -CPfN

例:

以 root 身份執(zhí)行的程序有了所有特權(quán),這會(huì)帶來(lái)安全風(fēng)險(xiǎn)。Kernel 從 2.2 版本開始,提供了 Capabilities 功能,它把特權(quán)劃分成不同單元,可以只授權(quán)程序所需的權(quán)限,而非所有特權(quán)。

例如:linux不允許非root賬號(hào)只用1024以下的端口,使用root啟動(dòng)命令nginx,會(huì)導(dǎo)致nginx權(quán)限過(guò)高太危險(xiǎn)。所以用setcap命令

sudo setcap cap_net_bind_service=+eip /bigdata/nginx/sbin/nginx

正確的關(guān)機(jī)流程為 :sync shutdown reboot halt

(1)sync (功能描述:將數(shù)據(jù)由內(nèi)存同步到硬盤中)

(2)halt (功能描述:關(guān)閉系統(tǒng),等同于shutdown -h now 和 poweroff)

(3)reboot (功能描述:就是重啟,等同于 shutdown -r now)

(4)shutdown [選項(xiàng)] [時(shí)間]

安裝

yum install -y telnet-server telnet

ls -i 顯示文件的節(jié)點(diǎn)號(hào)

find -inum 節(jié)點(diǎn)號(hào) -delete 刪除指定的節(jié)點(diǎn)即可刪除對(duì)應(yīng)的文件

啟動(dòng)一個(gè)服務(wù): systemctl start postfix.service

關(guān)閉一個(gè)服務(wù): systemctl stop postfix.service

重啟一個(gè)服務(wù): systemctl restart postfix.service

顯示一個(gè)服務(wù)的狀態(tài): systemctl status postfix.service

在開機(jī)時(shí)啟用一個(gè)服務(wù): systemctl enable postfix.service

在開機(jī)時(shí)禁用一個(gè)服務(wù): systemctl disable postfix.service

注:在enable的時(shí)候會(huì)打印出來(lái)該啟動(dòng)文件的位置

列出所有已經(jīng)安裝的服務(wù)及狀態(tài):

systemctl list-units

systemctl list-unit-files

查看服務(wù)列表狀態(tài):

systemctl list-units --type=service

查看服務(wù)是否開機(jī)啟動(dòng): systemctl is-enabled postfix.service

查看已啟動(dòng)的服務(wù)列表: systemctl list-unit-files | grep enabled

查看啟動(dòng)失敗的服務(wù)列表: systemctl --failed

查看服務(wù)日志: journalctl -u postfix -n 10 -f

命令類似systemctl,用于操作native service。

添加腳本為服務(wù)(需要指定啟動(dòng)級(jí)別和優(yōu)先級(jí)): chkconfig --add [腳本]

刪除服務(wù): chkconfig --del [腳本]

單獨(dú)查看某一服務(wù)是否開機(jī)啟動(dòng)的命令 : chkconfig --list [服務(wù)名]

單獨(dú)開啟某一服務(wù)的命令 : chkconfig [服務(wù)名] on

單獨(dú)關(guān)閉某一服務(wù)的命令: chkconfig [服務(wù)名] off

查看某一服務(wù)的狀態(tài): /etc/intd.d/[服務(wù)名] status

啟用服務(wù)就是在當(dāng)前"runlevel"的配置文件目錄 /etc/systemd/system/multi-user.target.wants 里,建立 /usr/lib/systemd/system 里面對(duì)應(yīng)服務(wù)配置文件的軟鏈接;禁用服務(wù)就是刪除此軟鏈接,添加服務(wù)就是添加軟連接。

su 用戶名稱 (切換用戶,只能獲得用戶的執(zhí)行權(quán)限,不能獲得環(huán)境變量)

su - 用戶名稱 (切換到用戶并獲得該用戶的環(huán)境變量及執(zhí)行權(quán)限)

echo $PATH 打印環(huán)境變量

設(shè)置普通用戶具有root權(quán)限

修改 /etc/sudoers 文件,找到下面一行(91行),在root下面添加一行,如下 所示:

或者配置成采用sudo命令時(shí),不需要輸入密碼

修改完畢,現(xiàn)在可以用hxr 帳號(hào)登錄,然后用命令 sudo ,即可獲得root權(quán)限進(jìn)行操作。

以azkaban用戶執(zhí)行引號(hào)中的命令

gpasswd -d [username] [groupname] 將用戶從組中刪除

gpasswd -a [username] [groupname] 將用戶加入到組中

用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實(shí)際上就是對(duì) /etc/group文件的更新。

0首位表示類型 - 代表文件 d 代表目錄 l 鏈接文檔(link file)

三種特殊權(quán)限suid、sgid、sticky

例子:

變更文件權(quán)限方式一

例:chmod u-x,o+x houge.txt

變更文件權(quán)限方式二

例:chmod -R 777 /mnt/ 修改整個(gè)文件夾的文件權(quán)限

在linux中創(chuàng)建文件或者目錄會(huì)有一個(gè)默認(rèn)權(quán)限的,這個(gè)默認(rèn)權(quán)限是由umask決定的(默認(rèn)為0022)。umask設(shè)置的是權(quán)限的“補(bǔ)碼”,而我們常用chmod設(shè)置的是文件權(quán)限碼。一般在/etc/profile 、~/.bashprofile 或者 ~/.profile中設(shè)置umask值。

umask計(jì)算

如root用戶的默認(rèn)umask為0022(第一個(gè)0 代表特殊權(quán)限位,這里先不考慮),創(chuàng)建的文件默認(rèn)權(quán)限是644(即默認(rèn)666掩上umask的022),創(chuàng)建的目錄是755(即默認(rèn)777掩上umask的022)。

對(duì)于root用戶的umask=022這個(gè)來(lái)說(shuō),777權(quán)限二進(jìn)制碼就是(111)(111)(111),022權(quán)限二進(jìn)制碼為(000)(010)(010)。

上面就是一個(gè)umask的正常計(jì)算過(guò)程,但是這樣實(shí)在是太麻煩了。我們使用如下的簡(jiǎn)單的方法快速計(jì)算。

上面的這個(gè)方法計(jì)算是非常方便的, 為何得到奇數(shù)要+1呢?

文件的最大權(quán)限是666,都是偶數(shù),你得到奇數(shù),說(shuō)明你的umask有奇數(shù)啊,讀為4,寫為2,都是偶數(shù),說(shuō)明你有執(zhí)行權(quán)限的。

就按照上面的umask=023為例,在計(jì)算其他用戶權(quán)限的時(shí)候6-3=3 ,6是讀寫,3是寫和執(zhí)行,其實(shí)應(yīng)該是讀寫權(quán)限減去讀權(quán)限的得到寫權(quán)限的,相當(dāng)于我們多減去了一個(gè)執(zhí)行權(quán)限。所以結(jié)果加1。

umask修改

如果想單獨(dú)修改某個(gè)文件夾的新建文件的權(quán)限,可以使用setfacl命令。

例:遞歸改變文件所有者和所有組 chown -R hxr:hxr /mnt

例:

Linux命令大全

linux命令格式:

說(shuō)明:command: 命令名,相應(yīng)功能的英文單詞或單詞的縮寫 [-options]:選項(xiàng),可用來(lái)對(duì)命令進(jìn)行控制,也可以省略,[]代表可選 parameter1 …:傳給命令的參數(shù):可以是零個(gè)一個(gè)或多個(gè)

一般是linux命令自帶的幫助信息

如:

man是linux提供的一個(gè)手冊(cè),包含了絕大部分的命令、函數(shù)使用說(shuō)明

該手冊(cè)分成很多章節(jié)(section),使用man時(shí)可以指定不同的章節(jié)來(lái)瀏覽。

例:man ls ; man 2 printf

man中各個(gè)section意義如下:

man是按照手冊(cè)的章節(jié)號(hào)的順序進(jìn)行搜索的。

man設(shè)置了如下的功能鍵:

在敲出命令的前幾個(gè)字母的同時(shí),按下tab鍵,系統(tǒng)會(huì)自動(dòng)幫我們補(bǔ)全命令

當(dāng)系統(tǒng)執(zhí)行過(guò)一些命令后,可按上下鍵翻看以前的命令,history將執(zhí)行過(guò)的命令列舉出來(lái)

ls是英文單詞list的簡(jiǎn)寫,其功能為列出目錄的內(nèi)容,是用戶最常用的命令之一,它類似于DOS下的dir命令。

Linux文件或者目錄名稱最長(zhǎng)可以有265個(gè)字符,“.”代表當(dāng)前目錄,“..”代表上一級(jí)目錄,以“.”開頭的文件為隱藏文件,需要用 -a 參數(shù)才能顯示。

ls常用參數(shù):

Linux允許將命令執(zhí)行結(jié)果重定向到一個(gè)文件,本應(yīng)顯示在終端上的內(nèi)容保存到指定文件中。

如:ls test.txt ( test.txt 如果不存在,則創(chuàng)建,存在則覆蓋其內(nèi)容 )

注意: 輸出重定向會(huì)覆蓋原來(lái)的內(nèi)容,輸出重定向則會(huì)追加到文件的尾部。

查看內(nèi)容時(shí),在信息過(guò)長(zhǎng)無(wú)法在一屏上顯示時(shí),會(huì)出現(xiàn)快速滾屏,使得用戶無(wú)法看清文件的內(nèi)容,此時(shí)可以使用more命令,每次只顯示一頁(yè),按下空格鍵可以顯示下一頁(yè),按下q鍵退出顯示,按下h鍵可以獲取幫助。

管道:一個(gè)命令的輸出可以通過(guò)管道做為另一個(gè)命令的輸入。

管道我們可以理解現(xiàn)實(shí)生活中的管子,管子的一頭塞東西進(jìn)去,另一頭取出來(lái),這里“ | ”的左右分為兩端,左端塞東西(寫),右端取東西(讀)。

clear作用為清除終端上的顯示(類似于DOS的cls清屏功能),也可使用快捷鍵:Ctrl + l ( “l(fā)” 為字母 )。

在使用Unix/Linux的時(shí)候,經(jīng)常需要更換工作目錄。cd命令可以幫助用戶切換工作目錄。Linux所有的目錄和文件名大小寫敏感

cd后面可跟絕對(duì)路徑,也可以跟相對(duì)路徑。如果省略目錄,則默認(rèn)切換到當(dāng)前用戶的主目錄。

使用pwd命令可以顯示當(dāng)前的工作目錄,該命令很簡(jiǎn)單,直接輸入pwd即可,后面不帶參數(shù)。

通過(guò)mkdir命令可以創(chuàng)建一個(gè)新的目錄。參數(shù)-p可遞歸創(chuàng)建目錄。

需要注意的是新建目錄的名稱不能與當(dāng)前目錄中已有的目錄或文件同名,并且目錄創(chuàng)建者必須對(duì)當(dāng)前目錄具有寫權(quán)限。

可使用rmdir命令刪除一個(gè)目錄。必須離開目錄,并且目錄必須為空目錄,不然提示刪除失敗。

可通過(guò)rm刪除文件或目錄。使用rm命令要小心,因?yàn)槲募h除后不能恢復(fù)。為了防止文件誤刪,可以在rm后使用-i參數(shù)以逐個(gè)確認(rèn)要?jiǎng)h除的文件。

常用參數(shù)及含義如下表所示:

Linux鏈接文件類似于Windows下的快捷方式。

鏈接文件分為軟鏈接和硬鏈接。

軟鏈接:軟鏈接不占用磁盤空間,源文件刪除則軟鏈接失效。

硬鏈接:硬鏈接只能鏈接普通文件,不能鏈接目錄。

使用格式:

如果沒(méi)有-s選項(xiàng)代表建立一個(gè)硬鏈接文件,兩個(gè)文件占用相同大小的硬盤空間,即使刪除了源文件,鏈接文件還是存在,所以-s選項(xiàng)是更常見的形式。

注意:如果軟鏈接文件和源文件不在同一個(gè)目錄,源文件要使用絕對(duì)路徑,不能使用相對(duì)路徑。

Linux系統(tǒng)中g(shù)rep命令是一種強(qiáng)大的文本搜索工具,grep允許對(duì)文本文件進(jìn)行模式查找。如果找到匹配模式, grep打印包含模式的所有行。

grep一般格式為:

在grep命令中輸入字符串參數(shù)時(shí),最好引號(hào)或雙引號(hào)括起來(lái)。例如:grep‘a(chǎn) ’1.txt。

常用選項(xiàng)說(shuō)明:

find命令功能非常強(qiáng)大,通常用來(lái)在特定的目錄下搜索符合條件的文件,也可以用來(lái)搜索特定用戶屬主的文件。

常用用法:

cp命令的功能是將給出的文件或目錄復(fù)制到另一個(gè)文件或目錄中,相當(dāng)于DOS下的copy命令。

常用選項(xiàng)說(shuō)明:

用戶可以使用mv命令來(lái)移動(dòng)文件或目錄,也可以給文件或目錄重命名。

常用選項(xiàng)說(shuō)明:

計(jì)算機(jī)中的數(shù)據(jù)經(jīng)常需要備份,tar是Unix/Linux中最常用的備份工具,此命令可以把一系列文件歸檔到一個(gè)大文件中,也可以把檔案文件解開以恢復(fù)數(shù)據(jù)。

tar使用格式 tar [參數(shù)] 打包文件名 文件

tar命令很特殊,其參數(shù)前面可以使用“-”,也可以不使用。

常用參數(shù):

tar與gzip命令結(jié)合使用實(shí)現(xiàn)文件打包、壓縮。 tar只負(fù)責(zé)打包文件,但不壓縮,用gzip壓縮tar打包后的文件,其擴(kuò)展名一般用xxxx.tar.gz。

gzip使用格式如下:

gzip [選項(xiàng)] 被壓縮文件

常用選項(xiàng):

tar與bzip2命令結(jié)合使用實(shí)現(xiàn)文件打包、壓縮(用法和gzip一樣)。

tar只負(fù)責(zé)打包文件,但不壓縮,用bzip2壓縮tar打包后的文件,其擴(kuò)展名一般用xxxx.tar.gz2。

在tar命令中增加一個(gè)選項(xiàng)(-j)可以調(diào)用bzip2實(shí)現(xiàn)了一個(gè)壓縮的功能,實(shí)行一個(gè)先打包后壓縮的過(guò)程。

壓縮用法:tar -jcvf 壓縮包包名 文件...(tar jcvf bk.tar.bz2 *.c)

解壓用法:tar -jxvf 壓縮包包名 (tar jxvf bk.tar.bz2)

通過(guò)zip壓縮文件的目標(biāo)文件不需要指定擴(kuò)展名,默認(rèn)擴(kuò)展名為zip。

壓縮文件:zip [-r] 目標(biāo)文件(沒(méi)有擴(kuò)展名) 源文件

解壓文件:unzip -d 解壓后目錄文件 壓縮文件

whoami該命令用戶查看當(dāng)前系統(tǒng)當(dāng)前賬號(hào)的用戶名。可通過(guò)cat /etc/passwd查看系統(tǒng)用戶信息。

由于系統(tǒng)管理員通常需要使用多種身份登錄系統(tǒng),例如通常使用普通用戶登錄系統(tǒng),然后再以su命令切換到root身份對(duì)傳統(tǒng)進(jìn)行管理。這時(shí)候就可以使用whoami來(lái)查看當(dāng)前用戶的身份。

who命令用于查看當(dāng)前所有登錄系統(tǒng)的用戶信息。

常用選項(xiàng):

如果是圖形界面,退出當(dāng)前終端;

如果是使用ssh遠(yuǎn)程登錄,退出登陸賬戶;

如果是切換后的登陸用戶,退出則返回上一個(gè)登陸賬號(hào)。

在Unix/Linux中添加用戶賬號(hào)可以使用adduser或useradd命令,因?yàn)閍dduser命令是指向useradd命令的一個(gè)鏈接,因此,這兩個(gè)命令的使用格式完全一樣。

useradd命令的使用格式如下:

useradd [參數(shù)] 新建用戶賬號(hào)

在Unix/Linux中,超級(jí)用戶可以使用passwd命令為普通用戶設(shè)置或修改用戶口令。用戶也可以直接使用該命令來(lái)修改自己的口令,而無(wú)需在命令后面使用用戶名。

可以通過(guò)su命令切換用戶,su后面可以加“-”。su和su –命令不同之處在于,su -切換到對(duì)應(yīng)的用戶時(shí)會(huì)將當(dāng)前的工作目錄自動(dòng)轉(zhuǎn)換到切換后的用戶主目錄:

注意:如果是ubuntu平臺(tái),需要在命令前加“sudo”,如果在某些操作需要管理員才能操作,ubuntu無(wú)需切換到root用戶即可操作,只需加“sudo”即可。sudo是ubuntu平臺(tái)下允許系統(tǒng)管理員讓普通用戶執(zhí)行一些或者全部的root命令的一個(gè)工具,減少了root 用戶的登陸和管理時(shí)間,提高了安全性。

方法一:

方法二:

groupadd 新建組賬號(hào) groupdel 組賬號(hào) cat /etc/group 查看用戶組

使用方法:usermod -g 用戶組 用戶名

新創(chuàng)建的用戶,默認(rèn)不能sudo,需要進(jìn)行一下操作

-g用來(lái)制定這個(gè)用戶默認(rèn)的用戶組

-G一般配合'-a'來(lái)完成向其它組添加

chmod 修改文件權(quán)限有兩種使用格式:字母法與數(shù)字法。

字母法:chmod u/g/o/a +/-/= rwx 文件

cal命令用于查看當(dāng)前日歷,-y顯示整年日歷

設(shè)置時(shí)間格式(需要管理員權(quán)限):

date [MMDDhhmm[[CC]YY][.ss]] +format

CC為年前兩位yy為年的后兩位,前兩位的mm為月,后兩位的mm為分鐘,dd為天,hh為小時(shí),ss為秒。如: date 010203042016.55。

顯示時(shí)間格式(date '+%y,%m,%d,%H,%M,%S'):

進(jìn)程是一個(gè)具有一定獨(dú)立功能的程序,它是操作系統(tǒng)動(dòng)態(tài)執(zhí)行的基本單元。

ps命令可以查看進(jìn)程的詳細(xì)狀況,常用選項(xiàng)(選項(xiàng)可以不加“-”)如下:

top命令用來(lái)動(dòng)態(tài)顯示運(yùn)行中的進(jìn)程。top命令能夠在運(yùn)行后,在指定的時(shí)間間隔更新顯示信息??梢栽谑褂胻op命令時(shí)加上-d 來(lái)指定顯示信息更新的時(shí)間間隔。

在top命令執(zhí)行后,可以按下按鍵得到對(duì)顯示的結(jié)果進(jìn)行排序:

kill命令指定進(jìn)程號(hào)的進(jìn)程,需要配合 ps 使用。有些進(jìn)程不能直接殺死,這時(shí)候我們需要加一個(gè)參數(shù)“ -9 ”,“ -9 ” 代表強(qiáng)制結(jié)束.

使用格式:

kill [-signal] pid

df命令用于檢測(cè)文件系統(tǒng)的磁盤空間占用和空余情況,可以顯示所有文件系統(tǒng)對(duì)節(jié)點(diǎn)和磁盤塊的使用情況。

du命令用于統(tǒng)計(jì)目錄或文件所占磁盤空間的大小,該命令的執(zhí)行結(jié)果與df類似,du更側(cè)重于磁盤的使用狀況。

du命令的使用格式如下: du [選項(xiàng)] 目錄或文件名


網(wǎng)頁(yè)標(biāo)題:linux命令實(shí)現(xiàn) linux命令操作
本文路徑:http://weahome.cn/article/hpohpc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部