系統:
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封包做三種事:

  1. 不改變TTL值。這樣的話,收到的封包 ,其TTL值將會是255減去來回路途中的路由器數目。在4.3BSD-Tahoe release 中就是這麼做。
  2. 將TTL設成255。這樣的話,收到的封包,其TTL值將會是255減去回� {途中經過的路由器數目。在目前的BSD版本中是 這麼做。
  3. 設成某個值。有些機器會將ICMP封包的TTL值設成和TCP封包相同,例如30或60。

歷史:
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