Tag: sourceedit |
|||
(29 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | == docs == |
||
+ | * http://linuxcommand.org/index.php |
||
⚫ | |||
+ | |||
+ | == echo color text == |
||
+ | * https://zh.wikipedia.org/wiki/Echo_(%E5%91%BD%E4%BB%A4) |
||
+ | * http://misc.flogisoft.com/bash/tip_colors_and_formatting |
||
+ | |||
+ | == check file change time == |
||
+ | stat filename |
||
+ | |||
+ | == mac list listen port == |
||
+ | lsof -PiTCP -sTCP:LISTEN | grep 8080 |
||
+ | |||
+ | == bash convert string to lower case, upper case == |
||
+ | x="HELLO" |
||
+ | echo $x # HELLO |
||
+ | |||
+ | y=${x,,} |
||
+ | echo $y # hello |
||
+ | |||
+ | z=${y^^} |
||
+ | echo $z # HELLO |
||
+ | |||
+ | * Use only one , or ^ to make the first letter lowercase or uppercase |
||
+ | |||
+ | ==awk == |
||
+ | * http://coolshell.cn/articles/9070.html |
||
+ | # -F是指定分隔符 |
||
+ | $ awk -F: '{print $1,$3,$6}' /etc/passwd |
||
+ | # 指定多个分隔符 |
||
+ | awk -F '[;:]' |
||
+ | awk -F: '{print $1,$3,$6}' OFS="\t" /etc/passwd |
||
+ | |||
+ | ==diff 2 dirs == |
||
+ | diff -bur folder1/ folder2/ |
||
+ | ## -b:不检查空格字符的不同; |
||
+ | ## -u:以合并的方式来显示文件内容的不同 |
||
+ | ## -r或——recursive:比较子目录中的文件 |
||
+ | |||
+ | == nc == |
||
+ | * http://blog.csdn.net/xifeijian/article/details/9348277 |
||
+ | * nc access memcached. |
||
+ | |||
+ | == set == |
||
+ | * http://man.linuxde.net/set |
||
+ | -x:执行指令后,会先显示该指令及所下的参数。 |
||
+ | -e:若指令传回值不等于0,则立即退出shell。 |
||
+ | |||
== screen == |
== screen == |
||
1) screen -L -d -RR -S buildmaster; -> Start a screen as the buildmaster user; |
1) screen -L -d -RR -S buildmaster; -> Start a screen as the buildmaster user; |
||
Line 12: | Line 61: | ||
10)ctrl-a + K -> kill current window |
10)ctrl-a + K -> kill current window |
||
11)ctrl-a + ctrl-n -> move to next window |
11)ctrl-a + ctrl-n -> move to next window |
||
− | 12)ctrl-a + ctrl-Backspace -> move to previous window |
+ | 12)ctrl-a + ctrl-Backspace -> move to previous window |
13)ctrl-a + a, move cursor to the line begin |
13)ctrl-a + a, move cursor to the line begin |
||
+ | 14)ctrl-a + F, resize screen size. |
||
− | screen guide : http://magazine.redhat.com/2007/09/27/a-guide-to-gnu-screen/ |
+ | * screen guide : http://magazine.redhat.com/2007/09/27/a-guide-to-gnu-screen/ |
+ | * https://www.gnu.org/software/screen/manual/screen.html - screen manul page |
||
+ | * https://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/ |
||
===screen config === |
===screen config === |
||
Line 132: | Line 184: | ||
|U |
|U |
||
|Undo all changes on a line, while not having |
|Undo all changes on a line, while not having |
||
+ | |- |
||
+ | |ctrl + r |
||
+ | |Redo last change |
||
|- |
|- |
||
|:e! |
|:e! |
||
Line 246: | Line 301: | ||
# ctrl + a , move cursor to begin of line |
# ctrl + a , move cursor to begin of line |
||
# ctrl + e , move cursor to end of line |
# ctrl + e , move cursor to end of line |
||
+ | # opt + left / right arrow , move about one word |
||
# ctrl + u , cut from begin to the cursor |
# ctrl + u , cut from begin to the cursor |
||
# ctrl + k , cut from curson to the end |
# ctrl + k , cut from curson to the end |
||
# ctrl + w , cut 1 word before cursor |
# ctrl + w , cut 1 word before cursor |
||
− | # alt + d, cut 1 word after cursor |
||
# ctrl + y , paste previous cut |
# ctrl + y , paste previous cut |
||
− | # ctrl + f (-> arrow) , move cursor right 1 char |
||
− | # ctrl + b (<- arrow), move cursor left 1 char |
||
− | # ctrl + -> arrow (<- arrow) , move cursor right (left) 1 word |
||
− | # ctrl + d (delete key), delete cursor right 1 char |
||
− | # alt + u , change to upper case (cursor right 1 word) |
||
− | # alt + i, change to lower case (cursor right 1 word) |
||
+ | * mac terminal short cut |
||
⚫ | |||
+ | # cmd + w, close current tab |
||
⚫ | |||
+ | # cmd + q , close window |
||
<br> |
<br> |
||
− | # |
+ | # cmd + c, copy in terminal |
− | # |
+ | # cmd + v, paste in terminal |
⚫ | |||
⚫ | |||
<br> |
<br> |
||
− | # |
+ | # cmd + , zoom in terminal |
− | # |
+ | # cmd - , zoom out terminal |
⚫ | |||
− | <br> |
||
⚫ | |||
− | # f11 , full screen terminal |
||
− | # ctrl + , zoom in terminal |
||
− | # ctrl - , zoom out terminal |
||
⚫ | |||
− | # ctrl + shift + f , find in terminal |
||
⚫ | |||
− | # ctrl + shift + g , find previous |
||
− | # ctrl + page down , next tab |
||
− | # ctrl + page up, prevous tab |
||
− | # ctrl + shift + page down, move tab to right |
||
− | # ctrl + shift + page up, move tab to left |
||
+ | === Atom short cut === |
||
+ | # platformio-ide-terminal, ctrl + ` , show terminal (show) |
||
==file privilege== |
==file privilege== |
||
Line 543: | Line 587: | ||
curl http://localhost:3003 |
curl http://localhost:3003 |
||
+ | * curl -i , get header info |
||
+ | curl -i http://localhost:9200 |
||
* curl -# -D - -o /dev/null -H "User-Agent:iphone" "http://www.reuters.com/article/2014/03/26/idUSnMKW40mwTa+1c2+MKW20140326" |
* curl -# -D - -o /dev/null -H "User-Agent:iphone" "http://www.reuters.com/article/2014/03/26/idUSnMKW40mwTa+1c2+MKW20140326" |
||
Line 604: | Line 650: | ||
[distuser@qa6-ftp-01 apache22]$ grep -H 23381 conf/**/**/** |
[distuser@qa6-ftp-01 apache22]$ grep -H 23381 conf/**/**/** |
||
conf/conf.d/proxy/rcom-vhosts.conf:<VirtualHost 10.35.59.141:23381> |
conf/conf.d/proxy/rcom-vhosts.conf:<VirtualHost 10.35.59.141:23381> |
||
+ | |||
+ | * -v , grep invert-match |
||
+ | cat /etc/passwd | grep -v "^#" |
||
==/etc/bashrc == |
==/etc/bashrc == |
||
Line 610: | Line 659: | ||
==lsof== |
==lsof== |
||
+ | |||
+ | * list port on mac |
||
+ | sudo lsof -PiTCP -sTCP:LISTEN |
||
+ | |||
+ | |||
//Check specify process open files count |
//Check specify process open files count |
||
shell>sudo /usr/sbin/lsof -p 16508 |wc -l |
shell>sudo /usr/sbin/lsof -p 16508 |wc -l |
||
Line 627: | Line 681: | ||
*将 foo.txt 内容追加到 love.txt 之后 |
*将 foo.txt 内容追加到 love.txt 之后 |
||
shell> cat foo.txt >> love.txt |
shell> cat foo.txt >> love.txt |
||
+ | |||
+ | * > write to a file |
||
+ | |||
+ | * >> append to a file |
||
=== ls === |
=== ls === |
||
Line 691: | Line 749: | ||
== ssh == |
== ssh == |
||
+ | |||
+ | * http://linuxcommand.org/man_pages/ssh1.html - ssh manual |
||
+ | * https://www.cyberciti.biz/faq/unix-linux-execute-command-using-ssh/ - ssh example |
||
=== ssh with config file === |
=== ssh with config file === |
||
Line 743: | Line 804: | ||
==cron tab == |
==cron tab == |
||
+ | |||
⚫ | |||
+ | * https://en.wikipedia.org/wiki/Cron#Configuration_file |
||
+ | |||
*http://www.adminschoice.com/crontab-quick-reference - crontab ref <br> |
*http://www.adminschoice.com/crontab-quick-reference - crontab ref <br> |
||
Line 792: | Line 857: | ||
==rsync== |
==rsync== |
||
*use rsync copy file with exlude |
*use rsync copy file with exlude |
||
− | rsync -rv --exclude=.git demo demo_bkp |
+ | rsync -rv --progress --exclude=.git demo demo_bkp |
==disable selinux== |
==disable selinux== |
||
Line 978: | Line 1,043: | ||
shell >ant -version |
shell >ant -version |
||
Apache Ant version 1.7.1 compiled on June 27 2008 |
Apache Ant version 1.7.1 compiled on June 27 2008 |
||
− | |||
⚫ | |||
⚫ | |||
− | *认识学习Bash - http://linux.vbird.org/linux_basic/0320bash.php |
Latest revision as of 08:58, 22 May 2018
docs
echo color text
- https://zh.wikipedia.org/wiki/Echo_(%E5%91%BD%E4%BB%A4)
- http://misc.flogisoft.com/bash/tip_colors_and_formatting
check file change time
stat filename
mac list listen port
lsof -PiTCP -sTCP:LISTEN | grep 8080
bash convert string to lower case, upper case
x="HELLO" echo $x # HELLO y=${x,,} echo $y # hello z=${y^^} echo $z # HELLO
- Use only one , or ^ to make the first letter lowercase or uppercase
awk
# -F是指定分隔符 $ awk -F: '{print $1,$3,$6}' /etc/passwd # 指定多个分隔符 awk -F '[;:]' awk -F: '{print $1,$3,$6}' OFS="\t" /etc/passwd
diff 2 dirs
diff -bur folder1/ folder2/ ## -b:不检查空格字符的不同; ## -u:以合并的方式来显示文件内容的不同 ## -r或——recursive:比较子目录中的文件
nc
- http://blog.csdn.net/xifeijian/article/details/9348277
- nc access memcached.
set
-x:执行指令后,会先显示该指令及所下的参数。 -e:若指令传回值不等于0,则立即退出shell。
screen
1) screen -L -d -RR -S buildmaster; -> Start a screen as the buildmaster user; 1) screen -S buildmaster -> also start new screen 2) screen -x; -> resume to last screen; 2) screen -list -> show available screen list 3) ctrl-a d; -> quit current screen, Detached; 4) ctrl-a 1/2/3/4...; -> switch in different window; 5) ctrl-a c; -> Create a new window in the screen; 6) ctrl-a shift-A; -> Change the window name in the screen; 7) ctrl-a " -> list all window 8) ctrl-a [ + arrow key -> copy mode, can roll screen, press "Esc" exit from copy mode 10)ctrl-a + K -> kill current window 11)ctrl-a + ctrl-n -> move to next window 12)ctrl-a + ctrl-Backspace -> move to previous window 13)ctrl-a + a, move cursor to the line begin 14)ctrl-a + F, resize screen size.
- screen guide : http://magazine.redhat.com/2007/09/27/a-guide-to-gnu-screen/
- https://www.gnu.org/software/screen/manual/screen.html - screen manul page
- https://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/
screen config
- specify screen config on file ~/.screenrc
#set this up for convenience defscrollback 8000 hardstatus alwayslastline "%Lw" hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'
vi
- vi tips
common mode : move cursor | |
---|---|
Ctrl + f | equals page down, cursor move down 1 page |
Ctrl + b | equals page up, cursor move up 1 page |
Ctrl + d | move down half page |
ctrl + u | move up half page |
0 | cursor move to first char of current line |
$ | cursor move to last char of current line |
G | cursor move to last line of current file |
nG | cursor move to No. n line of current file,such as 2G, move to second line |
gg | cursor move to first line, equals 1G |
n<Enter> | cursor move down n lines |
common mode : search & replace | |
:n1,n2s/word1/word2/g | eplace "word1" with "word2", between n1 line and n2 line |
:1,$s/word1/word2/gc | replace "word1" with "word2", with all content, with confirm whether need replace |
/word | from current cursor, forward search "word" string. |
?word | from current cursor, upward search "word" string. |
n | search next, for /word search forward next , for ?word search upward next |
N | search reverse next, for /word search upward next, for ?word search forward next |
x, X | "x" delete behind 1 character, X delete front 1 character |
dd | delete current cursor line |
ndd | delete n lines from cursor position |
d1G | delete content from current cursor to first line |
dG | delete content from current cursor to last line |
d$ | delete characters from cursor to current line last character |
d0 | delete characters from cursor to current line first character |
yy | copy cursor line |
nyy | copy n lines from cursor line |
y1G | copy from cursor to first line |
yG | copy form cursor to last line |
y0 | copy from cursor to first character, current line |
y$ | copy from cursor to last character, current line |
p, P | "p" paste copy content after cursor line, "P" paste before cursor line |
:set number | show line number |
:set nonumber | hide line number |
u | Undo the latest change |
U | Undo all changes on a line, while not having |
ctrl + r | Redo last change |
:e! | Re-edit a messed-up file. |
vi highlight syntax
:syntax on :syntax off
- add file ~/.vimrc with current line for default hight light
syntax on
- add set number to ~/.vimrc for default number
set number
zip & unzip
- unzip file *.tar.xz
>tar Jxvf filename.tar.xz
- 解压 .tar.gz
shell>tar -zxvf file.tar.gz
- unzip to specify folder (/tmp)
shell>tar -zxvf file.tar.gz -C /tmp
- unzip part contents (abc/mm/*) to specify folder (/tmp)
shell>tar -zxvf file.tar.gz -C /tmp abc/mm/*
- 解压 .tar.bz2
shell>tar -jxvf file.tar.bz2
- 打包 tar , 不压缩
shell>tar -cvf /tmp/file.tar /tmp/folder1
- uppack .tar file
shell>tar xopf foo.tar
- 压缩 .tar.gz
shell>tar -zcvf /tmp/file.tar.gz /tmp/folder2
- 压缩 .tar.bz2
shell>tar -jcvf /tmp/file.tar.bz2 /tmp/folder3
- http://coolszy.iteye.com/blog/564459 - tar ref
find
- find by name
shell>find .m2 -name "*.jar"
- find in multi folders
shell>find /home .m2 -name "*.jar"
- find case insensitive
shell>find . -iname "hello*"
run last find command
- "!find" repeat last find command. In fact "!" can use to any command to invoke previous run of that command
shell>!find
find file modified less than 1 day
## find file modified time less than 1 day, this very useful for finding some production issue ## to check which files have been modified recently shell>find . -mtime -1
## last modified time larger than 1 day shell>find . -mtime +1
## last modified time less than 60 mintues shell>find . -mmin -60
## find size > 1000 bytes , < 5000 bytes shell>find . -size +1000c -size -5000c
## find file size > 50 M , < 100M shell>find / -size +50M -size -100M
find file with specify permission
shell>find . -perm 644
find temp file and delete
shell>find . -name "*.tmp" | xargs rm -f
shell>find . -name "*.tmp" -exec rm -rf {} \
## delete all mp3 files which size > 100M shell>find . -size +100M -type f -name "*.mp3" -exec rm -rf {} \
find directory or file
## find directory name "test" shell>find . -type d -name "test"
## find all php files shell>find . -type f -name "*.php"
## find all empty file shell>find /tmp -type f -empty
## find all empty dir shell>find /tmp -type d -empty
find by user and group
## find all files under /home which belong to user yufei shell>find /home -user yufei
## find all files under / belong to root and name is "*.java" shell>find / -user root -name "*.java"
## find all files under /tmp which belong to rcom group shell>find /tmp -group rcom
short cut key
- ctrl + a , move cursor to begin of line
- ctrl + e , move cursor to end of line
- opt + left / right arrow , move about one word
- ctrl + u , cut from begin to the cursor
- ctrl + k , cut from curson to the end
- ctrl + w , cut 1 word before cursor
- ctrl + y , paste previous cut
- mac terminal short cut
- cmd + t , open new terminal tab
- cmd + w, close current tab
- cmd + n , open new terminal window
- cmd + q , close window
- cmd + c, copy in terminal
- cmd + v, paste in terminal
- cmd + , zoom in terminal
- cmd - , zoom out terminal
- cmd + 0 (zero), normal size terminal
- ctrl + shift + arrow , switch between tab
Atom short cut
- platformio-ide-terminal, ctrl + ` , show terminal (show)
file privilege
-rwxrwxrwx
user/group/others
r:4, w:2, x:1
r + w + x = 7
r + w = 6
r + x = 5
chgrp
- 修改用户所属 group , chgrp
shell>chgrp -R users dirnmae/filename
chown
- 修改文件拥有者 chown
shell> chown -R 用户 dirname/filename shell> chown -R 用户:组 install.log
chmod
- 修改文件的权限 chmod
//-R 是递归 recursive
- 数字权限法
shell> chmod -R 777 dirname/filename
- u,g,o,a 权限法, + (加入), - (减去), = (设置)
shell> chmod u=rwx,go=rx filename shell> chmod a+w filename shell> chmod a-w filename
rpm
- http://www.rpm.org/max-rpm/s1-rpm-inside-scripts.html
- http://www.rpm.org/max-rpm-snapshot/ch-rpm-b-command.html
//check install rpm name shell>rpm -qa|grep -i tib
check rpm architecture
rpm -qa --qf "%{n}-%{version}-%{release}-%{arch}\n" | grep tomcat
[distuser@qa2-app-01 ~]$ rpm -qa --qf "%{n}-%{version}-%{release}-%{arch}\n" | grep tomcat rcom-tomcat-mobile-CKB4266-KANBAN-i386 rcom-tomcat-trta-CKB4266-KANBAN-i386
//查看rpm 包的 info 信息 shell> rpm -pqi mysql.rpm
//查看rpm 包的 目标安装路径 shell> rpm -pql mysql.rpm
//查询 rpm 包的安装位置 shell> sudo rpm -ql libevent
//安装rpm 包 shell> rpm -ivh mysql.rpm //安装/升级 rpm 包 shell>rpm -Uvh foo.rpm
//删除 rpm 包 shell> rpm -e rpm-package-name //打开 rpm 包,查看内容 shell> rpm2cpio some.rpm | cpio -div
check system info
uname
- uname - print system information
shell>uname -a [iphone@bjsit1iphonedev01 ~]$ uname -a Linux bjsit1iphonedev01 2.6.33.3-85.fc13.i686.PAE #1 SMP Thu May 6 18:27:11 UTC 2010 i686 i686 i386 GNU/Linux
- check linux release version
shell>cat /etc/redhat-release
[iphone@bjsit1iphonedev01 ~]$ cat /etc/redhat-release Fedora release 13 (Goddard)
- show first line of /etc/issue file
[yufei@localhost ~]$ head -n 1 /etc/issue Fedora release 18 (Spherical Cow)
check cup info
shell>cat /proc/cpuinfo
check memory info
shell>cat /proc/meminfo shell>grep MemTotal /proc/meminfo
free
- free - Display amount of free and used memory in the system
[yufei@localhost ~]$ free -h total used free shared buffers cached Mem: 3.7G 3.5G 228M 0B 239M 1.6G -/+ buffers/cache: 1.7G 2.0G Swap: 3.7G 75M 3.6G
top
- top - display Linux processes
uptime
- uptime - Tell how long the system has been running.
[yufei@localhost ~]$ uptime 13:22:39 up 12 days, 3:08, 6 users, load average: 0.24, 0.16, 0.14
netstat
- netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
- netstat -el | grep 23723
[distuser@qa5-trtaupdbmaster-01 ~]$ netstat -el | grep 23723 tcp 0 0 *:23723 *:* LISTEN activemq 2811678
- sudo netstat -lptn --- List listening tcp process and port
# -l : listen process , -p: process, -t: TCP, -n: not use name resolved $ sudo netstat -lptn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 6283/java tcp 0 0 0.0.0.0:24800 0.0.0.0:* LISTEN 2483/synergys tcp 0 0 0.0.0.0:23306 0.0.0.0:* LISTEN 2094/mysqld tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 2164/memcached tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2218/rpcbind
- find which process listen port 80 --- sudo netstat -lptn | grep 80
[yufei@us ~]$ sudo netstat -lptn | grep 80 tcp6 0 0 :::80 :::* LISTEN 2378/httpd
- sudo netstat -lpte --- List listening tcp process and user
[yufei@us ~]$ sudo netstat -lpte Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name tcp 0 0 *:irdmi *:* LISTEN root 1407395 6283/java tcp 0 0 *:24800 *:* LISTEN root 25483 2483/synergys tcp 0 0 *:23306 *:* LISTEN mysql 24100 2094/mysqld tcp 0 0 *:memcache *:* LISTEN nobody 24636 2164/memcached tcp 0 0 *:sunrpc *:* LISTEN root 25644 2218/rpcbind tcp 0 0 *:ssh *:* LISTEN root 25715 2212/sshd tcp 0 0 localhost:ipp *:* LISTEN root 22127 1573/cupsd tcp 0 0 localhost:smtp *:* LISTEN root 25723 2223/sendmail: acce
route
- route - show / manipulate the IP routing table
w
- w - Show who is logged on and what they are doing.
[yufei@localhost ~]$ w 13:30:48 up 12 days, 3:16, 6 users, load average: 0.08, 0.11, 0.13 USER TTY LOGIN@ IDLE JCPU PCPU WHAT yufei :0 12Dec13 ?xdm? 3:49m 0.13s gdm-session-worker [pam/gdm-password] yufei pts/0 Thu13 2:20m 2.77s 2.71s ssh distuser@10.90.39.170
last
- show listing of last logged in users
yufei pts/2 :0 Mon Dec 23 17:03 - 19:03 (02:00) yufei pts/1 :0 Mon Dec 23 15:22 - 19:03 (03:41)
evn
- env - run a program in a modified environment
shell>env
- print all or part of environment
>printenv >sudo printenv
show all user name
[yufei@localhost ~]$ cut -d: -f1 /etc/passwd root bin ...
show all group name
[yufei@localhost ~]$ cut -d: -f1 /etc/group root bin ...
hostname
- hostname - show or set the system's host name
[yufei@localhost ~]$ hostname localhost.localdomain
# -s , show short hostname [yufei@localhost ~]$ hostname -s localhost
change linux hostname
vi /etc/sysconfig/network vi /etc/hosts reboot system
check dns
host -t TXT qa2-iphoneapp-info host -i qa2-admindb-vip
check disk usage
- df - report file system disk space usage
# -h, human readable # -T, print file system type [iphone@bjsit1iphonedev01 ~]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 107G 17G 85G 17% / tmpfs 974M 4.7M 969M 1% /dev/shm
[yufei@localhost ~]$ df -Th Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 1.9G 1.4M 1.9G 1% /dev/shm tmpfs tmpfs 1.9G 20M 1.9G 2% /run
- du - estimate file space usage
[iphone@bjsit1iphonedev01 ~]$ du -sh * 192K Desktop 40K Documents 810M Downloads 57M jmeter-2.3.4 12K memcached 4.0K Music
#current folder diskusage [yufei@localhost ~]$ du -sh 1.8G .
check your shell
shell> echo $SHELL /bin/bash
check dns
[hudson@HPGQA2AGENCY01 ~]$ cat /etc/resolv.conf search g3agency.reuters.com #nameserver 10.90.106.52 nameserver 10.90.22.14 nameserver 10.90.26.14
[hudson@HPGQA2AGENCY01 ~]$ host gitlab.media.reuters.com ;; connection timed out; no servers could be reached
[hudson@HPGQA2AGENCY01 ~]$ nslookup gitlab.media.reuters.com Server: 10.90.26.14 Address: 10.90.26.14#53 Non-authoritative answer: Name: gitlab.media.reuters.com Address: 10.90.106.3
nslookup
- query Internet name servers interactively
>nslookup www.reuters.com www.reuters.com canonical name = www.reutersmedia.net. ...
curl
- Transfer a url
# -d, --data # (HTTP) Sends the specified data in a POST request to the HTTP server curl -d 'hi, the content' http://localhost:3003
- curl get method
curl http://localhost:3003
- curl -i , get header info
curl -i http://localhost:9200
- curl -# -D - -o /dev/null -H "User-Agent:iphone" "http://www.reuters.com/article/2014/03/26/idUSnMKW40mwTa+1c2+MKW20140326"
# -D - , dump header to standard output # -# , progress bar # -o, --output <file> , Write output to <file> instead of stdout. lokvins-MacBook-Pro:yufei lokvin$ curl -# -D - -o /dev/null -H "User-Agent:iphone" "http://www.reuters.com" HTTP/1.1 302 Moved Temporarily Server: AkamaiGHost Content-Length: 0 Location: http://mobile.reuters.com/do/urlRedirect?URL=http%3A%2F%2Fwww.reuters.com/ Date: Wed, 02 Jul 2014 14:26:32 GMT Connection: keep-alive Vary: User-Agent
- curl with multi Header
curl -H "Content-Type: application/json" -H "X-TR-Signature: .." -d "hi, this is test" "http://somedomain.com/push"
- curl use PUT method
curl -H "Content-Type: application/json" -H "X-TR-Timestamp: " -X PUT -d "apple" "http://somedomain.com/registration"
- curl get response time
time curl http://www.sina.com.cn > /dev/null 2>&1
wget
- non-interactive network downloader, supports http, https, ftp
# -O file, if - used as file, documents will be printed to standard output wget -O- "http://172.16.3.10/ric?symbol=GOOG.O"
# wget use proxy wget -O- -e use_proxy=yes -e http_proxy=10.90.108.136:23375 http://widerimage.reuters.com/utils/getdata-rts0001
wget with response time
time wget http://www.aip.im -q --output-document=/dev/null
dig
- use dig command to find the domain ip
dig preview.cn.mobile.reuters.com ;; ANSWER SECTION: preview.cn.mobile.reuters.com. 30 IN A 167.206.188.34
ctrl + r
- search history command
shell> ctrl + r
ps aux | grep
- 查找类似名称的 process
#bsd style shell> ps aux | grep firefox #unix/linux stype shell> ps -ef | grep firefox
- ps aux --sort=-pcpu,+pmem , sort by cpu , memory, - is desc order, + is asc order
## find memory consumed top 5 process ps aux --sort=-pmem | head -6
grep
- grep content from file name
[distuser@qa6-ftp-01 apache22]$ grep -H 23381 conf/**/**/** conf/conf.d/proxy/rcom-vhosts.conf:<VirtualHost 10.35.59.141:23381>
- -v , grep invert-match
cat /etc/passwd | grep -v "^#"
/etc/bashrc
- /etc/bashrc 是全局的环境配置文件
一般引用顺序 /etc/basrc --> ~/.basrc --> ~/.bash_profile
lsof
- list port on mac
sudo lsof -PiTCP -sTCP:LISTEN
//Check specify process open files count shell>sudo /usr/sbin/lsof -p 16508 |wc -l
//查找监听 3306 port 的 process shell>lsof -i:3306
commons use command
cat
- cat 将文件输出到标准输出
shell>cat .bash_profile
- 将 file1 , file2 的内容合并放入 file3
shell> cat file1 file2 > file3
- 将 foo.txt 内容追加到 love.txt 之后
shell> cat foo.txt >> love.txt
- > write to a file
- >> append to a file
ls
- ls 列出的文件类型
[ d ]是目录
[ - ]是文件
[ l ]表示link file(软链接)
[ b ]表示随机读取的存储设备;
[ c ]表示顺序读取设备,如键盘、鼠标
pwd
shell> pwd //显示当前目录 shell> pwd -P //显示当前目录,将 soft link 转为真实目录
mkdir
shell> mkdir -m 711 dir1 //建立目录,并指定目录的 r,w,x 权限 shell> mkdir -p dir2/child //建立多级目录
more
- more 分页显示
shell>ls -al | more shell> cat foo.txt | more
shell
set variable
# no empty before/after =, # var name should character and number, can NOT start with number # 可以使用 "", 将空格内容组合起来。 "$var" is variable value, '$var' 是字面量 # `command`, 可以执行 command # export var, 使成为环境变量,可以在 child process 中使用 var # unset var, 取消变量设置 # 一般环境变量upper case, 自定义变量 lower case shell>myname=yufei shell>echo $myname shell>echo ${myname}
# 显示环境变量 env shell>env
# set 显示其他所有环境变量 shell>set # 重要的几个 PS1, 提示符设置 PS1='\h:\W \u\$ ' # $ 当前shell pid ldev:example renyufei$ echo $$ 25224
# ?上条命令的 return code shell>echo $? shell>0
manul of set
; && ||
- run multi shell command in one line use ';' separate
shell>sync; sync; shutdonw -h now
tee
- tee - read from standard input and write to standard output and files
ssh
- http://linuxcommand.org/man_pages/ssh1.html - ssh manual
- https://www.cyberciti.biz/faq/unix-linux-execute-command-using-ssh/ - ssh example
ssh with config file
ssh no password login
- enter the ~/.ssh directory
[iphone@bjsit1iphonedev01 .ssh]$ ll total 24 -rw------- 1 iphone iphone 406 Jun 29 2010 authorized_keys -rw------- 1 iphone iphone 1679 Jun 29 2010 id_rsa -rw-r--r-- 1 iphone iphone 406 Jun 29 2010 id_rsa.pub -rw-r--r-- 1 iphone iphone 11773 Dec 14 17:00 known_hosts
- id_rsa and id_rsa.pub were create by command ssh-keygen -t rsa.
id_rsa.pub is your public key, put it's content to the remote machine ~/.ssh/authorized_keys
then you can ssh without password.
[iphone@bjsit1iphonedev01 .ssh]$ssh-keygen -t rsa -C "your_email@example.com"
- know_hosts is the machine list, you ssh connect from.
- http://hi.baidu.com/zengzhaonong/blog/item/1b444eda858bc3dab6fd48a6.html - a doc from baidu
- https://help.github.com/articles/generating-ssh-keys
less
- -N "show line number"
- -n "hide line number"
- :GG "to last line"
- :1G "to first line"
- :100G "to no. 100 line"
- /searchString "search string"
- n "find next"
- N "find reverse netxt"
which
- locate a program file in the user's path
Rens-MacBook-Pro:~ renyufei$ which node /usr/local/bin/node
whereis
- find a command path
ldev:mex-webdistribution-common renyufei$ whereis mvn /usr/bin/mvn
telnet tips
telent telnet 10.33.133.62 port Connected to produsx-iphoneapp-02.g3.reuters.com (10.33.133.62). Escape character is '^]'. ctrl + ] // 结束http 消息 ^] telnet> quit
cron tab
crontab doc
- http://www.adminschoice.com/crontab-quick-reference - crontab ref
cron file in folder, use user name as file name
/var/spool/cron [distuser@qa2-admin-01 ~]$ sudo ls -l /var/spool/cron/ total 16 -rw------- 1 root root 477 Sep 12 20:53 lisa -rw------- 1 root root 217 Sep 24 08:45 rmg -rw------- 1 root root 300 Oct 5 10:08 root -rw------- 1 runnerman root 1134 Jan 8 2014 runnerman
[distuser@qa2-admin-01 ~]$ sudo cat /var/spool/cron/root 00 23 * * * /root/scripts/cmsbackfill.sh 0 * * * * cat /dev/null > /usr/local/mysql/data/mysqld/mysqld-slow.log 0 * * * * cat /dev/null > /usr/local/mysql/data/mysqld2/mysqld-slow.log 00 17 * * * mysql -u root -pr00t --port=23308 --socket=/rt/db/tmp/mysqld.sock3 -e 'purge binary logs before now();' crontab -u user -l [distuser@qa2-admin-01 ~]$ sudo crontab -u root -l 00 23 * * * /root/scripts/cmsbackfill.sh
##remove cron job crontab -r
chkconfig
- chkconfig - updates and queries runlevel information for system services
## list chkconfig shell>sudo /sbin/chkconfig --list ## del chkconfig shell>/sbin/chkconfig --del memcached_145-trta
killall
kill a batch of process with same name pattern.
[distuser@qa2-iphoneweb-01 ~]$ sudo killall cronInvoker.sh
- kill all process for specify user
>sudo killall -u runnerman
alias
alias 设置别名,可以设置在文件 ~/.bash_profile 中
直接输入 alias ,查询当前可用别名
alias ll='ls -al'
- some time you need add shell file under /etc/profile.d , such as: yufei_alias.sh
[yufei@localhost profile.d]$ cat /etc/profile.d/yufei_alias.sh alias jumpfoo='ssh jump@10.xx'
rsync
- use rsync copy file with exlude
rsync -rv --progress --exclude=.git demo demo_bkp
disable selinux
Disabled SELinux first
sudo vi /etc/selinux/config SELINUX=disabled
reboot the system please.
common install from source
- 一般的从源码安装步骤
#--with-prefix 指定安装位置 shell> ./configure --with-prefix=/usr/local/dirname shell> make shell> make install
VNC settings
set vnc server with display rate, edit file /etc/sysconfig/vncservers
shell>sudo vi /etc/sysconfig/vncservers VNCSERVERS="1:iphone" VNCSERVERARGS[1]="-geometry 1280x800"
.bash_history
你所输入过的 命令,记录在文件 ~/.bash_history 中
/etc/shells
系统可用的 shell 在 /etc/shells 文件中记录
localhost:bin lokvin$ cat /etc/shells # List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these shells. /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh
set path variable
shell >vi /home/${user}/.bash_profile
add to path variable following entries:
:/usr/bin:/bin:/sbin:/usr/sbin:/usr/local/bin:
stop firewalld
- https://fedoraproject.org/wiki/FirewallD - docs about firewall
- stop firewall
sudo systemctl stop firewalld.service
user management
add user
# 新建用户 shell> sudo adduser lokvin
# 新建用户,并指定用户组 shell> sudo adduser -g newgroup lokvin
passwd
- change pass word
>passwd
check user, group exist
shell>cat /etc/group | grep xxx shell>id groupname shell>cat /etc/passwd | grep xxx shell>id username
check user belong group
$ groups yufei yufei : yufei adm cdrom sudo dip plugdev lpadmin sambashare docker
add sudo privilege
su root chmod +w /etc/sudoers echo '${username} ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers chmod -w /etc/sudoers exit
- check current user sudo privilege info
shell>sudo -l
yum
yum proxy
shell> sudo vi /etc/yum.conf #add correct proxy for your env proxy=http://10.90.7.56:3128/
install by yum
shell> sudo yum install memcached
yum repo dir
/etc/yum.repos.d
yum clean cache
- clean yum cache
sudo yum clean all
yum on caching
- edit file /etc/yum.conf, add follow line for no cache
http_caching=none
yum list
- yum list
sudo yum list memcached_145_config
yum error: Metadata file does not match checksum
- https://plone.lucidsolutions.co.nz/linux/rpm/yum-metadata-file-does-not-match-checksum
- https://github.com/pagespeed/mod_pagespeed/issues/277
#add "http_caching=packages" to /etc/yum.conf (the default is "http_caching=all") #http_caching = { all, none, packages } >sudo yum clean metadata
set github proxy
ssh proxy
- Add below two lines to your ~/.ssh/config
HOST github.com ProxyCommand ssh distuser@10.90.39.170 "nc %h %p"
- Config file previlege should be:
[yufei@localhost project]$ ls -al ~/.ssh/config -r--r--r-- 1 root root 69 Oct 30 11:31 /home/yufei/.ssh/config
For http,https protocol (eg: https://github.com/mochi/mochiweb.git)
- Run below command to add corresponding configs to ~/.gitconfig.
$ git config --global http.proxy http://10.90.7.56:3128/
Misc
BASH_REMATCH
why regexp doesn't work
http://stackoverflow.com/questions/13150411/why-bash-rematch-doesnt-work-on-my-computer
- In your bash REGEX, you should remove quotes. That's why that doesn't work.
fc18 install VNC
shell>su shell>yum -y install tigervnc-server # change the user you want to vnc shell>su john shell>vncserver :1 -geometry 1600x900 -depth 24
- create shell for start vnc under ~/bin/start-vnc.sh , content like below:
vncserver :1 -geometry 1600x900 -depth 24
[yufei@us bin]$ vncserver help vncserver -list vncserver -kill <X-display> vncserver -kill :1
- vnc viewer change screen size, ctrl + alt + shift + f
add icon to fe18
gnome-desktop-item-edit /usr/share/applications/ --create-new
fe18 show desktop icons
gsettings set org.gnome.desktop.background show-desktop-icons true
Chinese input (Fedor 18)
- Activity --> System Setting --> Region & Language --> Input Sources --> add "Chinese (Intelligence Pinyin)" --> in shortcut setting, add shortcut for "Switch to next source" eg. ctrl+space
install jdk
download a new version jdk ,such as jdk-6u16-linux-i586.bin
shell >sudo chmod a+x jdk-6u16-linux-i586.bin shell >./jdk-6u16-linux-i586.bin shell >sudo mkdir /usr/java shell >sudo mv jdk1.6.0_16 /usr/java/jdk1.6.0_16
add /usr/java/jdk1.6.0_16/bin to path
shell >vi ~/.bash_profile
create soft link for java and javac
shell >sudo ln -s /usr/java/jdk1.6.0_16/bin/java /usr/bin/java shell >sudo ln -s /usr/java/jdk1.6.0_16/bin/javac /usr/bin/javac shell >java -version
install ant
download apache-ant-1.7.1-bin.tar.gz
shell >tar -zxvf apache-ant-1.7.1-bin.tar.gz shell >mv apache-ant-1.7.1 ~/ant-1.7.1 #add ant/bin to .bash_profile shell >ant -version Apache Ant version 1.7.1 compiled on June 27 2008