系統:
Linux Mandrake 8.0
名稱:
doexec
位置:
/bin/doexec
主要用途:
執行一個執行檔,並指定任意的argv[0]當作參數。
使用說明:
doexec /path/to/executable argv[0] [argv[1-n]]
描述:
doexec只是執行一個執行檔,並且隨著參數。他讓你可以指定argv[0]
當作參數,而不只是單單一個執行檔名稱而已。
功能選項:
在程式名稱及argv[0]後的所有參數都會傳給程式執行。
shared library:
/lib/libc.so.6 (0x4001c000)
/lib/ld-linux.so.2 (0x40000000)
使用範例:
以下是一個shell script
#!/bin/bash
echo $*
$doexec ./passargv.sh 1 2 3 4 5
2 3 4 5
系統:
Linux Mandrake 8.0
名稱:
ping
位置:
/bin/ping
主要用途:
傳送ICMP ECHO_REQUEST封包給網路上的主機
使用說明:
ping [-LRUbdfnqrvV] [-c count] [-i interval] [-l preload] [-p pattern]
[-s packetsize] [-t ttl] [-w deadline] [-I interface address]
[-Ttimestamp option] [-Q tos] [-M hint] host
描述:
ping使用ICMP協定中的ECHO_REQUEST封包去觸發網路上的一台主機,使其回送ECHO_RESPONSE封包。
ECHO_REQUEST封包有IP和ICMP的標頭,緊接著是struct timeval(一段時間間格),剩下則由pad
(填塞封包用)來將封包填滿。
功能選項:
-b 允許去pinging一個廣播位址。
-c count
傳送"count"個ECHO_REQUEST封包之後停止傳送。和"-w deadline"功能一起用的話,ping會等待"count"個 ECHO_REPLY封包直到時間到為止。
-d 設定SO_DEBUG功能在一個使用的socket。
-f 如猛水般瘋狂的ping。傳送封包的速度可達接收封包 的速度的百倍甚至更多。對每一個送出去的ECHO_REQUEST
會在螢幕上印出".",而對每一個收到的ECHO_REPLY則會印出backspace。這可以提供一個對有多少封 包丟掉的 快速表達方式。
-i wait
在傳送每一個封包之間等"wait"的時間。預設值是一秒。這功能選項和功能選項" -f "不相容。
-I interface address
指定一個interface address來當來源位址。
-l preload 以最快的速度送出"preload"個ECHO_REQUEST封包 之後,便回復到ping一般的運作模式。只有超級使用者能使
用這個功能選項。
-L 壓抑multicast封包的loopback。這選項只能用在被ping的目標是multicast位址。
-p pattern
可以讓你最多指定16個pad位元組去填滿送出的封包 。這在一個網路裡診斷跟"資料相依"的問題是非常有用的 。例如:"-p ff"將會以"1"填滿要送出的封包。
-Q tos
在ICMP數據內設定QoS(服務品質)相關的位元。"tos"可以是十進位或十六進位。傳統上(RFC1394) ,可以分成 如下:
位元0: 保留用(目前已經被重新定義來當擁塞控制(congestion control)用)。 位元1-4: 服務的種類。
可能的設定有:0x22 最低成本; 0x04 可靠性; 0x08 處理量; 0x10 低延遲。 位元5-7: 優先權先後。
可能的優先權範圍從 高優先權0x20 到 網路控制0xe0。你必須是超級使用者 (相容CAP_NET_ADMIN)才能使用關鍵性或者較高的數值。 你不能設為0x01(保留),除非在kernel裡有開啟"ECN"。 在RFC2474裡,這欄位的值已經被重新定義成一個8位元的差別服務(Differentiated Services (DS)),由以下 組成:
位元0-1: 分開的資料("ECN"在這裡被使用) 位元2-7: 差別服務碼點(Differentiated Services Codepoint(DSCP))
-q 安靜輸出。在螢幕上不顯示訊息,除了在啟動和結束時的摘要訊息。
-R 紀錄路由。在ECHO__REQUEST裡包含RECORD_ROUTE選項,在返回的封包 中取得路由緩衝並顯示出來。注意,IP
標頭只能裝下九個路由訊息。很多主機忽略或者關閉這選項。
-r 跳過一般路由表格,直接送給在一個附加網路的主機。假如這主機不在附� [的網路中,則會有錯誤的訊息產生
。這功能選項可以被使用在ping一個不用經過路由的主機上。
-s packetsize
指定要傳送封包的大小。預設值是56位元組,加上8位元組ICMP標頭,成為64位元組的ICMP封包 。
-t ttl
設定IP的"Time to Live"時間,這個功能只對目標主機是一個multicast位址。
-T timestamp option
設定特別的IP時間戳記選項。timestamp option可以是"tsonly"或者"tsandaddr或者"tsprespec [host1 [host2 [host3 [host 4]]]。
-M hint
選擇PATH MTU Discovery 方式。"hint"可以是"do"(禁止分割封包)或"want"(做PATH MTU Discovery, 當封包太大時進行分割)或者"dont"(不設定DF旗標))。
-U 印出真正的使用者對使用者延遲時間(舊方法)。
-v 詳細的輸出。
-V 秀出ping的版本。
-w deadline
指定一個到期時間。以秒計算,不管在時間到之前送出或收到多少封包,時間一到就停止。
使用ping對網路偵錯時,應該先檢查自己的主機,去驗證網路介面是否正常。ping 對封包來回兩端的時間和遺失的封包都會 統計起來假如有兩個相同的封包被接收,則封包遺失的統計不會納入這兩個封包,但封包 來回兩端的時間會被計算。當使用 ping時,只要有傳送或接收到封包,就算中途被以SIGINT結束,還是會有簡短的摘要出現。
假如ping沒有收到任何回應的封包,將會以code 1 離開; 假如搭配-c count和-w deadline,而且在deadline到達之前,收到 的封包比傳送的還少,則也會以code 1 離開。如果是其他的錯誤則以code 2 離開。其他則以code 0 離開。這使得能夠利用 exit code來判斷一個主機是否還活著。
ping這個程式較適合用來網路測試、量測和管理。因 為ping會對網路造成不小的負荷,在一般使用上或者在命令稿上使用ping 並不明智。
其他參考:
ICMP PACKET DETAIL
一個沒有options的IP標頭是20位元組。一個ICMP ECHO_REQUEST封包還多包
含了一個8位元組的ICMP標頭,之後跟著任意數量
的資料。當"packetsize"被指定時,就指定了那些資料的大小。預設值是56位元組。因
此,對於一個ECHO_REPLY的IP封包所接
收到的資料量會比ICMP標頭多至少8位元組。假如資料大小在8位元組以上,ping會使用前8個位元組用來
紀錄timestamp,好計
算封包來回時間。倘若資料量小於8位元組,則封包來回時間將不會被計算。
DUPLICATE AND DAMAGED PACKETS
ping會對相同和破損的封包做報告。相同的封包
不應該會發生,而且應該是由連結層重傳送所造成。相同封包的情況可能會發
生在很多情形下,但都是很罕見發生的,所以ping對相同的封包不會引起一個警告。破損的封包
是很明顯嚴重的警告。而且常
常指出在封包經過的路途上可能有硬體的破損,比如在主機上或網路上。
TRYING DIFFERENT DATA PATTERNS
在網路層裡對待封包並不會依據其所包
含的內容有差別而不同。但是不幸的是,資料相依的問題已經偷偷的進入網路且維持好
長一段時間了。在很多特定的情況下會發生傳送不充分的問題,比如資料全都是1或者全都是0,雖然我�
怞b命列列所打入的命
令不見得是一連串的o或1,但是在連結層中所處理的情形可以是非常複雜的,真正傳送時的資料我們並�
ㄛO很容易瞭解。
這意旨著假使你遇到資料相依的問題,如一個檔案無法在網路間傳送或者傳送所花的時間比相同長度檔�
蚳荅S別久。你可以使
用功能選項"-p"來偵錯。
TTL DETAILS
IP封包的TTL值表示在被丟掉前能經過的最大路由器數目。目前的情況下,封包
每經過一個路由器,其TTL的值就會被減去1。
在TCP/IP規格中指出TCP封包的TTL值應該被設定成60,但是很多系統都設的比較低,如4.3BSD設成30,
4.2BSD設成15。
TTL值最大可以設成255。在大部分UNIX系統上,對ICMP ECHO_REQUEST的TTL值設成255。這也
就為什麼有時候你可用ping找到
主機但是卻無法ftp或telnet他們。
當遠端主機接收到一個ping的封包時,他可以對其TTL封包做三種事:
歷史:
ping最先出現在4.3BSD。
shared library:
/lib/libresolv.so.2 (0x4001c000) /lib/libc.so.6 (0x4002e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
使用範例:
$ping -c 5 -i 3 140.113.92.114
傳送5個ICMP_REQUEST封包而且每個封包之間間格3秒,傳送後便會結束程式並統計結果。
$ping -f -s 1024 140.113.92.114
使每個ICMP封包大小為1024位元組,並且使用洪水氾濫的模式不斷的送出封包。
$ping -t 5 -w 10 140.113.92.114
將TTL設成5,並且在10秒後結束並統計結果。
$ping -p ff -l 1024 140.113.92.114
以0xff填滿封包,並且以最快速的速度送出1024個封包後,便回到一般的速度送出封包。
系統:
Linux Mandrake 8.0
名稱:
true
位置:
/bin/true
主要用途:
不做什麼,成功地。
使用說明:
true [ignored command line arguments]
true OPTION
描述:
離開程式並伴隨著一個指出成功的狀態碼。
功能選項:
--help 顯示出這個說明並離開。
--version 輸出這程式的版本並離開。
true 不做任何事,除了傳回一個為0的離開狀態,代表"成功"。他可以被使用放在shell script中來代表執行沒問題的指令的 地方,雖然shell 內建的指令";"(分號)做同樣的事而且還比較快。 true 忽略所有的參數,除了--help 和--version。 這一個版本的true 是以C語言實作的,比以往以shell scirpt實作來的安全而且快速。而且也 許能夠安全的使用在用來使帳號 失效的空shell上面。
shared library:
/lib/libpam.so.0 (0x4001c000)
/lib/libpam_misc.so.0 (0x40024000) /lib/libc.so.6 (0x40027000)
/lib/libdl.so.2 (0x40154000)
/lib/ld-linux.so.2 (0x40000000)
使用範例:
以下是一個shell script
#!/bin/bash
#filename: test.sh
less !@#$
echo "'less !@#$' ,return $?"
#它會傳回一個status code 1 代表錯誤
true
echo "after 'true',return $?"
#它會傳回一個status code 0 代表正確
$./test.sh
!@#$: No such file or directory
'less !@#$' ,return 1
after 'true',return 0