Java 可以通過 Runtime 調用Linux命令,形式如下:
Runtime.getRuntime().exec(command)
但是這樣執行時沒有任何輸出,因為調用 Runtime.exec 方法將產生一個本地的進程,並返回一個Process子類的實例
由於調用 Runtime.exec 方法所創建的子進程沒有自己的終端或控制台,因此該子進程的標准IO(如stdin,stdou,stderr)都通過 Process.getOutputStream(),Process.getInputStream(), Process.getErrorStream() 方法重定向給它的父進程了。
用戶需要用這些stream來向子進程輸入數據或獲取子進程的輸出,下面的代碼可以取到 linux 命令的執行結果:
try {
String[] cmd = new String[]{」/bin/sh」, 「-c」, 」 ls 「};
Process ps = Runtime.getRuntime().exec(netstat);
BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append(」\n」);
}
String result = sb.toString();
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
㈡ linux代碼 怎麼判斷網路連接
linux查看網路鏈接狀況命令
netstat 參數如下:
-a 顯示所有socket,包括正在監聽的。
-c 每隔1秒就重新顯示一遍,直到用戶中斷它。
-i 顯示所有網路介面的信息,格式同「ifconfig -e」。
-n 以網路IP地址代替名稱,顯示出網路連接情形。
-r 顯示核心路由表,格式同「route -e」。
-t 顯示TCP協議的連接情況。
-u 顯示UDP協議的連接情況。
-v 顯示正在進行的工作。
1. netstat -an | grep LISTEN
0.0.0.0的就是每個IP都有的服務,寫明哪個IP的就是綁定那個IP的服務。
2. netstat -tln
用來查看linux的埠使用情況
3. /etc/init.d/vsftp start
是用來啟動ftp埠~!
4. netstat
查看已經連接的服務埠(ESTABLISHED)
5. netstat -a
查看所有的服務埠(LISTEN,ESTABLISHED)
6. sudo netstat -ap
查看所有的服務埠並顯示對應的服務程序名
7. nmap <掃描類型><掃描參數>
例如:
nmap localhost
nmap -p 1024-65535 localhost
nmap -PT 192.168.1.127-245
當我們使用netstat -apn查看網路連接的時候,會發現很多類似下面的內容:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 52 218.104.81.152:7710 211.100.39.250:29488 ESTABLISHED 6111/1
顯示這台伺服器開放了7710埠,那麼這個埠屬於哪個程序呢? 我們可以使用lsof -i :7710命令來查詢:
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 1990 root 3u IPv4 4836 TCP *:7710 (LISTEN) 54com.cn
這樣,我們就知道了7710埠是屬於sshd程序的。
=================================================
下面這個語句是一個非常好的查看TCP連接狀態的語句:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}』
返回結果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
以下是各種狀態的描述
CLOSED:無連接是活動的或正在進行
ESTABLISED:已建立連線的狀態;
SYN_SENT:發出主動連線 (SYN 標志) 的連線封包;
SYN_RECV:接收到一個要求連線的主動連線封包;
FIN_WAIT1:該插槽服務(socket)已中 斷,該連線正在斷線當中;
FIN_WAIT2:該連線已掛斷,但正在等待對方主機回應斷線確認的封包;
TIME_WAIT:該連線已 掛斷,但 socket 還在網路上等待結束;
LISTEN:通常用在服務的監聽 port !可使用『 -l 』參數查閱。
CLOSING: 兩邊同時嘗試關閉
TIME_WAIT:另一邊已初始化一個釋放
LAST_ACK:等待所有分組死掉
㈢ linux系統用什麼命令查看埠的佔用情況
[root@raykaeso ~]# netstat -ntlp //查看伺服器運行的進程服務和監聽埠
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 16725/java
tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 16725/java
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2138/mongod
tcp 0 0 0.0.0.0:8010 0.0.0.0:* LISTEN 14335/java
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 859/memcached
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 16725/java
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 872/httpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 873/sshd
tcp6 0 0 :::3306 :::* LISTEN 23443/mysqld
tcp6 0 0 :::11211 :::* LISTEN 859/memcached
tcp6 0 0 :::22 :::* LISTEN 873/sshd
Linux netstat命令是顯示網路連接、路由表和網路介面信息,可以讓用戶得知有哪些網路連接正在運作。使用時如果不帶參數,netstat顯示活動的 TCP 連接。netstat命令用來列印Linux中網路系統的狀態信息最常用的命令之一。
netstat參數:
-a:顯示所有連線中的Socket
-A:列出該網路類型連線中的相關地址
-c:持續列出網路狀態
-C:顯示路由器配置的快取信息
-e:顯示網路其他相關信息
-F:顯示FIB
-g:顯示多重廣播功能群組組員名單
-h:在線幫助
-i:顯示網路界面信息表單
-l:顯示監控中的伺服器的Socket
-M:顯示偽裝的網路連線
-n:直接使用ip地址,而不通過域名伺服器
-N:顯示網路硬體外圍設備的符號連接名稱
-o:顯示計時器
-p:顯示正在使用Socket的程序識別碼和程序名稱
-r:顯示Routing Table
-s:顯示網路工作信息統計表
-t:顯示TCP傳輸協議的連線狀況
-u:顯示UDP傳輸協議的連線狀況
-v:顯示指令執行過程
-V:顯示版本信息
-w:顯示RAW傳輸協議的連線狀況
[root@localhost ~]# netstat -ntlp //查看伺服器運行的進程服務和監聽埠
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 16725/java
tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 16725/java
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2138/mongod
tcp 0 0 0.0.0.0:8010 0.0.0.0:* LISTEN 14335/java
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 859/memcached
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 16725/java
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 872/httpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 873/sshd
tcp6 0 0 :::3306 :::* LISTEN 23443/mysqld
tcp6 0 0 :::11211 :::* LISTEN 859/memcached
tcp6 0 0 :::22 :::* LISTEN 873/sshd
㈣ linux 怎麼察看netstat
在Linux使用過程中,需要了解當前系統開放了哪些埠,並且要查看開放這些埠的具體進程和用戶,可以通過netstat命令進行簡單查詢
netstat命令各個參數說明如下:
-t : 指明顯示TCP埠
-u : 指明顯示UDP埠
-l : 僅顯示監聽套接字(所謂套接字就是使應用程序能夠讀寫與收發通訊協議(protocol)與資料的程序)
-p : 顯示進程標識符和程序名稱,每一個套接字/埠都屬於一個程序。
-n : 不進行DNS輪詢,顯示IP(可以加速操作)
3
即可顯示當前伺服器上所有埠及進程服務,於grep結合可查看某個具體埠及服務情況··
netstat -ntlp //查看當前所有tcp埠·
netstat -ntulp |grep 80 //查看所有80埠使用情況·
netstat -an | grep 3306 //查看所有3306埠使用情況·
4
例如要查看當前Mysql默認埠3306是否啟動可以做如下操作
㈤ LINUX下的netstat
$netstat -help
usage: netstat [-vWeenNcCF] [<Af>] -r netstat {-V|--version|-h|--help}
netstat [-vWnNcaeol] [<Socket> ...]
netstat { [-vWeenNac] -i | [-cWnNe] -M | -s }
-r, --route display routing table
-i, --interfaces display interface table
-g, --groups display multicast group memberships
-s, --statistics display networking statistics (like SNMP)
-M, --masquerade display masqueraded connections
-v, --verbose be verbose
-W, --wide don't truncate IP addresses
-n, --numeric don't resolve names
--numeric-hosts don't resolve host names
--numeric-ports don't resolve port names
--numeric-users don't resolve user names
-N, --symbolic resolve hardware names
-e, --extend display other/more information
-p, --programs display PID/Program name for sockets
-c, --continuous continuous listing
-l, --listening display listening server sockets
-a, --all, --listening display all sockets (default: connected)
-o, --timers display timers
-F, --fib display Forwarding Information Base (default)
-C, --cache display routing cache instead of FIB
<Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom
<AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: inet
List of possible address families (which support routing):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
x25 (CCITT X.25)
以上是幫助文檔。linux的命令一般都提供man XXX和 XXX -help命令給你查找幫助。
㈥ linux netstat命令詳解
Netstat是控制台命令,是一個監控TCP/IP網路的非常有用的工具,它可以顯示路由表、實際的網路連接以及每一個網路介面設備的狀態信息。Netstat用於顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用於檢驗本機各埠的網路連接情況。《Linux就該這么學》 一起來學習。
netstat的輸出結果可以分為兩個部分
1、Active Internet connections有源TCP連接,其中"Recv-Q"和"Send-Q"指接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟體包正在隊列中堆積。這種情況只能在非常少的情況見到。
2、Active UNIX domain sockets有源Unix域套介面(和網路套接字一樣,但是只能用於本機通信,性能可以提高一倍)。
列名解釋:
Proto:顯示連接使用的協議。
RefCnt:表示連接到本套介面上的進程號。
Types:顯示套介面的類型。
State:顯示套介面當前的狀態。
Path:表示連接到套介面的其它進程使用的路徑名。