linux常用命令有如下:
為卓資等地區用戶提供了全套網頁設計制作服務,及卓資網站建設行業解決方案。主營業務為成都網站設計、成都網站建設、卓資網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
1、cp命令,作用復制,參數如下:
-a:將文件的特性一起復制。
-p:連同文件的屬性一起復制,而非使用默認方式,與-a相似,常用于備份。
-i:若目標文件已經存在時,在覆蓋時會先詢問操作的進行。
-r:遞歸持續復制,用于目錄的復制行為。
-u:目標文件與源文件有差異時才會復制。
2、rm命令作用為刪除,參數:
-f:就是force的意思,忽略不存在的文件,不會出現警告消息。
-i:互動模式,在刪除前會詢問用戶是否操作。
-r:遞歸刪除,最常用于目錄刪除,它是一個非常危險的參數。
3、mv命令作用為移動文件:
-f:force強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋。
-i:若目標文件已經存在,就會詢問是否覆蓋。
-u:若目標文件已經存在,且比目標文件新,才會更新。
4、pwd命令,作用為查看”當前工作目錄“的完整路徑。
pwd-P#顯示出實際路徑,而非使用連接(link)路徑;pwd顯示的是連接路徑。
5、rmdir命令刪除目錄:
rmdir [選項]... 目錄...
-p:遞歸刪除目錄dirname,當子目錄刪除后其父目錄為空時,也一同被刪除。如果整個路徑被刪除或者由于某種原因保留部分路徑,則系統在標準輸出上顯示相應的信息。
-v:verbose顯示指令執行過程。
前三個和最后一個是兩個類型。前三個主要是Linux用來創建新的進程(線程)而設計的,exec()系列函數則是用來用指定的程序替換當前進程的所有內容。所以exec()系列函數經常在前三個函數使用之后調用,來創建一個全新的程序運行環境。Linux用init進程啟動其他進程的過程一般都是這樣的。
下面說fork、vfork和clone三個函數。這三個函數分別調用了sys_fork、sys_vfork、sys_clone,最終都調用了do_fork函數,差別在于參數的傳遞和一些基本的準備工作不同??梢娺@三者最終達到的最本質的目的都是創建一個新的進程。在這里需要明確一下,Linux內核中沒有獨立的“線程”結構,Linux的線程就是輕量級進程,換言之基本控制結構和Linux的進程是一樣的(都是通過struct task_struct管理)。
fork是最簡單的調用,不需要任何參數,僅僅是在創建一個子進程并為其創建一個獨立于父進程的空間。fork使用COW(寫時拷貝)機制,并且COW了父進程的??臻g。
vfork是一個過時的應用,vfork也是創建一個子進程,但是子進程共享父進程的空間。在vfork創建子進程之后,父進程阻塞,直到子進程執行了exec()或者exit()。vfork最初是因為fork沒有實現COW機制,而很多情況下fork之后會緊接著exec,而exec的執行相當于之前fork復制的空間全部變成了無用功,所以設計了vfork。而現在fork使用了COW機制,唯一的代價僅僅是復制父進程頁表的代價,所以vfork不應該出現在新的代碼之中。在Linux的manpage中隊vfork有這樣一段話:It is rather unfortunate that Linux revived this specter from the past. The BSD man page states: "This system call will be eliminated when proper system sharing mechanisms are implemented. Users should not depend on the memory sharing semantics of vfork() as it will, in that case, be made synonymous to fork(2)."
clone是Linux為創建線程設計的(雖然也可以用clone創建進程)。所以可以說clone是fork的升級版本,不僅可以創建進程或者線程,還可以指定創建新的命名空間(namespace)、有選擇的繼承父進程的內存、甚至可以將創建出來的進程變成父進程的兄弟進程等等。clone和fork的調用方式也很不相同,clone調用需要傳入一個函數,該函數在子進程中執行。此外,clone和fork最大不同在于clone不再復制父進程的??臻g,而是自己創建一個新的。
關于Linux命令的介紹,看看《linux就該這么學》,具體關于這一章地址3w(dot)linuxprobe/chapter-02(dot)html
Sync命令
在用reboot命令啟動unix系統后,系統提示出錯信息,部分應用程序不能正常工作。經仔細檢查系統文件,并和初始的正確備份進行比較,發現某些文件確實被破壞了,翻來覆去找不到文件遭破壞的原因,最后想到了寫緩存命令——sync,在reboot前沒有運行sync命令,導致了系統文件的改變而不能正常工作。
sync命令的作用是,將有關文件系統的存儲器常駐信息送入物理介質內。在暫停系統之前,比如要重新啟動機器,一定要去執行sync命令。unix系統運行經驗表明,為確??煽科鹨?,應執行兩遍sync命令,這是因為sync命令完成時,并不保證信息實際寫到了磁盤上,雖然已經執行了一遍這個命令。在執行sync命令以后,要等待磁盤工作燈滅了(假定有系統工作指示燈的話),再去真正暫停機器的運行或啟動機器。
unix系統遭受破壞是隨時都可能發生的事情,因此在啟動機器或關機之前一定要運行sync命令。記住在任何情況下,慎重地執行sync命令決不會有任何壞處
umount時間過長,sync命令的使用
有一個問題,比如 cp 一個文件到SD卡上,是不是首先先將這個文件寫到SDRAM上,然后umount的時候再將SDRAM中的內容真正寫SD卡上? 我umount的時候會過多一會才出現終端的提示符,根據寫入文件的大小確定 umount的時間?
后來查了一下資料,Linux文件系統更新是一個復雜的過程,當用戶程序對文件系統進行修改以后,例如進行了寫操作,文件數據把修改記錄在內核緩沖中,在數據沒有寫到磁盤的時候,依然能夠執行用戶進程,所有數據的改變都在inode的內容中得到反映。磁盤的數據更新實際上是異步進行的,很有可能在寫操作已經完成很長時間以后才真正對磁盤的數據進行更新。
sync命令強制把磁盤緩沖的所有數據寫入磁盤,如果在沒有把磁盤緩沖區的信息寫入磁盤之前終止系統,則磁盤的文件系統就會處在一個不穩定的狀態。而在正常模式下即使沒有對分區進行umount的操作,在重啟之前系統會調用sync命令強制把磁盤緩沖的所有數據寫入磁盤,而在急救模式下必須對所掛的分區進行umount的操作,系統才會調用sync命令強制把磁盤緩沖的所有數據寫入磁盤,請在急救模式下的朋友注意這個問題。其實“reboot -n(Don’t sync before reboot or halt)”在重啟之前不用sync命令強制把磁盤緩沖的所有數據寫入磁盤,就很能說明問題。
所以要 cp 完之后要執行 sync 命令將緩沖區的內容寫到磁盤中,然后再umount 就不會出現延時了.
經驗證,采用此方法,延遲寫入問題可以解決
linux命令有內部命令和外部命令之分。內部命令實際上是shell程序的一部分,其中包含的是一些比較簡練的linux系統命令,這些命令由shell程序識別并在shell程序內部完成運行,通常在linux系統加載運行時shell就被加載并駐留在系統內存中。外部命令是linux系統中的實用程序部分,因為實用程序的功能通常都比較強大,所以它們包含的程序量也會很大,在系統加載時并不隨系統一起被加載到內存中,而是在需要時才將其調進內存。通常外部命令的實體并不包含在shell中,但是其命令執行過程是由shell 程序控制的。shell程序管理外部命令執行的路徑查找、加載存放,并控制命令的執行。