Linux命令必知必会
[TOC]
top命令
監(jiān)控系統(tǒng)的運行狀態(tài),并且可以按照cpu、內(nèi)存、執(zhí)行時間進行排序。
第一行中,03:30:22是當前時間,up 39 min是系統(tǒng)運行的運行了多長時間,1 user指出了當前有幾個用戶登錄到系統(tǒng),load average指的是系統(tǒng)負載,這后面的三個值分別是1分鐘,5分鐘,15分鐘的系統(tǒng)負載平均值。
如果僅僅需要第一行中的信息,可以使用uptime命令。
第二行中,Task指出了當前系統(tǒng)有多少個進程,以及各種狀態(tài)的進程統(tǒng)計信息。
第三行是%Cpu(s),代表了CPU占用比例,其中:
- us 用戶模式(user mode)
- sy 系統(tǒng)模式(system mode)
- ni 優(yōu)先值(low priority user mode(nice))
- id 空閑CPU百分比(idle task)
- wa 等待輸入輸出的CPU事件百分比(I/O waiting)
- hi servicing IRQs
- si servicing soft IRQs
- st steal (time given to other DomU instances)
ni是優(yōu)先值(nice value),也就是任務(wù)的優(yōu)先值。優(yōu)先值為負數(shù),則說明任務(wù)有更高的優(yōu)先級,正數(shù)值說明任務(wù)有更低的優(yōu)先級,該值為0意味著進程的優(yōu)先級沒有調(diào)整。
最后兩行為內(nèi)存信息,前者Mem為物理內(nèi)存占用信息,后者Swap為交換分區(qū)占用信息。
使用-M參數(shù)可以更加友好的顯示內(nèi)存占用信息。默認是以kb展示的,看起來比較費勁,使用-M之后會根據(jù)數(shù)值大小,以G/M為單位展示。
最下面是進程的信息區(qū)域:
- PID 進程的PID
- USER 用戶名,任務(wù)屬主
- PR 任務(wù)的優(yōu)先級
- NI 優(yōu)先值
- VIRT 虛擬映像(kb),任務(wù)當前使用的虛擬內(nèi)存數(shù)量
- RES 常駐物理內(nèi)存占用量,RES=CODE+DATA
- SHR 共享內(nèi)存大小(kb)
- S 進程狀態(tài)(D-不可中斷的睡眠,R-運行,S-睡眠,T-停止,Z-僵尸進程)
- %CPU CPU使用量
- %MEM 內(nèi)存使用量
- TIME+ CPU時間,百分之一
- COMMAND 程序名稱
參考linux top命令詳解
pgrep/pkill 命令
根據(jù)名稱或者其它屬性查詢(發(fā)送信號)進程信息。
pgrep命令根據(jù)提供的條件查詢進程的pid,查詢條件是and方式的,對于同一個選項,使用『,』分隔可以按照or方式查詢。
pgrep -u root sshd # 查詢進程名為sshd,并且屬主是root的進程 pgrep -u root,daemon # 查詢屬主是root或者daemon的進程pkill 使用與pgrep類似,不過它不是用來查詢進程pid,而是給進程發(fā)送信號,默認會發(fā)送 SIGTERM信號。
例如:
$ pgrep -u root named # 查找named進程的pid $ pkill -HUP syslogd # 告訴syslogd重新讀取配置文件要查看有哪些信號可用,可以使用kill -l列出所有的信號以及其數(shù)值。
except命令
- send 發(fā)送一個字符串給進程。
- expect 等待來自進程返回的字符串。
- spawn 開始一個命令。
實現(xiàn)控制臺SSH直接登陸Linux服務(wù)器
#!/usr/bin/expectset timeout 20set ip "IP地址" set user "用戶名" set password "密碼"spawn ssh "$user\@$ip"expect "$user@$ip's password:" send "$password\r"interact參考 [6 Expect Script Examples to Expect the Unexpected (With Hello World)
](http://www.thegeekstuff.com/2010/10/expect-examples/)
pstack命令
pstack是一個shell腳本,用于打印正在運行的進程的棧跟蹤信息,它實際上是gstack的一個鏈接。
該命令只需要提供一個參數(shù),進程的pid即可。
$ sudo pstack $(pgrep -uroot php-fpm) [sudo] password for guanyy: #0 0x000000380d8e86f3 in __epoll_wait_nocancel () from /lib64/libc.so.6 #1 0x00000000007ec4a4 in fpm_event_epoll_wait () #2 0x00000000007e1517 in fpm_event_loop () #3 0x00000000007dc887 in fpm_run () #4 0x00000000007e3bd8 in main ()pstack是gdb的一部分,如果系統(tǒng)沒有pstack命令,使用yum搜索安裝gdb即可。
strace命令
strace命令用于跟蹤系統(tǒng)調(diào)用和信號。主要用于診斷,調(diào)試程序,使用該命令能夠打印出進程執(zhí)行的系統(tǒng)調(diào)用信息。
在 Mac 下使用dtruss命令代替
找出應(yīng)用程序啟動時讀取的配置文件
$ strace php 2>&1 | grep php.ini open("/usr/local/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/local/lib/php.ini", O_RDONLY) = 4 lstat64("/usr/local/lib/php.ini", {st_mode=S_IFLNK|0777, st_size=27, ...}) = 0 readlink("/usr/local/lib/php.ini", "/usr/local/Zend/etc/php.ini", 4096) = 27 lstat64("/usr/local/Zend/etc/php.ini", {st_mode=S_IFREG|0664, st_size=40971, ...}) = 0這里的2>&1 是將標準錯誤輸出重定向到標準輸出。
查找為什么程序沒有打開指定文件
$ strace -e open,access 2>&1 |grep your-filename-e參數(shù)指定了一個限定表達式用于指定要跟蹤的事件和如何跟蹤它們。
[qualifier=][!]value1[,value2]...這里的qualifier可選值為: trace, abbrev, verbose, raw, signal, read, write。默認的qualifier是trace。
查看進程正在執(zhí)行什么操作
root@dev:~# strace -p 15427 Process 15427 attached - interrupt to quit futex(0x402f4900, FUTEX_WAIT, 2, NULL Process 15427 detached-p指定了strace跟蹤的進程的pid,這樣就避免了每次執(zhí)行strace時需要重啟程序。
查看進程的哪些操作比較耗時
root@dev:~# strace -c -p 11084 Process 11084 attached - interrupt to quit Process 11084 detached % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ----------------94.59 0.001014 48 21 select2.89 0.000031 1 21 getppid2.52 0.000027 1 21 time ------ ----------- ----------- --------- --------- ---------------- 100.00 0.001072 63 total-c參數(shù)用于統(tǒng)計進程做了哪些系統(tǒng)調(diào)用,調(diào)用的時間統(tǒng)計等,并對這些信息做一個匯總顯示。
查看為什么xxx無法連接到服務(wù)器
$ strace -e poll,select,connect,recvfrom,sendto nc www.news.com 80 sendto(3, "\\24\\0\\0\\0\\26\\0\\1\\3\\255\\373NH\\0\\0\\0\\0\\0\\0\\0\\0", 20, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 20 connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) ...參考5 simple ways to troubleshoot using Strace
nc命令
該命令用于創(chuàng)建任意的TCP/UDP連接或者是監(jiān)聽連接。
建立一個基本的C/S模型(文件遠程復(fù)制)
在Server1上,使用nc命令創(chuàng)建一個服務(wù)端:
server1 $ nc -l 1234在Server2上,使用nc作為客戶端連接到server1
server2 $ nc server1的IP地址 1234這樣就建立起一個簡單的C/S連接,在server2中輸入任何內(nèi)容,在server1都可以接受到(同步顯示)。
上面的例子可以改造實現(xiàn)文件遠程發(fā)送
server1 $ nc -l 1234 > filename.out在server2上
server2 $ nc server1的IP地址 1234 < filename.in-l 指定了nc應(yīng)該作為server端監(jiān)聽指定的端口
模擬HTTP請求
# echo -n "GET / HTTP/1.0\r\n\r\n" | nc php.net 80 HTTP/1.1 400 Bad Request Server: nginx/1.6.2 Date: Tue, 16 Dec 2014 08:09:35 GMT Content-Type: text/html Content-Length: 172 Connection: close<html> <head><title>400 Bad Request</title></head> <body bgcolor="white"> <center><h1>400 Bad Request</h1></center> <hr><center>nginx/1.6.2</center> </body> </html>端口掃描
端口掃描的作用還是比較大的,使用nc可以方便的進行端口掃描。
# nc -z letv.com 1-100 Connection to letv.com 22 port [tcp/ssh] succeeded! Connection to letv.com 80 port [tcp/http] succeeded!這里的1-100指定了掃描的端口范圍,-z參數(shù)告訴nc命令只報告開放的端口。
默認nc命令發(fā)送的是tcp請求,通過指定參數(shù)-u可以發(fā)送udp請求。
目錄傳輸
下面例子中,將server2的phpredis-master目錄拷貝到server1。
server1:
# nc -l 1234|tar zxvf -server2:
# tar zcvf - phpredis-master|nc server1的IP地址 1234參考Linux nc命令詳解
pstree命令
該命令用于顯示進程樹,以樹的形式顯示正在運行的進程,樹的根節(jié)點是指定的pid(忽略則為init進程)。
[root@cdn ~]# pstree -p $(pgrep -uroot php-fpm) php-fpm(5445)─┬─php-fpm(5446)├─php-fpm(5447)├─php-fpm(5448)├─php-fpm(7540)├─php-fpm(21639)└─php-fpm(24727)ss命令
ss命令用于顯示socket的統(tǒng)計信息。
顯示socket的匯總信息
-s選項用于顯示匯總信息。
# ss -s Total: 247 (kernel 290) TCP: 214 (estab 68, closed 130, orphaned 0, synrecv 0, timewait 130/0), ports 135Transport Total IP IPv6 * 290 - - RAW 0 0 0 UDP 11 7 4 TCP 84 81 3 INET 95 88 7 FRAG 0 0 0查看所有打開的網(wǎng)絡(luò)端口
-l選項用于列出當前正在監(jiān)聽的socket。
# ss -l State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 127.0.0.1:smux *:* LISTEN 0 128 127.0.0.1:9000 *:* LISTEN 0 50 *:3306 *:* LISTEN 0 1024 :::11211 :::*使用ss -pl可以查看使用網(wǎng)絡(luò)端口的進程名稱,這里的-p選項用于顯示進程信息。
# ss -pl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 127.0.0.1:smux *:* users:(("snmpd",1256,8)) LISTEN 0 50 *:3306 *:* users:(("mysqld",17651,10)) LISTEN 0 1024 :::11211 :::* users:(("memcached",1849,34)) LISTEN 0 1024 *:11211 *:* users:(("memcached",1849,33)) LISTEN 0 511 127.0.0.1:6379 *:* users:(("redis-server",1403,4))使用ss -pl|grep 端口號查看端口被那個進程占用。
顯示所有的TCP/UDP Socket
參數(shù)-a(--all)用于顯示所有的socket,-t指的是TCP, -u是UDP, -w是RAW, -x是UNIX。
# ss -t -a # ss -u -a # ss -w -a # ss -x -a參考[ss: Display Linux TCP / UDP Network and Socket Information
](http://www.cyberciti.biz/tips/linux-investigate-sockets-network-connections.html)
w/who命令
w命令用于查看當前哪些用戶登錄到系統(tǒng)和他們正在做什么,who命令僅用于查看哪些用戶登錄系統(tǒng)。
# w15:39:08 up 126 days, 22:35, 3 users, load average: 0.02, 0.05, 0.02 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.58.92.228 13:29 1:35m 0.03s 0.03s -bash root pts/1 10.58.93.56 10:32 5:06m 0.00s 0.00s -bash root pts/4 10.58.88.20 12:29 0.00s 0.20s 0.00s w # who root pts/0 2014-12-18 13:29 (10.58.92.228) root pts/1 2014-12-18 10:32 (10.58.93.56) root pts/4 2014-12-18 12:29 (10.58.88.20)iostat
報告CPU的統(tǒng)計信息,設(shè)備、分區(qū)、網(wǎng)絡(luò)文件系統(tǒng)(NFS)的I/O統(tǒng)計信息。
# iostat Linux 2.6.32-903.279.9.1.el6.x86_64 (localhost) 2014年12月18日 _x86_64_ (2 CPU)avg-cpu: %user %nice %system %iowait %steal %idle0.35 0.00 0.34 0.42 0.15 98.74Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn vda 4.01 0.35 56.76 3866731 622586087 dm-0 3.29 0.09 26.33 989378 288796192 dm-1 3.45 0.05 27.60 554922 302727584 dm-2 0.32 0.21 2.83 2296845 31060799這里對幾個性能指標進行解釋:
- tps 每秒發(fā)送的I/O請求數(shù)
- Blk_read/s 每秒讀取的block數(shù)
- Blk_wrtn/s 每秒寫入的block數(shù)
- Blk_read 讀取的block數(shù)
- Blk_wrtn 寫入的block數(shù)
通過指定-d參數(shù)可以設(shè)定自動按照指定時間間隔顯示統(tǒng)計信息。例如,下列命令每隔2s顯示一次。
$ iostat -d 2iptraf 命令:實時網(wǎng)絡(luò)統(tǒng)計
交互式的IP網(wǎng)絡(luò)實時監(jiān)控工具,圖形化界面,比較方便。
# iptraf界面如下:
參考20 Linux System Monitoring Tools Every SysAdmin Should Know
查看Linux的版本(Red Hat/Cent OS)
在RedHat和Cent OS下,使用如下命令查看當前系統(tǒng)的版本。
$ cat /etc/centos-release CentOS release 6.3 (Final)time命令: 統(tǒng)計程序執(zhí)行時間
用于統(tǒng)計程序執(zhí)行時間,這些事件包含程序從被調(diào)用到終止的時間,用戶CPU時間,系統(tǒng)CPU時間。
$ time ls bakup PDO-1.0.3.tgz rinetd.tar.gz yaf-2.2.9.tgz channel.xml package2.xml PDO_MYSQL-1.0.2 xhprof-0.9.4 zendopcache-7.0.3 go-pear.phar package.xml PDO_MYSQL-1.0.2.tgz xhprof-0.9.4.tgz zendopcache-7.0.3.tgz PDO-1.0.3 rinetd yaf-2.2.9real 0m0.002s user 0m0.000s sys 0m0.001stee命令
tee命令用于將標準輸入拷貝到標準輸出。
$ echo "hello,world"|tee -a test.txt上述命令將hello,world字符串輸出到test.txt文件中,-a 默認情況下,tee命令會使用>覆蓋輸出到文件,使用-a屬性,會使用>>追加方式
netstat命令
查看端口占用情況
# netstat -apn- -a(--all) 顯示所有的socket信息(包括監(jiān)聽和未監(jiān)聽)
- -p(--program) 顯示每個socket所屬于的進程名稱和PID
- -n(--numeric) 顯示數(shù)字形式的地址而不是符號化的主機名、端口或者用戶名
perf命令
perf命令是隨Linux內(nèi)核代碼一同發(fā)布和維護的性能診斷工具,由內(nèi)核社區(qū)負責維護和發(fā)展。Perf不僅可以用于應(yīng)用程序性能統(tǒng)計分析,也可以應(yīng)用于內(nèi)核代碼的的性能統(tǒng)計和分析。
在Cent OS系統(tǒng)上,如果沒有該命令的話,可以使用yum進行安裝。
# yum install perfperf命令非常強大,詳細介紹的話篇幅比較長,可以閱讀這篇文章 [Perf -- Linux下的系統(tǒng)性能調(diào)優(yōu)工具][]。
用法: perf [--version] [--help] COMMAND [ARGS]最常用的perf命令:annotate 讀取perf.data (使用perf record創(chuàng)建)文件并且顯示標注的代碼archive Create archive with object files with build-ids found in perf.data filebench 進行基準測試的框架工具集buildid-cache Manage build-id cache.buildid-list List the buildids in a perf.data filediff Read perf.data files and display the differential profileevlist List the event names in a perf.data fileinject Filter to augment the events stream with additional informationkmem Tool to trace/measure kernel memory(slab) propertieskvm Tool to trace/measure kvm guest oslist 列出所有事件類型的符號lock 分析鎖事件mem 分析對內(nèi)存的訪問record 運行一個命令并且記錄它的分析結(jié)果到perf.data文件中report 讀取perf.data文件并且顯示分析結(jié)果sched Tool to trace/measure scheduler properties (latencies)script Read perf.data (created by perf record) and display trace outputstat 運行一個命令并且收集性能計數(shù)統(tǒng)計信息test 運行可用性測試timechart Tool to visualize total system behavior during a workloadtop 系統(tǒng)分析工具.trace 受strace啟發(fā)創(chuàng)建的工具probe 定義一個新的動態(tài)跟蹤點See 'perf help COMMAND' for more information on a specific command.perf stat
perf stat通過概括精簡的方式提供被調(diào)試程序運行的整體情況和匯總數(shù)據(jù)。
創(chuàng)建如下C程序test.c
#include <stdio.h>int main() {int i = 1;while (1) {if (i == 100000) break;i ++;}return 0; }編譯gcc test.c -o test。
$ perf stat ./testPerformance counter stats for './test':0.837322 task-clock # 0.747 CPUs utilized 1 context-switches # 0.001 M/sec 0 CPU-migrations # 0.000 M/sec 98 page-faults # 0.117 M/sec 269,259 cycles # 0.322 GHz [90.39%]897,270 stalled-cycles-frontend # 333.24% frontend cycles idle 226,746 stalled-cycles-backend # 84.21% backend cycles idle 764,602 instructions # 2.84 insns per cycle # 1.17 stalled cycles per insn267,843 branches # 319.881 M/sec 3,467 branch-misses # 1.29% of all branches [80.37%]0.001121130 seconds time elapsed第一個task-clock是CPU利用率,該值比較高,說明該程序?qū)儆贑PU密集型。第二個context-switches是進程上下文切換次數(shù),頻繁的切換次數(shù)應(yīng)該是要避免的。
perf top
用于實時顯示當前系統(tǒng)的性能統(tǒng)計信息。該命令主要用來觀察整個系統(tǒng)當前的狀態(tài),比如可以通過查看該命令的輸出來查看當前系統(tǒng)最耗時的內(nèi)核函數(shù)或某個用戶進程。
執(zhí)行該命令需要root權(quán)限。
使用方法如下
$ sudo perf top程序會與top命令類似,動態(tài)輸出以下內(nèi)容
Samples: 1K of event 'cpu-clock', Event count (approx.): 807169539.60% [kernel] [k] __do_softirq13.46% [kernel] [k] _raw_spin_unlock_irqrestore9.37% [kernel] [k] VbglGRPerform8.47% [kernel] [k] e1000_xmit_frame6.01% [kernel] [k] finish_task_switch5.82% [kernel] [k] e1000_clean5.15% [kernel] [k] native_read_tsc4.75% [kernel] [k] kmem_cache_free1.32% [kernel] [k] tick_nohz_idle_enter1.28% libc-2.17.so [.] __strstr_sse21.22% libc-2.17.so [.] __memset_sse20.82% libc-2.17.so [.] __GI___strcmp_ssse30.42% libpython2.7.so.1.0 [.] 0x000000000007e7c60.42% libc-2.17.so [.] __strchrnul0.39% [kernel] [k] e1000_alloc_rx_buffers0.38% libz.so.1.2.7 [.] 0x0000000000002d760.24% [kernel] [k] tick_nohz_idle_exit0.21% [kernel] [k] kfreeperf report/record
使用 top 和 stat 之后,您可能已經(jīng)大致有數(shù)了。要進一步分析,便需要一些粒度更細的信息。比如說您已經(jīng)斷定目標程序計算量較大,也許是因為有些代碼寫的不夠精簡。那么面對長長的代碼文件,究竟哪幾行代碼需要進一步修改呢?這便需要使用 perf record 記錄單個函數(shù)級別的統(tǒng)計信息,并使用 perf report 來顯示統(tǒng)計結(jié)果。
創(chuàng)建新的C程序test3,代碼如下
#include <stdio.h>void test();int main() {test();return 0; }void test() {long i;for (i = 0; i < 10000000; i ++) {}puts("finished"); }編譯后,執(zhí)行如下命令
$ perf record ./test3 $ perf report輸出以下內(nèi)容
Samples: 68 of event 'cpu-clock', Event count (approx.): 1700000097.06% test3 test3 [.] test1.47% test3 [kernel.kallsyms] [k] __do_softirq1.47% test3 [kernel.kallsyms] [k] queue_work_on從中可以看到,大部分時間都消耗在了test函數(shù)中。
perf record命令增加-g參數(shù)可以記錄函數(shù)的調(diào)用圖信息。更多詳情參考: [Perf -- Linux下的系統(tǒng)性能調(diào)優(yōu)工具][]
lsof命令: 列出打開的文件
工具lsof是一個可以列出操作系統(tǒng)打開的文件的工具,在Linux系統(tǒng)中,任何事物都是以文件的形式存在,通過文件不僅可以訪問常規(guī)文件,還可以訪問網(wǎng)絡(luò)連接和硬件設(shè)備。
在終端下直接輸入lsof命令,會列出當前系統(tǒng)打開的所有文件,因為它需要列出核心內(nèi)存和各種文件,所以必須使用root用戶運行才能顯示詳細的信息。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 253,0 4096 2 / init 1 root rtd DIR 253,0 4096 2 / init 1 root txt REG 253,0 150352 10973 /sbin/init init 1 root mem REG 253,0 65928 264638 /lib64/libnss_files-2.12.so init 1 root mem REG 253,0 1922112 265339 /lib64/libc-2.12.so init 1 root mem REG 253,0 93224 277540 /lib64/libgcc_s-4.4.6-20120305.so.1 init 1 root mem REG 253,0 47064 267086 /lib64/librt-2.12.so ...這里的COMMAND是進程名稱,PID,USER分別指的是進程的ID和進程所有者,FD是文件描述符,TYPE是文件類型,DEVICE是磁盤名稱,SIZE是文件大小,NODE是索引節(jié)點(文件在磁盤上的標識),NAME是打開文件的確切名稱。
對于FD的值,cwd表示當前工作目錄,Lnn表示類庫引用,mem表示內(nèi)存映射文件,rtd表示根目錄,pd表示父目錄,txt表示進程的數(shù)據(jù)和代碼。
常用參數(shù)及說明
- lsof filename 顯示打開指定文件的所有進程
- lsof -a 表示兩個參數(shù)都必須滿足時才顯示結(jié)果
- lsof -c string 顯示COMMAND列中包含指定字符的進程所有打開的文件
- lsof -u username 顯示所屬user進程打開的文件
- lsof -g gid 顯示歸屬gid的進程情況
- lsof +d /DIR/ 顯示目錄下被進程打開的文件
- lsof +D /DIR/ 同上,但是會搜索目錄下的所有目錄,時間相對較長
- lsof -d FD 顯示指定文件描述符的進程
- lsof -n 不將IP轉(zhuǎn)換為hostname,缺省是不加上-n參數(shù)
- lsof -i 用以顯示符合條件的進程情況
- lsof -p PID 選擇指定PID
-
lsof -i[46] protocol[:service|port]
46: IPv4 or IPv6 protocol: TCP or UDP hostname: Internet host name hostaddr: IPv4地址 service: /etc/service中的 service name (可以不只一個) port: 端口號 (可以不只一個)
參考: [百度文庫][]
unzip命令
unzip命令用于解壓.zip文件,常用參數(shù)如下
- -f 只更新磁盤上已經(jīng)存在的文件
- -u 更新磁盤上存在的文件,文件不存在則創(chuàng)建
- -o 如果文件已經(jīng)存在則直接覆蓋,不提示
- -d 指定解壓到的目錄
例如,解壓test.zip到/var/www目錄,部署web站點
# unzip -u -o -d /var/www test.zip # chown -R www:www /var/www使用pushd和popd命令快速切換目錄
經(jīng)常會有這么一種情況,我們會在不同目錄中進行頻繁的切換,如果目錄很深,那么使用cd命令的工作量是不小的,這時可以使用pushd和popd命令快速切換目錄。
$ pwd /Users/mylxsw/codes/php/lecloud/api $ pushd . ~/codes/php/lecloud/api ~/codes/php/lecloud/api $ cd ../album/ $ pwd /Users/mylxsw/codes/php/lecloud/album $ popd ~/codes/php/lecloud/api $ pwd /Users/mylxsw/codes/php/lecloud/apiSCP
在服務(wù)器和本地計算機之間傳遞文件
usage: scp [-12346BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file][-l limit] [-o ssh_option] [-P port] [-S program][[user@]host1:]file1 ... [[user@]host2:]file2從服務(wù)器下載文件
scp username@服務(wù)器地址:/path/文件名 本地保存路徑上傳文件到服務(wù)器
scp 本地文件路徑 username@服務(wù)器地址:/保存到服務(wù)器的路徑Tip: 如果要操作的對象是整個目錄的話,需要添加-t參數(shù)。
使用范例:
localhost:Downloads mylxsw$ scp guanyy@10.10.10.10:/home/guanyy/download.db ./ guanyy@10.10.10.10's password: download.db 100% 25MB 24.7MB/s 00:01Mac OS 清理DNS緩存
dscacheutil -flushcacheCent OS服務(wù)器安裝PHP的pecl
想要安裝某個PHP擴展,但發(fā)現(xiàn)服務(wù)器上沒有pecl,因此需要安裝pecl。
$ sudo yum install php-pear安裝pear之后,pecl就有了。
在當前目錄下查找大小超過100MB的文件
find . -type f -size +100M轉(zhuǎn)換iso格式為dmg
hdiutil convert -format UDRW -o ubuntu-16.04-desktop-amd64.img ubuntu-16.04-desktop-amd64.iso查看磁盤設(shè)備
diskutil list卸載磁盤: diskutil umountDisk /dev/disk1
拷貝鏡像到U盤
dd if=yourimage.img of=/dev/sdb1使用基于文本的圖形界面配置命令setup
安裝setup命令
$ sudo yum install setuptool安裝之后,需要安裝一些常見的系統(tǒng)配置組件,也是使用yum:
$ sudo yum install system-config-services system-config-firewall system-config-network-tui更多的配置組件可以使用yum search system-config命令查看,進入配置界面直接使用setup命令。
使用sed批量操作文件
下面這個命令實現(xiàn)了批量把符合.env*規(guī)則的文件中,刪除包含APP_TIMEZONE的行,追加兩行新的配置
find . -name '.env*' -exec sed -i '' -e '/APP_TIMEZONE/d' -e '$ a \ DB_TIMEZONE=+08:00\ APP_TIME_ZONE=PRC\ ' {} \;下面的命令實現(xiàn)了批量替換符合.env*規(guī)則的文件中的APP_TIME_ZONE為APP_TIMEZONE
find . -name '.env*' -exec sed -i '' -e 's/APP_TIME_ZONE/APP_TIMEZONE/' {} \;查看路由規(guī)則
[root@tristan]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.99.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 192.168.99.254 0.0.0.0 UG 0 0 0 eth0 [root@tristan]# ip route show 192.168.99.0/24 dev eth0 scope link 127.0.0.0/8 dev lo scope link default via 192.168.99.254 dev eth0總結(jié)
以上是生活随笔為你收集整理的Linux命令必知必会的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第6章 Selenium2-Java 自
- 下一篇: git学习------gt;写给 Git