1、連接上相應的linux主機,進入到等待輸入shell指令的linux命令行狀態下。
B. linux 的基本命令
1.開機進入
---- Linux系統的開機同正常的DOS、Windows開關機順序相同。若是多操作系統則在LILO boot:後輸入Linux,就可進入Linux的注冊提示符Login:,在其後輸入用戶名,在口令提示符password:輸入口令,注冊正確後,可進入相應的用戶環境。如輸入:root,及其密碼,可進入超級用戶環境#,輸入其他用戶名及口令,可進入該用戶環境$。
---- 2.關機退出
---- 在超級用戶提示符#下輸入halt(立即關機)或shutdown time(延遲time分後關機,給各用戶每隔一段時間發出還有多長時間將關機的警告)後,計算機將進行一系列的關機工作,最後出現System halt,就是關機結束,可以關閉電源了。非超級用戶則需用exit退出操作環境,再進入超級用戶環境,方可進行關機工作。
---- 3.命令操作注意事項
---- 在Linux中有一些與DOS不完全相同的地方,見下表:
DOS Linux
命令行字母 不區分大小寫 區分大小寫
提示符 #、$
路徑分隔符 \ /
通配符 *、? *、?、[]
---- 在Linux系統中,超級用戶的系統提示符是#,一般情況下普通用戶的系統提示符是$,普通用戶的系統提示符也同DOS一樣可以進行更改。通配符中*與?的含義是一樣的,[]是僅包括括弧內的符號,連續的符號可用「-」連接首尾的符號代替,如[12345678]可以用[1-8]代替,[abcdefijk]可用[a-fi-j]表示。
---- 4.文件類型
---- 與DOS、Windows不同的是,在Linux系統中,目錄和設備都被視為文件,共有四種文件類型,它們是:⑴普通文件,即我們通常所說的文件,在長列目錄方式時行首前用一符號「-」表示。⑵目錄文件,即我們通常所說的目錄,在長列目錄方式時行用首前用一字母「d」表示。⑶字元設備文件,如顯示器、列印機、終端等,在長列目錄方式時行首前用一字母 「c」表示。⑷塊設備文件,如硬碟、軟盤、光碟在長列目錄方式時行首前用一字母「b」表示。
---- 在Linux中用長格式列目錄命令ls -l時,如下例:
---- 文件類型
-rwxrw-r-- 5 user group 1089
Nov 18 1998 filename
存取權 用戶 組名
位元組數 最後修改時間 文件名
---- 大家對DOS下的8.3格式的文件名都一定很熟悉了,由於它的表達能力有限,所以在Windows95之後加入了長文件名支持,Linux繼承了UNIX的優點,也可以用長長的一串字元作文件名。但是在Linux中文件類型可不像在DOS下那樣容易從文件的擴展名上了解到,在DOS下的可執行文件的擴展名為com或exe,而在Linux中只能通過文件屬性得知,採用命令ls –F可區分目錄和文件,在目錄後有「/」符號,可執行文件後有「*」符號,用ls –aF可見所有的文件和目錄列出,包括隱藏的文件和目錄,隱藏文件的文件名以點號「.」開頭。
---- 5.讀取許可權
---- 在Linux中,文件的主人即所有者,其他使用者分別稱為同組者、其他人,為保證各用戶文件的安全,Linux同UNIX一樣通過限制某些用戶對文件的隨意存取。共有三個級別的存取權:讀權r、寫權w、執行權x。在存取權中共有九個字元的位置其順序是:所有者、同組人、其他人。在上例中分別表示:主人對文件擁有讀寫權和執行權,同組人對文件擁有讀寫權、其他人對文件只擁有讀權。
---- 6.獲取在線幫助命令
---- 在Linux中有一條專門用於取得在線幫助的命令man ,其使用方式為# man command。man有一套它自己的命令,通常由單個鍵組成,按空格鍵和F鍵將翻到下一頁,按B鍵翻到上一頁,按Q鍵退出man工具,回到命令行。掌握了以上的基礎知識,結合熟知的DOS命令進行比較,對於學習Linux的基本命令就可以很快地運用自如,為進一步深入學習Linux打下深厚的基礎.。
---- 二、文件管理和目錄操作
---- 與DOS、Windows一樣,在Linux中也有許多關於文件管理和目錄操作方面的命令,對二者的主要命令列表如下:
---- 1.文件管理
功能 DOS Linux 注意事項
顯示文件內容 type、more cat 、more type、cat
是全部顯示,more是分頁顯示
列印文件 print lpr
拷貝文件 cp
移動文件及改名 move mv
刪除文件 del, erase rm
---- 2.目錄操作
功能 DOS Linux 注意事項
列目錄及文件 dir/選項 ls –選項
在Linux中cd/直接返回登錄時的目錄而不是根目錄,
顯示工作目錄 cd pwd
變更工作目錄 cd\目錄 cd/目錄
建立目錄 md,mkdir mkdir
刪除目錄 rd,rmdir rmdir
目錄更名 move mv
拷貝目錄 x
---- 在二者中,命令的格式都是一樣的,只是選項、參數不相同而已,也可以進行組合操作,具體運用時可使用幫助命令,只不過Linux的命令的功能更為強大,據記載DOS中的不少命令都是借鑒UNIX而來的,而Linux正是居於UNIX發展起來的,這也是二者有著幾乎相同的命令和格式的原因之一。
---- 三、軟、硬碟及光碟機的使用
---- 1.軟、硬碟及光碟機的使用
---- 在Linux中對其他硬碟邏輯分區、軟盤,光碟的使用與我們通常在DOS與Windows中的使用方法是不一樣的,不能直接訪問,因為在Linux中它們都被視為文件,因此在訪問使用前必須使用裝載命令mount將它們裝載到系統的/mnt目錄中來,使用結束,必須進行卸載。命令格式如下:
mount –t 文件系統類型 設備名 裝載目錄
文件類型常用的有:
msdos dos分區文件
ext2 Linux的文件系統
swap Linux swap分區或swap文件
iso9660 安裝CD-ROM的文件系統
vfat 支持長文件名的dos分區
hpfs OS/2分區文件系統
---- 設備名是指要裝載的設備的名稱,如軟盤、硬碟、光碟等,軟盤一般為/dev/fd0 fd1,硬碟一般為/dev/hda hdb ,硬碟邏輯分區一般為期hda1 hda2…等等,光碟一般為/dev/hdc。在裝載前一般要在/dev/mnt目錄下建立一個空的目錄,如軟盤為floppy,硬碟分區為其盤符如c、d等等,光碟為cd-rom,使用命令:
mount –t msdos /dev/fd0 /mnt/floppy
裝載一個mddos格式的軟盤
mount –t ext2 /dev/fd0 /mnt/floppy
裝載一個Linux格式的軟盤
mount –t vfat /dev/hda1 /mnt/c
裝載Windows98格式的硬碟分區
mount –t iso9660 /dev/hdc /mnt/cd-rom
裝載一個光碟
---- 裝載完成之後便可對該目錄進行操作,在使用新的軟盤及光碟前必須退出該目錄,使用卸載命令進行卸載,方可使用新的軟盤及光碟,否則系統不會承認該軟盤的,光碟在卸載前是不能用光碟機面板前的彈出鍵退出的。
---- 2.格式化命令mkfs
---- 格式化軟盤時不需事先安裝空盤,只需將軟盤放入軟碟機中,使用如下命令,便可格式化一張在Linux中使用的軟盤:
#mkfs –t ext2 /dev/fd0 1440
---- 在熟悉以上基本命令之後,就可以進行其他命令的進一步學習,例如:文件編輯軟體vi,存取許可權的修改,檢查修復文件系統,增減用戶及修改密碼,安裝其他Linux文件,及一些Linux的實用工具軟體,建立x-Windows圖形界面,利用Linux上網等等,來增加對Linux的感性認識。
C. 如何在linux上配置memcache
一、什麼是memcache
memcache是一個高性能的分布式的內存對象緩存系統,通過在內存里維護一個統一的巨大的hash表,它能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及資料庫檢索的結果等
二、libevent介紹
libevent是一個事件觸發的網路庫,適用於windows、linux、bsd等多種平台,內部使用select、epoll、kqueue等系統調用管理事件機制。著名的用於apache的php緩存庫memcached據說也是libevent based,而且libevent在使用上可以做到跨平台
三、准備工作
下載:memcache:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz
下載:http://www.monkey.org/~provos/libevent-1.3.tar.gz
四、安裝過程
1、卸載低版本的libevent
#ls -al /usr/lib |grep libevent
lrwxrwxrwx 1 root root libevent-1.1a.so.1 -> libevent-1.1a.so.1.0.2
-rwxr-xr-x 1 root root libevent-1.1a.so.1.0.2
查看當前libevent版本,如果版本低於1.3,建議先卸載
#rpm -e libevent --nodeps
卸載libevent,
#ls -al /usr/lib |grep libevent
再次查看,卸載成功
2、安裝libevent
#tar zxvf libevent-1.3.tar.gz
解壓libevent
#cd libevent-1.3
#./configure --prefix=/usr
#make
#make install
配置安裝libevent到/usr目錄下
#ls -al /usr/lib |grep libevent
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
再此查看,安裝libevent1.3版本成功
3、安裝memcached,同時需要安裝中指定libevent的安裝位置
#tar zxvf memcached-1.2.6.tar.gz
#cd memcached-1.2.6
解壓進入mamcache目錄
#./configure --with-libevent=/usr/
#make
#make install
安裝完成後會把memcached放到 /usr/local/bin/memcached
#ls -al /usr/local/bin/memcached
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
查看memcache安裝成功
五、memcached的基本設置
#/usr/local/bin/memcached -d -m 2000 -u root -p 12000 -c 256 -P ./memcached.pid
1.啟動Memcache的伺服器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid
-d選項是啟動一個守護進程,
-m是分配給Memcache使用的內存數量,單位是MB,我這里是10MB,
-u是運行Memcache的用戶,我這里是root,
-l是監聽的伺服器IP地址,如果有多個地址的話,我這里指定了伺服器的IP地址192.168.0.200,
-p是設置Memcache監聽的埠,我這里設置了12000,最好是1024以上的埠,
-c選項是最大運行的並發連接數,默認是1024,我這里設置了256,按照你伺服器的負載量來設定,
-P是設置保存Memcache的pid文件,我這里是保存在 /tmp/memcached.pid,
也可以啟動多個守護進程,不過埠不能重復。
六:客戶端測試
1、下載java_memcached-release_2.5.1.zip
2、創建一個java project,將java_memcached-release_2.5.1.jar包引用。
3、在main函數中,創建2個類,如下
package com.danga.MemCached;
import java.io.Serializable;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class TestObj implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private Long id;
public TestObj()
{
}
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String toString()
{
return "id:"+this.getId()+";name:"+this.getName();
}
}
package com.danga.MemCached;
import java.io.Serializable;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class MemcacheTest
{
//create a static client as most installs only need
// a single instance
protected static MemCachedClient mcc = new MemCachedClient();
// set up connection pool once at class load
static
{
// server list and weights
String[] servers ={"192.168.0.226:12000"};
Integer[] weights = { 3 };
// grab an instance of our connection pool
SockIOPool pool = SockIOPool.getInstance();
// set the servers and the weights
pool.setServers( servers );
pool.setWeights( weights );
// set some basic pool settings
// 5 initial, 5 min, and 250 max conns
// and set the max idle time for a conn
// to 6 hours
pool.setInitConn( 5 );
pool.setMinConn( 5 );
pool.setMaxConn( 250 );
pool.setMaxIdle( 1000 * 60 * 60 * 6 );
// set the sleep for the maint thread
// it will wake up every x seconds and
// maintain the pool size
pool.setMaintSleep( 30 );
// set some TCP settings
// disable nagle
// set the read timeout to 3 secs
// and don't set a connect timeout
pool.setNagle( false );
pool.setSocketTO( 3000 );
pool.setSocketConnectTO( 0 );
// initialize the connection pool
pool.initialize();
// lets set some compression on for the client
// compress anything larger than 64k
mcc.setCompressEnable( true );
mcc.setCompressThreshold( 64 * 1024 );
}
public static void bulidCache()
{
mcc.set( "foo", "This is a test String" );
TestObj obj = new TestObj();
obj.setId(new Long(1));
obj.setName("test");
mcc.set("testObj", obj);
}
// from here on down, you can call any of the client calls
public static void output()
{
//
String bar = (String) mcc.get( "foo" );
System.out.println(bar);
TestObj obj = (TestObj)mcc.get("testObj");
System.out.println("ID : "+obj.getId()+"\n"+"Name : "+obj.getName());
}
public static void main(String[] args)
{
bulidCache();
output();
}
}
4、運行結果
This is a test String
ID : 1
Name : test
memcache配置成功~~~~~~~~~~~~~~~~~~~~
D. 在LINUX環境下怎樣設置無線網路配置
void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document);
[rts{N|auto|fixed|off}][frag{N|auto|fixed|off}][enc{NNNN-NNNN|off}][power{periodN|timeoutN}][retry{limitN|lifetimeN}][txpowerN{mW|dBm}][commit]
說明:iwconfig是LWE最主要的工具,可以對無線網卡的大部分參數進行配置。
參數:
essid:設置無線網卡的ESSID(ExtensionServiceSetID)。通過ESSID來區分不同的無線網路,正常情況下只有相同ESSID的無線站點才可以互相通訊,除非想監聽無線網路。其後的參數為雙引號括起的ESSID字元串,或者是any/on/off,如果ESSID字元串中包含any/no/off,則需要在前面加"--"。
示例:
#iwconfigeth0essidany允許任何ESSID,也就是混雜模式
var cpro_psid ="u2572954"; var cpro_pswidth =966; var cpro_psheight =120;
#iwconfigeth0essid"MyNetwork"設置ESSID為"MyNetwork"
#iwconfigeth0essid--"ANY"設置ESSID為"ANY"
nwid:NetworkID,只用於pre-802.11的無線網卡,802.11網卡利用ESSID和AP的MAC地址來替換nwid,現在基本上不用設置。
示例:
#iwconfigeth0nwidAB34#iwconfigeth0nwidoff
nick:Nickname,一些網卡需要設置該參數,但是802.11協議棧、MAC都沒有用到該參數,一般也不用設置。
示例:
#iwconfigeth0nickname"MyLinuxNode"mode:設置無線網卡的工作模式,可以是Ad-hoc:不帶AP的點對點無線網路
Managed:通過多個AP組成的網路,無線設備可以在這個網路中漫遊
Master:設置該無線網卡為一個AP
E. Linux進程後台運行的幾種方式
Ctrl+z/bg/nohup/setsid/&
在Linux中,如果要讓進程在後台運行,一般情況下,我們在命令後面加上&即可,實際上,這樣是將命令放入到一個作業隊列中了:
./rsync.sh jobs
但是如上方到後台執行的進程,其父進程還是當前終端shell的進程,而一旦父進程退出,則會發送hangup信號給所有子進程,子進程收到hangup以後也會退出。如果我們要在退出shell的時候繼續運行進程,則需要使用nohup忽略hangup信號,或者setsid將將父進程設為init進程(進程號為1):對於已經在前台執行的命令,也可以重新放到後台執行,首先按ctrl+z暫停已經運行的進程,然後使用bg命令將停止的作業放到後台運行:bg %1,放回前台運行:%1。
# nohup ./rsync.sh setsid ./rsync.sh &或
# (./rsync.sh &) ////在一個subshell中執行# ps -ef|grep rsync
nohup 的用途就是讓提交的命令忽略 hangup 信號,標准輸出和標准錯誤預設會被重定向到 nohup.out 文件中。。一般我們可在結尾加上」&」來將命令同時放入後台運行,也可用」 > log.out 2>&1」來更改預設的重定向文件名。
上面的試驗演示了使用nohup/setsid加上&使進程在後台運行,同時不受當前shell退出的影響。那麼對於已經在後台運行的進程,該怎麼辦呢?可以使用disown命令:
# jobs
# disown -h %1# ps -ef|grep rsync
效果與setid相同,但是disown後無法通過jobs命令查看了。
screen
還有一種更加強大的方式是使用screen,首先創建一個斷開模式的虛擬終端,然後用-r選項重新連接這個虛擬終端,在其中執行的任何命令,都能達到nohup的效果,這在有多個命令需要在後台連續執行的時候比較方便。
GNU Screen是一款由GNU計劃開發的用於命令行終端切換的自由軟體。用戶可以通過該軟體同時連接多個本地或遠程的命令行會話,並在其間自由切換,可以看作是窗口管理器的命令行界面版本。它提供了統一的管理多個會話的界面和相應的功能。
# yum install screen -y
常用screen參數:
# screen -S docker-d 新建一個名叫docker-d的session,並馬上進入
# screen -dmS docker-d 新建一個名叫docker-d的session,但暫不進入,可用於系統啟動腳本里
# screen -ls 列出當前所有session
# screen -r docker-d 恢復到zhouxiao這個session,前提是已經是斷開狀態(-d可以遠程斷開會話)
# screen -x docker-d 連接到離線模式的會話(多窗口同步演示)
# screen ./rsync.sh screen創建一個執行腳本的單窗口會話,可以attach進程ID
# screen -wipe 檢查目前所有的screen作業,並刪除已經無法使用的screen作業
正常情況下,當你退出一個窗口中最後一個程序(通常是bash)後,這個窗口就關閉了。另一個關閉窗口的方法是使用C-a k,這個快捷鍵殺死當前的窗口,同時也將殺死這個窗口中正在運行的進程。
在每個screen session 下,所有命令都以 ctrl+a(C-a) 開始。
C-a w 顯示所有窗口列表
C-a k 這個快捷鍵殺死當前的窗口,同時也將殺死這個窗口中正在運行的進程。
C-a d detach,暫時離開當前session
上面只是基本也是最常用的用法,更多請參考man screen或linux screen 命令詳解。需要了解的是,一個用戶創建的screen,其他用戶(甚至root)通過screen -ls是看不見的。另外,Ctrl+a在bash下是用來回到行開頭,不幸與上面的組合快捷鍵沖突。
F. linux如何修改用戶的密碼
linux修改密碼命令的方法是:
1、普通用戶一般使用該命令都是修改登錄密碼,使用方法也很簡單,只有在提示符下輸入 passwd ,按照提示輸入原密碼,然後再兩次輸入新密碼就可以了,但是要注意密碼的復雜度,否則系統不會接受。2、passwd命令的使用方法(root用戶)。root用戶通常可以在不需要知道用戶原密碼的情況下修改所有用戶的密碼,只需要輸入密碼passwd用戶名即可,按照提示兩次輸入新密碼就能夠設置完成。如果密碼在設置過程中不符合復雜度,系統會提示,但不會阻止設置完成。3、root用戶還可以鎖定用戶,只需要加上「-l選項」和用戶名即可。一旦用戶被鎖定,將無法登錄系統,提示信息都會是密碼錯誤。4、如果想恢復用戶的登錄,可以使用「-u」選項加用戶名即可。一旦解鎖,用戶就可以重新登錄系統。
G. linux如何設置程序開機啟動後台運行
有些時候,我們需要在終端啟動一個程序,並使之運行——但是如果關閉終端,那麼這個程序也就隨著關閉了。那麼有沒有什麼方法在關閉終端後,讓已經從這個終端啟動的程序繼續運行呢?有以下方法
1.讓linux忽略終端的hung up 信號,不關閉進程;
2.讓此進程變為終端的非子進程。
方法一:
在終端輸入命令:
# ./pso > pso.file 2>&1 &
解釋:將pso直接放在後台運行,並把終端輸出存放在當前目錄下的pso.file文件中。
當客戶端關機後重新登陸伺服器後,直接查看pso.file文件就可看執行結果(命
令:#cat pso.file )。
或者 在終端輸入命令:
# nohup ./pso > pso.file 2>&1 &
解釋:nohup就是不掛起的意思,將pso直接放在後台運行,並把終端輸出存放在當前
目錄下的pso.file文件中。當客戶端關機後重新登陸伺服器後,直接查看pso.file
文件就可看執行結果(命令:#cat pso.file )。
方法二:
實現方案就是nohup命令。
例如要啟動jboss,可以nohup ./run.sh &。這樣就可以了,結尾的「&」符號表示後台啟動jboss,從而不影響繼續運行其他命令。
但這樣有一個問題,nohup命令雖然可以讓linux「放過」這個進程,但是nohup會同時把進程的控制台輸出重定向到nohup.txt下(默認是這個文件),當然可以重定向為其他的文件,但是輸出總會有的。
如果jboss運行很長時間,而且如果有很多控制台輸出的話,nohup.txt文件就會變的很大很大。
通常項目中的日誌都會輸出到特定的日誌文件或者輸出到 資料庫 中,也就是說控制台的輸出對於程序的意義不大,那麼可不可以拋棄掉這些輸出呢?答案是肯定的。
這里講解一下linux的重定向(注意,是linux的重定向,不是針對nohup)。
0、1和2分別表示標准輸入、標准輸出和標准錯誤信息輸出,可以用來指定需要重定向的標准輸入或輸出。
在一般使用時,默認的是標准輸出,既1.當我們需要特殊用途時,可以使用其他標號。例如,將某個程序的錯誤信息輸出到log文件中:./program 2>log。這樣標准輸出還是在屏幕上,但是錯誤信息會輸出到log文件中。
另外,也可以實現0,1,2之間的重定向。2>&1:將錯誤信息重定向到標准輸出。
Linux下還有一個特殊的文件/dev/null,它就像一個無底洞,所有重定向到它的信息都會消失得無影無蹤。
結合nohup,我們可以這樣 nohup ./run.sh >/dev/null &
這是最簡單的一種方式,既保證了程序能夠一直後台執行,又能保證不會產生太大的nohup.txt文件。
方法三:
利用的linux的一個機制,讓程序在subshell中執行,方法很簡單,將命令用括弧() 括起來即可。
ps -ef | grep test
可以看到run.sh的父進程為1,不是當前終端了,這樣就能忽略hung up信號。
當然linux還可以動態的讓程序後台運行或不被hung up 信號關閉,例如disown命令,setid命令等。
方法四:
如果是使用Ubuntu的話,你可以利用CTRL+ALT+T組合鍵打開終端。當然你也可以使用超級鍵(Windows鍵)打開Dash,搜索「TERM」,然後點擊「Term」圖標來打開終端窗口。
對於其他的桌面環境來說,例如XFCE、KDE、LXDE、Cinnamon以及MATE,你可以在菜單中找到終端。有些環境會在停靠欄或者面板上麵包含終端圖標。
通常情況下,你可以在終端裡面直接輸入應用程序名來啟動一個應用程序。比如說,你可以通過輸入「firefox」來啟動Firefox。
在終端啟動應用程序的好處是,你可以包含一些額外的參數。
例如,你可以通過下列命令來打開一個Firefox瀏覽窗口,然後利用默認的搜索引擎搜索相關信息:
firefox -search "linux.cn"
你可能會注意到,如果你啟動Firefox,程序打開以後,回到了終端窗口控制,這就意味著你可以繼續在終端進行工作。
通常情況下,如果你在終端啟動了應用程序,控制會切換到新啟動的應用程序,只有程序被關閉以後才會重新切換到終端控制。這是因為你在前台啟動了這個程序。
如果要在Linux終端打開應用程序並且返回終端控制,那麼你需要將應用程序啟動為後台進程。
和下面所列的命令一樣,我們可以通過增加一個(&)符號,將應用程序在後台啟動。
libreoffice &
譯者註:如果需要加參數的話,記得把&符號放在最後。
譯者註:一般情況下,關閉終端時,在這個終端啟動的後台程序也會被終止,要使終端關閉以後,後台程序依然保持執行可以使用下列命令
nohup command [arg...] &
如果應用程序目錄沒有安裝在PATH變數包含的目錄裡面的話,我們就沒有辦法直接通過應用程序名來啟動程序,必須輸入應用程序的整個路徑來啟動它。
/path/to/yourprogram &
如果你不確定程序輸入哪個Linux目錄結構的話,可以使用find或者location命令來定位它。
可以輸入下列符號來找到一個文件:
find /path/to/start/from -name programname
例如,你可以輸入下列命令來找到Firefox:
find / -name firefox
命令運行的結果會嗖的一下輸出一大堆,別擔心,你也可以通過less或者more來進行分頁查看。
find / -name firefox | more find / -name firefox | less
當find命令查找到沒有許可權訪問的文件夾時,會報出一條拒絕訪問錯誤,
你可以通過sudo命令來提示許可權。當然,如果你沒有安裝sudo的話,就只能切換到一個擁有許可權的用戶了。
sudo find / -name firefox | more
如果你知道你要查找的文件在你的當前目錄結構中,那麼你可以使用點來代替斜杠:
sudo find . -name firefox | more
你可能需要sudo來提升許可權,也可能根本就不需要,如果這個文件在你的主目錄裡面,那麼就不需要使用sudo。
有些應用程序則必須要提升許可權才能運行,否則你就會得到一大堆拒絕訪問錯誤,除非你使用一個具有許可權的用戶或者使用sudo提升許可權。
這里有個小竅門。如果你運行了一個程序,但是它需要提升許可權來操作,輸入下面命令試試:
sudo !!
方法五:
在Unix/Linux下如果想讓程序獨立終端運行,一般都是使用 & 在命令結尾來讓程序自動運行。(命令後可以不追加空格)
打開gnome-terminal,執行如下命令:
delectate@delectate:~$ totem &[1] 8510delectate@delectate:~$ 有幾點需要注意:
已經啟動的程序依然attach於當前pts,只有當前終端模擬器關閉(使用exit命令退出),進程自動被tty繼承。delectate@delectate:~$ ps -e | grep totem //程序已被以totem & 形式啟動,當前附在pts0上8819 pts/0 00:00:00 totemdelectate@delectate:~$ ps -e | grep totem //pts0的模擬終端被exit命令關閉,totem自動附在tty8819 ? 00:00:00 totemdelectate@delectate:~$
具有debug輸出的進程,需要按enter鍵進行中斷當前debug輸出。但是如果程序持續進行printf,你將無法輸入任何命令。delectate@delectate:~$ vlc &[1] 8850delectate@delectate:~$ VLC media player 1.0.6 Goldeneye[0x8b998b0] main libvlc: Running vlc with the default interface. Use 『cvlc』 to use vlc without interface. //enter presseddelectate@delectate:~$ //show a clean terminal now** (:8850): CRITICAL **: giop_thread_request_push: assertion `tdata != NULL』 failed //仍然在輸出數據…… //關閉程序[1]+ Done vlcdelectate@delectate:~$
你無法記錄程序的debug輸出結果。
只有當虛擬終端是 $ 或者 # 時候,才可以關閉此終端,否則可能導致已經啟動的進程被關閉(按enter——如果程序持續輸出信息而沒有出現 $ 或 #)
使用nohup命令:
nohup描述:Run COMMAND, ignoring hangup signals.(忽略任何中斷/掛起信號,使命令繼續執行)
但是當你嘗試使用命令:
1nohup command
時候卻會遇到不大不小的麻煩……
delectate@delectate:~$ nohup vlcnohup: ignoring input and appending output to `nohup.out』
是的,雖然它自動把debug信息記錄到nohup.out文件,但是你卻無法使用這個終端進行任何操作。
所以你需要和第一個方法混用,即
nohupcommand {option}&
混用後,它會自動把你執行的命令輸出結果記錄到許可權為-rw——-,名為nohup.out的文件中。
但是你仍然需要
delectate@delectate:~$ nohup vlc &[1] 9045delectate@delectate:~$ nohup: ignoring input and appending output to `nohup.out』 //在這里按一下回車或以ctrl+c以 //show a clean terminal delectate@delectate:~$
與使用 「&」 性質相同,當前啟動程序的終端如果沒有被關閉,已經啟動的程序附在pst上;如果終端被關閉,則自動附在tty。
如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out。默認狀態下,nohup默認輸出到nohup.out文件,你也可以利用重定向來指定輸出文件:
nohupcommand {option} > myout.file 2>&1 &
只有當虛擬終端是 $ 或者 # 時候,才可以關閉此終端,否則可能導致已經啟動的進程被關閉(按enter——如果程序持續輸出信息而沒有出現 $ 或 #)
其他相關命令:
jobs:查看當前有多少在後台運行的命令
fg:將後台中的命令調至前台繼續運行。如果後台中有多個命令,可以用 fg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後台正在執行的命令的序號(不是pid)
bg:將一個在後台暫停的命令,變成繼續執行。如果後台中有多個命令,可以用bg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後台正在執行的命令的序號(不是pid)
殺死進程
殺死已經啟動的程序和普通方式一樣:
pkill -9 name
killall name
kill pid
…
命令應用:
linux伺服器掛機下載;啟動相關服務;linux伺服器啟動進程(尤其是ssh登錄)
我就曾經用 1nohup aria2c -i downloadlist -m 0 -j 1 &
H. 配置LINUX的IP命令
通過配置文件配置LINUX的IP命令:vim /etc/sysconfig/network-scripts/ifcfg-eth0
配置文件如下:
ONBOOT=yes
BOOTPROTO=none:表示不使用dhcp服務,如果是手動配置靜態的ip地址,BOOTPROTO的值可以為none或者static。
IPADDR=192.168.1.66:表示設置IP地址。
NETMASK=255.255.255.0:表示設置子網掩碼。
GATEWAY=192.168.1.1: 表示設置網關。
DNS1=192.168.1.1:表示設置首選DNS伺服器,DNS有自己的配置文件/etc/resolv.conf,在這里設置DNS,就是把它寫入了DNS的配置文件/etc/resolv.conf。
然後,執行service network restart,重啟網路服務配置文件生效即可。
(8)linux的setid擴展閱讀:
通過ifconfig命令配置LINUX的IP命令:
命令名稱:ifconfig
基本語法:ifconfig [網卡標識] [IP地址]
英文原意:interface configuration
執行許可權:root
功能描述:查看或臨時配置網卡信息
說明: ifconfig 命令主要是用來查看網卡的配置信息,因為用它來配置網卡的IP地址時,只會臨時生效(Linux伺服器重啟後就會失效)。
這種配置ip的方式只能設置IP和子網掩碼,估只適合內網(區域網)使用。
如果想連通外網,還必須設置網關和DNS。