導航:首頁 > 操作系統 > stlinklinux

stlinklinux

發布時間:2022-06-25 16:29:30

❶ 如何修改openocd.cfg配置文件

選用FreeRTOS絕對不是應為他的代碼是如何的優秀,而是因為他在自由軟體社區展現出的很強的生命力。要知道,如果一個自由軟體社區足夠的活躍,就意味著有的愛好者不停的解決和修正他運行的過程中遇到的諸多問題。由於本人的工作中會採用STM32的CortexM的MCU,所以後續的調試方法會以STM32LDiscovery的開發板為例。FreeRTOS發布包中有針對不同平台的移植和實例,要想在linux主機交叉編譯需要選用arm-none-eabi-gcc這樣的編譯工具鏈,而選用ST的MCU後一個廉價的ST-Link可以作為調試工具,而STM32LDiscovery的板子上自帶就有這樣的工具。硬體調試工具提供的下載調試程序的通道,還需要一個能夠支持GDBServer的服務程序才能用arm-none-eabi-gdb完成代碼的調試。下面的網站講述了一個st-link的Linux工具可以支持下載調試你的二進制代碼。adapterspeed:300kHzadapter_nsrst_delay:100Info:-leveltargetcontrol./SWDsrst_onlyseparatesrst_nogatesrst_open_drainconnect_deassert_srstInfo:clockspeed300kHzInfo::usingstlinkapiv2Info:Targetvoltage:2.918068Info:stm32l.cpu:hardwarehas6breakpoints,4watchpointsInfo:accepting'gdb'connectionontcp/3333Info:STM32Lflashsizeis128kb,-targetneedsresetInfo:Auto-detectedRTOS:FreeRTOSadapterspeed:300kHztargetstate:haltedtargethaltedetodebug-request,currentmode:ThreadxPSR:0x01000000pc:0x0800021cmsp:0x20004000STM32L:EnablingHSIadapterspeed:2000kHzInfo::,currentmode:ThreadxPSR:0x61000000pc:0x20000012msp:0x20004000targetstate:,currentmode:ThreadxPSR:0x61000000pc:0x20000012msp:0x20004000adapterspeed:300kHztargetstate:haltedtargethaltedetodebug-request,currentmode:ThreadxPSR:0x01000000pc:0x0800021cmsp:0x20004000在調試端,通過infothread來查看FreeRTOS的運行狀況GNUgdb(GNUToolsforARMEmbeddedPro

❷ LINUX中ls-l是如何工作的如何去實現一個腳本

可以參考:

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <pwd.h>
#include <grp.h>
#include <time.h>
#include <dirent.h>

int do_ls(char *dir,char *filename,int lflag)
{
int n;
struct stat buf;
char out[100];
struct passwd *pw;
struct group *gr;
struct tm *t;

if(lflag == 0) //如果不帶l參數,直接顯示文件/目錄名
{
printf("%s\t",filename);
return 0;
}

if(lstat(dir,&buf)<0)
{
fprintf(stderr,"stat error:%s\n",strerror(errno));
return -1;
}

switch(buf.st_mode & S_IFMT) //獲取字元串的屬性:普通文件-、目錄d、字元設備c、塊設備b、管道文件p、連接文件l、套接字文件s
{
case S_IFREG:
printf("-");
break;
case S_IFDIR:
printf("d");
break;
case S_IFCHR:
printf("c");
break;
case S_IFBLK:
printf("b");
break;
case S_IFIFO:
printf("p");
break;
case S_IFLNK:
printf("l");
break;
case S_IFSOCK:
printf("s");
break;
}

for(n=8;n>=0;n--) //列印文件的讀寫屬性:讀r、寫w、執行x、無許可權-
{
if(buf.st_mode&(1<<n))
{
switch(n%3)
{
case 2:
printf("r");
break;
case 1:
printf("w");
break;
case 0:
printf("x");
break;
default:
break;
}
}
else
{
printf("-");
}
}

printf(" %d",buf.st_nlink); //硬鏈接數,此鏈接非彼鏈接,指(包含)目錄的個數,文件為1,目錄起始為2,再加上目錄里包含的目錄個數(不遞歸,只一層)

pw = getpwuid(buf.st_uid); //所屬用戶名
printf(" %s",pw->pw_name);

gr = getgrgid(buf.st_gid); //所屬組名
printf(" %s",gr->gr_name);

printf(" %ld",buf.st_size); //位元組計總大小

t = localtime(&buf.st_atime); //最後一次訪問時間
printf(" %d-%d-%d %d:%d"
,t->tm_year+1900
,t->tm_mon+1
,t->tm_mday
,t->tm_hour
,t->tm_min);
printf(" %s ",filename);

if(S_ISLNK(buf.st_mode)) //判斷是否為鏈接,是返回真
{
printf(" -> ");
if(readlink(filename,out,100)==-1)
{
//printf("readlink error\n");
}
printf("%s",out);
}
printf("\n");
return 0;
}

int ls_prepare(char *w,int aflag,int lflag) //ls的准備工作
{
struct stat buf; //man lstat可以看到此結構
char name[100];
DIR *dir; //類似打開文件的fd描述符
struct dirent *pdr; //man readdir可以看到此結構

if(lstat(w,&buf)<0) //獲取文件/目錄屬性並賦值給buf,該函數和lstat一樣,只是當w為鏈接時,指代他本身,並不存在文件
{
fprintf(stderr,"stat error:%s\n",strerror(errno));
return -1;
}
if(S_ISDIR(buf.st_mode)) //判斷是否為目錄,是返回真
{
dir = opendir(w); //打開目錄
while ((pdr = readdir(dir))!=NULL) //讀/遍歷目錄
{
if(aflag==0) //如果不帶a參數,越過以.開頭的所有文件/目錄
{
if(pdr->d_name[0]=='.')
continue;
memset(name,0,100);
strcpy(name,w); //拷貝
strcat(name,"/"); //追加
strcat(name,pdr->d_name);
do_ls(name,pdr->d_name,lflag);
}else //有a參數顯示所有
{
memset(name,0,100);
strcpy(name,w);
strcat(name,"/");
strcat(name,pdr->d_name);
do_ls(name,pdr->d_name,lflag);
}
}
closedir(dir);
}else //為文件則直接顯示
{
do_ls(w,w,lflag);
}

return 0;
}

int main(int argc,char **argv)
{
int aflag =0;
int lflag =0;
char c;
int i;
while((c = getopt(argc,argv,"al"))!=-1) //解析命令行參數,即-/--後面的字元串和給定的字元串匹配,有未解析字母返回字母或問號(取決於第3個參數),否則返回-1
{
switch(c) //此處僅匹配a(所有)和l(列表),即只支持參數a、l
{
case 'a':
aflag =1;
break;
case 'l':
lflag =1;
break;
default:
break;
}
}
if(argc == optind ) //optind系統變數,執行命令參數的個數(不包括命令,奇怪的是無參情況下他為1),判斷argc是否為1,是則取當前路徑,讓我們顯得更專業點
{
ls_prepare("./",aflag,lflag);
}
else
{
for(i=optind;i<argc;i++) //所有目錄都傳進去
ls_prepare(argv[i],aflag,lflag);
}
printf("\n");
return 0;
}

❸ 提問+J-LINK,U-LINK和ST-LINK有什麼區別

j-link,u-link和st-link有什麼區別,item·區別如下:

1、其實就是諾基亞和摩托羅拉的區別,大廠商的管保,小廠商的不管,不過tp-link和d-link都不錯,tp-link設置更方便一些,d-link的功能多,但是設置頁面比較亂,但是也是一款不錯的網路設備

2、 這幾款在參數和價格方面很均衡,整體來說都非常不錯;。

3、 但是買東西,關鍵還是要看產品的特點是否符合您的需求,建議認真衡量以後,選擇適合自己的。

(3)stlinklinux擴展閱讀:

ST-LINK /V2指定的SWIM標准介面和JTAG / SWD標准介面,其主要功能有:

(1)編程功能:可燒寫FLASH ROM、EEPROM、AFR等。

(2)模擬功能:支持全速運行、單步調試、斷點調試等各種調試方法,可查看IO狀態,變數數據等等。

(3)模擬性能:採用USB2.0介面進行模擬調試,單步調試,斷點調試,反應速度快!

(4)編程性能:採用USB2.0介面,進行SWIM / JTAG / SWD下載,下載速度快!

❹ LINUX 怎麼刪除 文件link

每一個文件,都可以通過一個struct stat的結構體來獲得文件信息,其中一個成員st_nlink代表文件的鏈接數。
當通過shell的touch命令或者在程序中open一個帶有O_CREAT的不存在的文件時,文件的鏈接數為1。

通常open一個已存在的文件不會影響文件的鏈接數。open的作用只是使調用進程與文件之間建立一種訪問關系,即open之後返回fd,調用進程可以通過fd來read 、write 、 ftruncate等等一系列對文件的操作。
close()就是消除這種調用進程與文件之間的訪問關系。自然,不會影響文件的鏈接數。在調用close時,內核會檢查打開該文件的進程數,如果此數為0,進一步檢查文件的鏈接數,如果這個數也為0,那麼就刪除文件內容。

link函數創建一個新目錄項,並且增加一個鏈接數。
unlink函數刪除目錄項,並且減少一個鏈接數。如果鏈接數達到0並且沒有任何進程打開該文件,該文件內容才被真正刪除。如果在unlilnk之前沒有close,那麼依舊可以訪問文件內容。

綜上所訴,真正影響鏈接數的操作是link、unlink以及open的創建。
刪除文件內容的真正含義是文件的鏈接數為0,而這個操作的本質完成者是unlink。close能夠實施刪除文件內容的操作,必定是因為在close之前有一個unlink操作。

舉個例子簡單說明:通過shell touch test.txt
1、stat("test.txt",&buf);
printf("1.link=%d\n",buf.st_nlink);//未打開文件之前測試鏈接數

2、fd=open("test.txt",O_RDONLY);//打開已存在文件test.txt
stat("test.txt",&buf);
printf("2.link=%d\n",buf.st_nlink);//測試鏈接數

3、close(fd);//關閉文件test.txt
stat("test.txt",&buf);
printf("3.link=%d\n",buf.st_nlink);//測試鏈接數

4、link("test.txt","test2.txt");//創建硬鏈接test2.txt
stat("test.txt",&buf);
printf("4.link=%d\n",buf.st_nlink);//測試鏈接數

5、unlink("test2.txt");//刪除test2.txt
stat("test.txt",&buf);
printf("5.link=%d\n",buf.st_nlink);//測試鏈接數

6、重復步驟2 //重新打開test.txt

7、unlink("test.txt");//刪除test.txt
fstat(fd,&buf);
printf("7.link=%d\n",buf.st_nlink);//測試鏈接數

8、close(fd);//此步驟可以不顯示寫出,因為進程結束時,打開的文件自動被關閉。

順次執行以上8個步驟,結果如下:
1.link=1
2.link=1 //open不影響鏈接數
3.link=1 //close不影響鏈接數
4.link=2 //link之後鏈接數加1
5.link=1 //unlink後鏈接數減1
2.link=1 //重新打開 鏈接數不變
7.link=0 //unlink之後再減1,此處我們改用fstat函數而非stat,因為unlilnk已經刪除文件名,所以不可以通過 文件名訪問,但是fd仍然是打開著的,文件內容還沒有被真正刪除,依舊可以使用fd獲得文件信息。
執行步驟8,文件內容被刪除。。。。

❺ 問是否有成熟的Linux下 開發stm32的 環境搭建方案

不知道你是怎麼想的,STM32不支持LINUX!

我覺得ARM+LINUX門檻高,做出來的東西不容易被山寨。

現在很多東西都可以用51、STM32來做,但是你的好想法,好創意都容易被其他公司給山寨去。
當然ARM+LINUX也會被山寨,但是要考慮山寨的成本。

我之前的對手公司,准備山寨我公司LINUX創意的產品,但是開發難度大,周期長。不能有效搶占市場,他們來挖人也挖不到,後來它們用UCOS來做。LINUX的強大是它的網路,用UCOS來山寨,再怎麼厲害,其他的外設還好說,但是網路那關永遠過不去。這就是一個檻。

現在驅動轉做軟體的大有人在,做好一個驅動基本就不用怎麼大改了,而應用就不同了,不同的客戶不同的應用。應用的需求大,所以很多做驅動/硬體的轉軟體。

但是,一般牛B的軟體工程師大多是驅動/硬體工程師轉過去的。因為他們知道如何將應用程序很好的控制硬體。

❻ 用stm32做軟體無線電的處理模塊需要什麼工具

不能沒有stm32的基礎吧,既然課程要求,那這個必須學,弄過51應該不難。給你一個方向吧。

❼ LINUX中ls -l是如何工作的如何去實現一個腳本

可以參考:
#include
<sys/types.h>
#include
<sys/stat.h>
#include
<unistd.h>
#include
<stdio.h>
#include
<string.h>
#include
<errno.h>
#include
<pwd.h>
#include
<grp.h>
#include
<time.h>
#include
<dirent.h>
int
do_ls(char
*dir,char
*filename,int
lflag)
{
int
n;
struct
stat
buf;
char
out[100];
struct
passwd
*pw;
struct
group
*gr;
struct
tm
*t;
if(lflag
==
0)
//如果不帶l參數,直接顯示文件/目錄名
{
printf("%s\t",filename);
return
0;
}
if(lstat(dir,&buf)<0)
{
fprintf(stderr,"stat
error:%s\n",strerror(errno));
return
-1;
}
switch(buf.st_mode
&
s_ifmt)
//獲取字元串的屬性:普通文件-、目錄d、字元設備c、塊設備b、管道文件p、連接文件l、套接字文件s
{
case
s_ifreg:
printf("-");
break;
case
s_ifdir:
printf("d");
break;
case
s_ifchr:
printf("c");
break;
case
s_ifblk:
printf("b");
break;
case
s_ififo:
printf("p");
break;
case
s_iflnk:
printf("l");
break;
case
s_ifsock:
printf("s");
break;
}
for(n=8;n>=0;n--)
//列印文件的讀寫屬性:讀r、寫w、執行x、無許可權-
{
if(buf.st_mode&(1<<n))
{
switch(n%3)
{
case
2:
printf("r");
break;
case
1:
printf("w");
break;
case
0:
printf("x");
break;
default:
break;
}
}
else
{
printf("-");
}
}
printf("
%d",buf.st_nlink);
//硬鏈接數,此鏈接非彼鏈接,指(包含)目錄的個數,文件為1,目錄起始為2,再加上目錄里包含的目錄個數(不遞歸,只一層)
pw
=
getpwuid(buf.st_uid);
//所屬用戶名
printf("
%s",pw->pw_name);
gr
=
getgrgid(buf.st_gid);
//所屬組名
printf("
%s",gr->gr_name);
printf("
%ld",buf.st_size);
//位元組計總大小
t
=
localtime(&buf.st_atime);
//最後一次訪問時間
printf("
%d-%d-%d
%d:%d"
,t->tm_year+1900
,t->tm_mon+1
,t->tm_mday
,t->tm_hour
,t->tm_min);

printf("
%s
",filename);

if(s_islnk(buf.st_mode))
//判斷是否為鏈接,是返回真
{
printf("
->
");
if(readlink(filename,out,100)==-1)
{
//printf("readlink
error\n");
}
printf("%s",out);
}
printf("\n");
return
0;
}
int
ls_prepare(char
*w,int
aflag,int
lflag)
//ls的准備工作
{
struct
stat
buf;
//man
lstat可以看到此結構
char
name[100];
dir
*dir;
//類似打開文件的fd描述符
struct
dirent
*pdr;
//man
readdir可以看到此結構
if(lstat(w,&buf)<0)
//獲取文件/目錄屬性並賦值給buf,該函數和lstat一樣,只是當w為鏈接時,指代他本身,並不存在文件
{
fprintf(stderr,"stat
error:%s\n",strerror(errno));
return
-1;
}
if(s_isdir(buf.st_mode))
//判斷是否為目錄,是返回真
{
dir
=
opendir(w);
//打開目錄
while
((pdr
=
readdir(dir))!=null)
//讀/遍歷目錄
{
if(aflag==0)
//如果不帶a參數,越過以.開頭的所有文件/目錄
{
if(pdr->d_name[0]=='.')
continue;
memset(name,0,100);
strcpy(name,w);
//拷貝
strcat(name,"/");
//追加
strcat(name,pdr->d_name);
do_ls(name,pdr->d_name,lflag);
}else
//有a參數顯示所有
{
memset(name,0,100);
strcpy(name,w);
strcat(name,"/");
strcat(name,pdr->d_name);
do_ls(name,pdr->d_name,lflag);
}
}
closedir(dir);
}else
//為文件則直接顯示
{
do_ls(w,w,lflag);
}
return
0;
}
int
main(int
argc,char
**argv)
{
int
aflag
=0;
int
lflag
=0;
char
c;
int
i;
while((c
=
getopt(argc,argv,"al"))!=-1)
//解析命令行參數,即-/--後面的字元串和給定的字元串匹配,有未解析字母返回字母或問號(取決於第3個參數),否則返回-1
{
switch(c)
//此處僅匹配a(所有)和l(列表),即只支持參數a、l
{
case
'a':
aflag
=1;
break;
case
'l':
lflag
=1;
break;
default:
break;
}
}
if(argc
==
optind
)
//optind系統變數,執行命令參數的個數(不包括命令,奇怪的是無參情況下他為1),判斷argc是否為1,是則取當前路徑,讓我們顯得更專業點
{
ls_prepare("./",aflag,lflag);
}
else
{
for(i=optind;i<argc;i++)
//所有目錄都傳進去
ls_prepare(argv[i],aflag,lflag);
}
printf("\n");
return
0;
}

❽ Linux系統最基本,經常用的命令有哪些呢

Linux必學的60個命令(3)-系統管理
由 zhanjun 在 周四, 2006-04-13 12:41 提交
Linux必學的60個命令:系統管理相關命令
Linux必學的系統管理命令
作者:曹元其 發文時間:2004.10.18
對於Linux系統來說,無論是中央處理器、內存、磁碟驅動器、鍵盤、滑鼠,還是用戶等都是文件,Linux系統管理的命令是它正常運行的核心。熟悉了Linux常用的文件處理命令以後,這一講介紹對系統和用戶進行管理的命令。

cat cd
chmod chown
cp cut

名稱:cat
使用許可權:所有使用者
使用方式:cat [-AbeEnstTuv] [--help] [--version] fileName
說明:把檔案串連接後傳到基本輸出(螢幕或加 > fileName 到另一個檔案)
參數:
-n 或 --number 由 1 開始對所有輸出的行數編號
-b 或 --number-nonblank 和 -n 相似,只不過對於空白行不編號
-s 或 --squeeze-blank 當遇到有連續兩行以上的空白行,就代換為一行的空白行
-v 或 --show-nonprinting

範例:
cat -n textfile1 > textfile2 把 textfile1 的檔案內容加上行號後輸入 textfile2 這個檔案里
cat -b textfile1 textfile2 >> textfile3 把 textfile1 和 textfile2 的檔案內容加上行號(空白行不加)之後將內容附加到 textfile3

名稱 : cd
使用許可權 : 所有使用者

使用方式 : cd [dirName]

說明 : 變換工作目錄至 dirName。 其中 dirName 表示法可為絕對路徑或相對路徑。若目錄名稱省略,則變換至使用者的 home directory (也就是剛 login 時所在的目錄)。

另外,"~" 也表示為 home directory 的意思,"." 則是表示目前所在的目錄,".." 則表示目前目錄位置的上一層目錄。

範例 : 跳到 /usr/bin/ :
cd /usr/bin

跳到自己的 home directory :
cd ~

跳到目前目錄的上上兩層 :
cd ../..

指令名稱 : chmod
使用許可權 : 所有使用者

使用方式 : chmod [-cfvR] [--help] [--version] mode file...

說明 : Linux/Unix 的檔案存取許可權分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以藉以控制檔案如何被他人所存取。

把計 :

mode : 許可權設定字串,格式如下 : [ugoa...][[+-=][rwxX]...][,...],其中u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬於同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
+ 表示增加許可權、- 表示取消許可權、= 表示唯一設定許可權。
r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。
-c : 若該檔案許可權確實已經更改,才顯示其更改動作
-f : 若該檔案許可權無法被更改也不要顯示錯誤訊息
-v : 顯示許可權變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的許可權變更(即以遞回的方式逐個變更)
--help : 顯示輔助說明
--version : 顯示版本

範例 :將檔案 file1.txt 設為所有人皆可讀取 :
chmod ugo+r file1.txt

將檔案 file1.txt 設為所有人皆可讀取 :
chmod a+r file1.txt

將檔案 file1.txt 與 file2.txt 設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt

將 ex1.py 設定為只有該檔案擁有者可以執行 :
chmod u+x ex1.py

將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 :
chmod -R a+r *

此外chmod也可以用數字來表示許可權如 chmod 777 file
語法為:chmod abc file

其中a,b,c各為一個數字,分別表示User、Group、及Other的許可權。

r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=7。

範例:
chmod a=rwx file


chmod 777 file

效果相同
chmod ug=rwx,o=x file


chmod 771 file

效果相同

若用chmod 4755 filename可使此程式具有root的許可權

指令名稱 : chown
使用許可權 : root

使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...

說明 : Linux/Unix 是多人多工作業系統,所有的檔案皆有擁有者。利用 chown 可以將檔案的擁有者加以改變。一般來說,這個指令只有是由系統管理者(root)所使用,一般使用者沒有許可權可以改變別人的檔案擁有者,也沒有許可權可以自己的檔案擁有者改設為別人。只有系統管理者(root)才有這樣的許可權。

把計 :

user : 新的檔案擁有者的使用者 IDgroup : 新的檔案擁有者的使用者群體(group)-c : 若該檔案擁有者確實已經更改,才顯示其更改動作-f : 若該檔案擁有者無法被更改也不要顯示錯誤訊息-h : 只對於連結(link)進行變更,而非該 link 真正指向的檔案-v : 顯示擁有者變更的詳細資料-R : 對目前目錄下的所有檔案與子目錄進行相同的擁有者變更(即以遞回的方式逐個變更)--help : 顯示輔助說明--version : 顯示版本

範例 :
將檔案 file1.txt 的擁有者設為 users 群體的使用者 jessie :
chown jessie:users file1.txt

將目前目錄下的所有檔案與子目錄的擁有者皆設為 users 群體的使用者 lamport :
chmod -R lamport:users *

名稱:cp
使用許可權:所有使用者

使用方式:

cp [options] source dest
cp [options] source... directory

說明:將一個檔案拷貝至另一檔案,或將數個檔案拷貝至另一目錄。

把計�

-a 盡可能將檔案狀態、許可權等資料都照原狀予以復制。
-r 若 source 中含有目錄名,則將目錄下之檔案亦皆依序拷貝至目的地。
-f 若目的地已經有相同檔名的檔案存在,則在復制前先予以刪除再行復制。
範例:
將檔案 aaa 復制(已存在),並命名為 bbb :
cp aaa bbb

將所有的C語言程式拷貝至 Finished 子目錄中 :
cp *.c Finished

名稱:cut

使用許可權:所有使用者

用法:cut -cnum1-num2 filename

說明:顯示每行從開頭算起 num1 到 num2 的文字。

範例:

shell>> cat example
test2
this is test1
shell>> cut -c0-6 example ## print 開頭算起前 6 個字元
test2
this i

名稱 : find
用法 : find
使用說明 :

將檔案系統內符合 expression 的檔案列出來。你可以指要檔案的名稱、類別、時間、大小、許可權等不同資訊的組合,只有完全相符的才會被列出來。

find 根據下列規則判斷 path 和 expression,在命令列上第一個 - ( ) , ! 之前的部份為 path,之後的是 expression。如果 path 是空字串則使用目前路徑,如果 expression 是空字串則使用 -print 為預設 expression�

expression 中可使用的選項有二三十個之多,在此只介紹最常用的部份。

-mount, -xdev : 只檢查和指定目錄在同一個檔案系統下的檔案,避免列出其它檔案系統中的檔案
-amin n : 在過去 n 分鍾內被讀取過
-anewer file : 比檔案 file 更晚被讀取過的檔案
-atime n : 在過去 n 天過讀取過的檔案
-cmin n : 在過去 n 分鍾內被修改過
-cnewer file :比檔案 file 更新的檔案
-ctime n : 在過去 n 天過修改過的檔案
-empty : 空的檔案-gid n or -group name : gid 是 n 或是 group 名稱是 name
-ipath p, -path p : 路徑名稱符合 p 的檔案,ipath 會忽略大小寫
-name name, -iname name : 檔案名稱符合 name 的檔案。iname 會忽略大小寫
-size n : 檔案大小 是 n 單位,b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組。-type c : 檔案類型是 c 的檔案。
d: 目錄
c: 字型裝置檔案
b: 區塊裝置檔案
p: 具名貯列
f: 一般檔案
l: 符號連結
s: socket
-pid n : process id 是 n 的檔案

你可以使用 ( ) 將運算式分隔,並使用下列運算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
範例:
將目前目錄及其子目錄下所有延伸檔名是 c 的檔案列出來。
# find . -name "*.c"

將目前目錄其其下子目錄中所有一般檔案列出
# find . -ftype f

將目前目錄及其子目錄下所有最近 20 分鍾內更新過的檔案列出
# find . -ctime -20

名稱:less

使用許可權:所有使用者

使用方式:

less [Option] filename

說明:
less 的作用與 more 十分相似,都可以用來瀏覽文字檔案的內容,不同的是 less 允許使用者往回卷動
以瀏覽已經看過的部份,同時因為 less 並未在一開始就讀入整個檔案,因此在遇上大型檔案的開啟時,會比一般的文書編輯器(如 vi)來的快速。

範例:

指令名稱 : ln
使用許可權 : 所有使用者

使用方式 : ln [options] source dist,其中 option 的格式為 :

[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
說明 : Linux/Unix 檔案系統中,有所謂的連結(link),我們可以將其視為檔案的別名,而連結又可分為兩種 : 硬連結(hard link)與軟連結(symbolic link),硬連結的意思是一個檔案可以有多個名稱,而軟連結的方式則是產生一個特殊的檔案,該檔案的內容是指向另一個檔案的位置。硬連結是存在同一個檔案系統中,而軟連結卻可以跨越不同的檔案系統。
ln source dist 是產生一個連結(dist)到 source,至於使用硬連結或軟鏈結則由參數決定。

不論是硬連結或軟鏈結都不會將原本的檔案復制一份,只會佔用非常少量的磁碟空間。

-f : 鏈結時先將與 dist 同檔名的檔案刪除-d : 允許系統管理者硬鏈結自己的目錄-i : 在刪除與 dist 同檔名的檔案時先進行詢問-n : 在進行軟連結時,將 dist 視為一般的檔案-s : 進行軟鏈結(symbolic link)-v : 在連結之前顯示其檔名-b : 將在鏈結時會被覆寫或刪除的檔案進行備份-S SUFFIX : 將備份的檔案都加上 SUFFIX 的字尾-V METHOD : 指定備份的方式--help : 顯示輔助說明--version : 顯示版本
範例 :
將檔案 yy 產生一個 symbolic link : zz
ln -s yy zz

將檔案 yy 產生一個 hard link : zz
ln yy xx

名稱:locate
使用許可權:所有使用者
使用方式: locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] <[-l ] [-c]
<[-U ] [-u]>
locate [-Vh] [--version] [--help]
說明:
locate 讓使用者可以很快速的搜尋檔案系統內是否有指定的檔案。其方法是先建立一個包括系統內所有檔案名稱及路徑的資料庫,之後當尋找時就只需查詢這個資料庫,而不必實際深入檔案系統之中了。

在一般的 distribution 之中,資料庫的建立都被放在 contab 中自動執行。一般使用者在使用時只要用

# locate your_file_name

的型式就可以了。 參數:
-u
-U

建立資料庫,-u 會由根目錄開始,-U 則可以指定開始的位置。

-e


排除在尋找的范圍之外。

-l
如果 是 1.則啟動安全模式。在安全模式下,使用者不會看到許可權無法看到的檔案。這會始速度減慢,因為 locate 必須至實際的檔案系統中取得檔案的許可權資料。

-f
將特定的檔案系統排除在外,例如我們沒有到理要把 proc 檔案系統中的檔案放在資料庫中。

-q
安靜模式,不會顯示任何錯誤訊息。

-n
至多顯示 個輸出。

-r
使用正規運算式 做尋找的條件。

-o
指定資料庫存的名稱。

-d

指定資料庫的路徑

-h
顯示輔助訊息

-v
顯示更多的訊息

-V
顯示程式的版本訊息 範例:

locate chdrv : 尋找所有叫 chdrv 的檔案
locate -n 100 a.out : 尋找所有叫 a.out 的檔案,但最多隻顯示 100 個
locate -u : 建立資料庫

名稱 : ls
使用許可權 : 所有使用者

使用方式 : ls [-alrtAFR] [name...]

說明 : 顯示指定工作目錄下之內容(列出目前工作目錄所含之檔案及子目錄)。

-a 顯示所有檔案及目錄 (ls內定將檔案名或目錄名稱開頭為"."的視為隱藏檔,不會列出)
-l 除檔案名稱外,亦將檔案型態、許可權、擁有者、檔案大小等資訊詳細列出
-r 將檔案以相反次序顯示(原定依英文字母次序)
-t 將檔案依建立時間之先後次序列出
-A 同 -a ,但不列出 "." (目前目錄) 及 ".." (父目錄)
-F 在列出的檔案名稱後加一符號;例如可執行檔則加 "*", 目錄則加 "/"
-R 若目錄下有檔案,則以下之檔案亦皆依序列出

範例:
列出目前工作目錄下所有名稱是 s 開頭的檔案,愈新的排愈後面 :
ls -ltr s*

將 /bin 目錄以下所有目錄及檔案詳細資料列出 :
ls -lR /bin

列出目前工作目錄下所有檔案及目錄;目錄於名稱後加 "/", 可執行檔於名稱後加 "*" :
ls -AF

名稱:more
使用許可權:所有使用者
使用方式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
說明:類似 cat ,不過會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能(與 vi 相似),使用中的說明文件,請按 h 。
參數:-num 一次顯示的行數
-d 提示使用者,在畫面下方顯示 [Press space to continue, q to quit.] ,如果使用者按錯鍵,則會顯示 [Press h for instructions.] 而不是 嗶 聲
-l 取消遇見特殊字元 ^L(送紙字元)時會暫停的功能
-f 計算行數時,以實際上的行數,而非自動換行過後的行數(有些單行字數太長的會被擴展為兩行或兩行以上)
-p 不以卷動的方式顯示每一頁,而是先清除螢幕後再顯示內容
-c 跟 -p 相似,不同的是先顯示內容再清除其他舊資料
-s 當遇到有連續兩行以上的空白行,就代換為一行的空白行
-u 不顯示下引號 (根據環境變數 TERM 指定的 terminal 而有所不同)
+/ 在每個檔案顯示前搜尋該字串(pattern),然後從該字串之後開始顯示
+num 從第 num 行開始顯示
fileNames 欲顯示內容的檔案,可為復數個數
範例:
more -s testfile 逐頁顯示 testfile 之檔案內容,如有連續兩行以上空白行則以一行空白行顯示。
more +20 testfile 從第 20 行開始顯示 testfile 之檔案內容。

名稱:mv
使用許可權:所有使用者

使用方式:

mv [options] source dest
mv [options] source... directory
說明:將一個檔案移至另一檔案,或將數個檔案移至另一目錄。
參數:-i 若目的地已有同名檔案,則先詢問是否覆蓋舊檔。

範例:

將檔案 aaa 更名為 bbb :
mv aaa bbb

將所有的C語言程式移至 Finished 子目錄中 :
mv -i *.c

名稱:rm
使用許可權:所有使用者

使用方式:rm [options] name...

說明:刪除檔案及目錄。

把計�

-i 刪除前逐一詢問確認。
-f 即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認。
-r 將目錄及以下之檔案亦逐一刪除。
範例:
刪除所有C語言程式檔;刪除前逐一詢問確認 :
rm -i *.c

將 Finished 子目錄及子目錄中所有檔案刪除 :
rm -r Finished

名稱:rmdir
使用許可權:於目前目錄有適當許可權的所有使用者

使用方式: rmdir [-p] dirName

說明: 刪除空的目錄。

參數: -p 是當子目錄被刪除後使它也成為空目錄的話,則順便一並刪除。

範例:

將工作目錄下,名為 AAA 的子目錄刪除 :
rmdir AAA

在工作目錄下的 BBB 目錄中,刪除名為 Test 的子目錄。若 Test 刪除後,BBB 目錄成為空目錄,則 BBB 亦予刪除。
rmdir -p BBB/Test

名稱:split
使用許可權:所有使用者

使用方式:split [OPTION] [INPUT [PREFIX]]

說明:

將一個檔案分割成數個。而從 INPUT 分割輸出成固定大小的檔案,其檔名依序為 PREFIXaa, PREFIXab...;PREFIX 預設值為 `x。若沒有 INPUT 檔或為 `-,則從標准輸入讀進資料。

匡兜�

-b, --bytes=SIZE

SIZE 值為每一輸出檔案的大小,單位為 byte。
-C, --line-bytes=SIZE

每一輸出檔中,單行的最大 byte 數。
-l, --lines=NUMBER

NUMBER 值為每一輸出檔的列數大小。
-NUMBER

與 -l NUMBER 相同。
--verbose

於每個輸出檔被開啟前,列印出偵錯資訊到標准錯誤輸出。
--help

顯示輔助資訊然後離開。
--version

列出版本資訊然後離開。
SIZE 可加入單位: b 代表 512, k 代表 1K, m 代表 1 Meg。

範例:

PostgresSQL 大型資料庫備份與回存:

因 Postgres 允許表格大過你系統檔案的最大容量,所以要將表格 mp 到單一的檔案可能會有問題,使用 split進行檔案分割。

% pg_mp dbname | split -b 1m - filename.mp.

重新載入

% createdb dbname
% cat filename.mp.* | pgsql dbname

名稱:touch
使用許可權:所有使用者

使用方式:
touch [-acfm]
[-r reference-file] [--file=reference-file]
[-t MMDDhhmm[[CC]YY][.ss]]
[-d time] [--date=time] [--time={atime,access,use,mtime,modify}]
[--no-create] [--help] [--version]
file1 [file2 ...]

說明:
touch 指令改變檔案的時間記錄。 ls -l 可以顯示檔案的時間記錄。

參數:
a 改變檔案的讀取時間記錄。
m 改變檔案的修改時間記錄。
c 假如目的檔案不存在,不會建立新的檔案。與 --no-create 的效果一樣。
f 不使用,是為了與其他 unix 系統的相容性而保留。
r 使用參考檔的時間記錄,與 --file 的效果一樣。
d 設定時間與日期,可以使用各種不同的格式。
t 設定檔案的時間記錄,格式與 date 指令相同。
--no-create 不會建立新檔案。
--help 列出指令格式。
--version 列出版本訊息。

範例:

最簡單的使用方式,將檔案的時候記錄改為現在的時間。若檔案不存在,系統會建立一個新的檔案。

touch file
touch file1 file2

將 file 的時間記錄改為 5 月 6 日 18 點 3 分,公元兩千年。時間的格式可以參考 date 指令,至少需輸入 MMDDHHmm ,就是月日時與分。

touch -c -t 05061803 file
touch -c -t 050618032000 file

將 file 的時間記錄改變成與 referencefile 一樣。

touch -r referencefile file

將 file 的時間記錄改成 5 月 6 日 18 點 3 分,公元兩千年。時間可以使用 am, pm 或是 24 小時的格式,日期可以使用其他格式如 6 May 2000 。

touch -d "6:03pm" file
touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file

df

1.作用
df命令用來檢查文件系統的磁碟空間佔用情況,使用許可權是所有用戶。

2.格式
df [options]

3.主要參數
-s:對每個Names參數只給出佔用的數據塊總數。
-a:遞歸地顯示指定目錄中各文件及子目錄中各文件佔用的數據塊數。若既不指定-s,也不指定-a,則只顯示Names中的每一個目錄及其中的各子目錄所佔的磁碟塊數。
-k:以1024位元組為單位列出磁碟空間使用情況。
-x:跳過在不同文件系統上的目錄不予統計。
-l:計算所有的文件大小,對硬鏈接文件則計算多次。
-i:顯示inode信息而非塊使用量。
-h:以容易理解的格式印出文件系統大小,例如136KB、254MB、21GB。
-P:使用POSIX輸出格式。
-T:顯示文件系統類型。

4.說明
df命令被廣泛地用來生成文件系統的使用統計數據,它能顯示系統中所有的文件系統的信息,包括總容量、可用的空閑空間、目前的安裝點等。

超級許可權用戶使用df命令時會發現這樣的情況:某個分區的容量超過了100%。這是因為Linux系統為超級用戶保留了10%的空間,由其單獨支配。也就是說,對於超級用戶而言,他所見到的硬碟容量將是110%。這樣的安排對於系統管理而言是有好處的,當硬碟被使用的容量接近100%時系統管理員還可以正常工作。

5.應用實例
Linux支持的文件系統非常多,包括JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、vfat、MSDOS等。使用df -T命令查看磁碟空間時還可以得到文件系統的信息:

#df -T
文件系統 類型 容量 已用 可用 已用% 掛載點
/dev/hda7 reiserfs 5.2G 1.6G 3.7G 30% /
/dev/hda1 vfat 2.4G 1.6G 827M 66% /windows/C
/dev/hda5 vfat 3.0G 1.7G 1.3G 57% /windows/D
/dev/hda9 vfat 3.0G 2.4G 566M 82% /windows/E
/dev/hda10 NTFS 3.2G 573M 2.6G 18% /windows/F
/dev/hda11 vfat 1.6G 1.5G 23M 99% /windows/G

從上面除了可以看到磁碟空間的容量、使用情況外,分區的文件系統類型、掛載點等信息也一覽無遺。

top

1.作用
top命令用來顯示執行中的程序進程,使用許可權是所有用戶。

2.格式
top [-] [d delay] [q] [c] [S] [s] [i] [n]

3.主要參數
d:指定更新的間隔,以秒計算。
q:沒有任何延遲的更新。如果使用者有超級用戶,則top命令將會以最高的優先序執行。
c:顯示進程完整的路徑與名稱。
S:累積模式,會將己完成或消失的子行程的CPU時間累積起來。
s:安全模式。
i:不顯示任何閑置(Idle)或無用(Zombie)的行程。
n:顯示更新的次數,完成後將會退出top。

4.說明
top命令是Linux系統管理的一個主要命令,通過它可以獲得許多信息。這里我們結合圖1來說明它給出的信息。

圖1 top命令的顯示

在圖1中,第一行表示的項目依次為當前時間、系統啟動時間、當前系統登錄用戶數目、平均負載。第二行顯示的是所有啟動的進程、目前運行的、掛起 (Sleeping)的和無用(Zombie)的進程。第三行顯示的是目前CPU的使用情況,包括系統佔用的比例、用戶使用比例、閑置(Idle)比例。第四行顯示物理內存的使用情況,包括總的可以使用的內存、已用內存、空閑內存、緩沖區佔用的內存。第五行顯示交換分區使用情況,包括總的交換分區、使用的、空閑的和用於高速緩存的大小。第六行顯示的項目最多,下面列出了詳細解釋。
PID(Process ID):進程標示號。
USER:進程所有者的用戶名。
PR:進程的優先順序別。
NI:進程的優先順序別數值。
VIRT:進程佔用的虛擬內存值。
RES:進程佔用的物理內存值。
SHR:進程使用的共享內存值。
S:進程的狀態,其中S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值是負數。
%CPU:該進程佔用的CPU使用率。
%MEM:該進程佔用的物理內存和總內存的百分比。
TIME+:該進程啟動後佔用的總的CPU時間。
Command:進程啟動的啟動命令名稱,如果這一行顯示不下,進程會有一個完整的命令行。
top命令使用過程中,還可以使用一些交互的命令來完成其它參數的功能。這些命令是通過快捷鍵啟動的。
<空格>:立刻刷新。
P:根據CPU使用大小進行排序。
T:根據時間、累計時間排序。
q:退出top命令。
m:切換顯示內存信息。
t:切換顯示進程和CPU狀態信息。
c:切換顯示命令名稱和完整命令行。
M:根據使用內存大小進行排序。
W:將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。

可以看到,top命令是一個功能十分強大的監控系統的工具,對於系統管理員而言尤其重要。但是,它的缺點是會消耗很多系統資源。

5.應用實例
使用top命令可以監視指定用戶,預設情況是監視所有用戶的進程。如果想查看指定用戶的情況,在終端中按「U」鍵,然後輸入用戶名,系統就會切換為指定用戶的進程運行界面,見圖2所示。

圖2 使用top命令監視指定用戶

free

1.作用
free命令用來顯示內存的使用情況,使用許可權是所有用戶。

2.格式
free [-b|-k|-m] [-o] [-s delay] [-t] [-V]

3.主要參數
-b -k -m:分別以位元組(KB、MB)為單位顯示內存使用情況。
-s delay:顯示每隔多少秒數來顯示一次內存使用情況。
-t:顯示內存總和列。
-o:不顯示緩沖區調節列。

4.應用實例
free命令是用來查看內存使用情況的主要命令。和top命令相比,它的優點是使用簡單,並且只佔用很少的系統資源。通過-S參數可以使用free命令不間斷地監視有多少內存在使用,這樣可以把它當作一個方便實時監控器。
#free -b -s5

使用這個命令後終端會連續不斷地報告內存使用情況(以位元組為單位),每5秒更新一次。

quota

1.作用
quota命令用來顯示磁碟使用情況和限制情況,使用許可權超級用戶。

2.格式
quota [-g][-u][-v][-p] 用戶名 組名

3.參數
-g:顯示用戶所在組的磁碟使用限制。
-u:顯示用戶的磁碟使用限制。
-v:顯示沒有分配空間的文件系統的分配情況。
-p:顯示簡化信息。

4.應用實例
在企業應用中磁碟配額非常重要,普通用戶要學會看懂自己的磁碟使用情況。要查詢自己的磁碟配額可以使用下面命令(下例中用戶賬號是caojh):

#quota caojh
Disk quotas for user caojh(uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 58 200000 400000 41 500 1000

以上顯示ID號為502的caojh賬號,文件個數設置為500~1000個,硬碟空間限制設置為200M

閱讀全文

與stlinklinux相關的資料

熱點內容
java布局實例 瀏覽:628
51單片機頻率計的 瀏覽:27
帶伺服器的電腦怎麼用 瀏覽:999
什麼app可以調整手機幀率 瀏覽:315
說苑pdf 瀏覽:874
安裝包加密有什麼用 瀏覽:584
舍利子靈力演算法 瀏覽:501
javacalendar天數 瀏覽:567
anyview閱讀器java 瀏覽:361
怎麼降為安卓10 瀏覽:996
javaweb程序設計郭 瀏覽:249
gm聲望命令 瀏覽:486
pdf轉換器電腦版免費 瀏覽:43
解壓歌曲什麼歌最好 瀏覽:153
諾貝爾pdf 瀏覽:969
雲伺服器快速安裝系統原理 瀏覽:791
蘋果騰訊管家如何恢復加密相冊 瀏覽:118
手機軟體反編譯教程 瀏覽:861
sqlserver編程語言 瀏覽:651
gpa國際標准演算法 瀏覽:239