Linux

docs

 * http://linuxcommand.org/index.php
 * http://man.linuxde.net/

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
$ awk -F: '{print $1,$3,$6}' /etc/passwd awk -F '[;:]' awk -F: '{print $1,$3,$6}' OFS="\t" /etc/passwd
 * http://coolshell.cn/articles/9070.html
 * 1) -F是指定分隔符
 * 1) 指定多个分隔符

diff 2 dirs
diff -bur folder1/ folder2/
 * 1) -b：不检查空格字符的不同；
 * 2) -u：以合并的方式来显示文件内容的不同
 * 3) -r或——recursive：比较子目录中的文件

nc

 * http://blog.csdn.net/xifeijian/article/details/9348277
 * nc access memcached.

set
-x：执行指令后，会先显示该指令及所下的参数. -e：若指令传回值不等于0，则立即退出shell.
 * http://man.linuxde.net/set

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
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}]'
 * specify screen config on file ~/.screenrc
 * 1) set this up for convenience

vi

 * vi tips

vi highlight syntax


syntax on
 * add file ~/.vimrc with current line for default hight light

set number
 * add set number to ~/.vimrc for default number

zip & unzip
>tar Jxvf filename.tar.xz
 * unzip file *.tar.xz

shell>tar -zxvf file.tar.gz
 * 解压 .tar.gz

shell>tar -zxvf file.tar.gz -C /tmp
 * unzip to specify folder (/tmp)

shell>tar -zxvf file.tar.gz -C /tmp abc/mm/*
 * unzip part contents (abc/mm/*) to specify folder (/tmp)

shell>tar -jxvf file.tar.bz2
 * 解压 .tar.bz2

shell>tar -cvf /tmp/file.tar /tmp/folder1
 * 打包 tar, 不压缩

shell>tar xopf foo.tar
 * uppack .tar file

shell>tar -zcvf /tmp/file.tar.gz /tmp/folder2
 * 压缩 .tar.gz

shell>tar -jcvf /tmp/file.tar.bz2 /tmp/folder3
 * 压缩 .tar.bz2


 * http://coolszy.iteye.com/blog/564459 - tar ref

find
shell>find .m2 -name "*.jar"
 * find by name

shell>find /home .m2 -name "*.jar"
 * find in multi folders

shell>find. -iname "hello*"
 * find case insensitive

run last find command
shell>!find
 * "!find" repeat last find command. In fact "!" can use to any command to invoke previous run of that command

find file modified less than 1 day
shell>find. -mtime -1
 * 1) find file modified time less than 1 day, this very useful for finding some production issue
 * 2) to check which files have been modified recently

shell>find. -mtime +1
 * 1) last modified time larger than 1 day

shell>find. -mmin -60
 * 1) last modified time less than 60 mintues

shell>find. -size +1000c -size -5000c
 * 1) find size > 1000 bytes, < 5000 bytes

shell>find / -size +50M -size -100M
 * 1) find file size > 50 M, < 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 {} \

shell>find. -size +100M -type f -name "*.mp3" -exec rm -rf {} \
 * 1) delete all mp3 files which size > 100M

find directory or file
shell>find. -type d -name "test"
 * 1) find directory name "test"

shell>find. -type f -name "*.php"
 * 1) find all php files

shell>find /tmp -type f -empty
 * 1) find all empty file

shell>find /tmp -type d -empty
 * 1) find all empty dir

find by user and group
shell>find /home -user yufei
 * 1) find all files under /home which belong to user yufei

shell>find / -user root -name "*.java"
 * 1) find all files under / belong to root and name is "*.java"

shell>find /tmp -group rcom
 * 1) find all files under /tmp which belong to rcom group

short cut key

 * 1) ctrl + a, move cursor to begin of line
 * 2) ctrl + e, move cursor to end of line
 * 3) opt + left / right arrow, move about one word
 * 4) ctrl + u, cut from begin to the cursor
 * 5) ctrl + k, cut from curson to the end
 * 6) ctrl + w, cut 1 word before cursor
 * 7) ctrl + y, paste previous cut


 * mac terminal short cut
 * 1) cmd  + t, open new terminal tab
 * 2) cmd + w, close current tab
 * 3) cmd + n, open new terminal window
 * 4) cmd + q, close window
 * 1) cmd + c, copy in terminal
 * 2) cmd + v, paste in terminal
 * 1) cmd +, zoom in terminal
 * 2) cmd -, zoom out terminal
 * 3) cmd + 0 (zero), normal size terminal
 * 4) ctrl  + shift + arrow, switch between tab

Atom short cut

 * 1) 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
shell>chgrp -R users dirnmae/filename
 * 修改用户所属 group, chgrp

chown
shell> chown -R 用户 dirname/filename shell> chown -R 用户:组 install.log
 * 修改文件拥有者 chown

chmod
//-R 是递归 recursive
 * 修改文件的权限 chmod

shell> chmod -R 777 dirname/filename
 * 数字权限法

shell> chmod u=rwx,go=rx filename shell> chmod a+w filename shell> chmod a-w filename
 * u,g,o,a 权限法， + (加入)， - (减去)， = (设置)

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

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

shell>cat /etc/redhat-release [iphone@bjsit1iphonedev01 ~]$ cat /etc/redhat-release Fedora release 13 (Goddard)
 * check linux release version

[yufei@localhost ~]$ head -n 1 /etc/issue Fedora release 18 (Spherical Cow)
 * show first line of /etc/issue file

check cup info
shell>cat /proc/cpuinfo

check memory info
shell>cat /proc/meminfo shell>grep MemTotal /proc/meminfo

free
[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
 * free - Display amount of free and used memory in the system

top

 * top - display Linux processes

uptime
[yufei@localhost ~]$ uptime 13:22:39 up 12 days, 3:08,  6 users,  load average: 0.24, 0.16, 0.14
 * uptime - Tell how long the system has been running.

netstat

 * netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
 * http://www.binarytides.com/linux-netstat-command-examples/ (zh translate http://linux.cn/forum.php?mod=viewthread&tid=12158)

[distuser@qa5-trtaupdbmaster-01 ~]$ netstat -el | grep 23723 tcp       0      0 *:23723                     *:*                         LISTEN      activemq   2811678
 * netstat -el | grep 23723

$ 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
 * sudo netstat -lptn --- List listening tcp process and port
 * 1)  -l : listen process, -p: process, -t: TCP, -n: not use name resolved

[yufei@us ~]$ sudo netstat -lptn | grep 80 tcp6      0      0 :::80                   :::*                    LISTEN      2378/httpd [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
 * find which process listen port 80 --- sudo netstat -lptn | grep 80
 * sudo netstat -lpte --- List listening tcp process and user

route

 * route - show / manipulate the IP routing table

w
[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
 * w - Show who is logged on and what they are doing.

last
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)
 * show listing of last logged in users

evn
shell>env
 * env - run a program in a modified environment

>printenv >sudo printenv
 * print all or part of environment

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
[yufei@localhost ~]$ hostname localhost.localdomain
 * hostname - show or set the system's host name

[yufei@localhost ~]$ hostname -s localhost
 * 1) -s, show short hostname

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
# -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
 * df - report file system disk space usage

[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

[iphone@bjsit1iphonedev01 ~]$ du -sh * 192K   Desktop 40K    Documents 810M   Downloads 57M    jmeter-2.3.4 12K    memcached 4.0K   Music
 * du - estimate file space usage

[yufei@localhost ~]$ du -sh 1.8G	.
 * 1) current folder diskusage

check your shell
shell> echo $SHELL /bin/bash

check dns
[hudson@HPGQA2AGENCY01 ~]$ cat /etc/resolv.conf search g3agency.reuters.com nameserver 10.90.22.14 nameserver 10.90.26.14
 * 1) nameserver 10.90.106.52

[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
>nslookup www.reuters.com www.reuters.com	canonical name = www.reutersmedia.net. ...
 * query Internet name servers interactively

curl
# -d, --data curl -d 'hi, the content' http://localhost:3003
 * Transfer a url
 * 1) (HTTP) Sends the specified data in a POST request to the HTTP server

curl http://localhost:3003
 * curl get method

curl -i http://localhost:9200
 * curl -i, get header info

# -o, --output, Write output to 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 -# -D - -o /dev/null -H "User-Agent:iphone" "http://www.reuters.com/article/2014/03/26/idUSnMKW40mwTa+1c2+MKW20140326"
 * 1) -D -, dump header to standard output
 * 2) -#, progress bar

curl -H "Content-Type: application/json" -H "X-TR-Signature: .." -d "hi, this is test" "http://somedomain.com/push"
 * curl with multi Header

curl -H "Content-Type: application/json" -H "X-TR-Timestamp: " -X PUT -d "apple"  "http://somedomain.com/registration"
 * curl use PUT method

time curl http://www.sina.com.cn > /dev/null 2>&1
 * curl get response time

wget

 * non-interactive network downloader, supports http, https, ftp

wget -O- "http://172.16.3.10/ric?symbol=GOOG.O"
 * 1) -O file, if - used as file, documents will be printed to standard output

wget -O- -e use_proxy=yes -e http_proxy=10.90.108.136:23375 http://widerimage.reuters.com/utils/getdata-rts0001
 * 1) wget use proxy

wget with response time
time wget http://www.aip.im -q --output-document=/dev/null

dig
dig preview.cn.mobile.reuters.com ;; ANSWER SECTION: preview.cn.mobile.reuters.com. 30 IN	A	167.206.188.34
 * use dig command to find the domain ip

ctrl + r
shell> ctrl + r
 * search history command

ps aux | grep
shell> ps aux | grep firefox shell> ps -ef | grep firefox
 * 查找类似名称的 process
 * 1) bsd style
 * 1) unix/linux stype

## find memory consumed top 5 process ps aux --sort=-pmem | head -6
 * ps aux --sort=-pcpu,+pmem, sort by cpu , memory, - is desc order, + is asc order

grep
[distuser@qa6-ftp-01 apache22]$ grep -H 23381 conf/**/**/** conf/conf.d/proxy/rcom-vhosts.conf:
 * grep content from file name

cat /etc/passwd | grep -v "^#"
 * -v, grep invert-match

/etc/bashrc
一般引用顺序 /etc/basrc --> ~/.basrc --> ~/.bash_profile
 * /etc/bashrc 是全局的环境配置文件

lsof
sudo lsof -PiTCP -sTCP:LISTEN
 * list port on mac

//Check specify process open files count shell>sudo /usr/sbin/lsof -p 16508 |wc -l

//查找监听 3306 port 的 process shell>lsof -i:3306

cat
shell>cat .bash_profile
 * cat 将文件输出到标准输出

shell> cat file1 file2 > file3
 * 将 file1, file2 的内容合并放入 file3

shell> cat foo.txt >> love.txt
 * 将 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
shell>ls -al | more shell> cat foo.txt | more
 * more 分页显示

set variable
shell>myname=yufei shell>echo $myname shell>echo ${myname}
 * 1) no empty before/after =,
 * 2) var name should character and number, can NOT start with number
 * 3) 可以使用 "", '' 将空格内容组合起来.  "$var" is variable value, '$var' 是字面量
 * 4) `command`, 可以执行 command
 * 5) export var, 使成为环境变量，可以在 child process 中使用 var
 * 6) unset var, 取消变量设置
 * 7) 一般环境变量upper case, 自定义变量 lower case

shell>env
 * 1) 显示环境变量 env

shell>set PS1='\h:\W \u\$ ' ldev:example renyufei$ echo $$ 25224
 * 1) set 显示其他所有环境变量
 * 1) 重要的几个 PS1, 提示符设置
 * 1) $ 当前shell pid

shell>echo $? shell>0
 * 1) ?上条命令的 return code

manul of set

 * http://linuxcommand.org/lc3_man_pages/seth.html

; && ||
shell>sync; sync; shutdonw -h now
 * run multi shell command in one line use ';' separate

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

 * http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/

ssh no password login
[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
 * enter the ~/.ssh directory

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"
 * id_rsa and id_rsa.pub were create by command ssh-keygen -t rsa.


 * 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
Rens-MacBook-Pro:~ renyufei$ which node /usr/local/bin/node
 * locate a program file in the user's path

whereis
ldev:mex-webdistribution-common renyufei$ whereis mvn /usr/bin/mvn
 * find a command path

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

crontab doc

 * https://en.wikipedia.org/wiki/Cron#Configuration_file


 * 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

crontab -r
 * 1) remove cron job

chkconfig
shell>sudo /sbin/chkconfig --list shell>/sbin/chkconfig --del memcached_145-trta
 * chkconfig - updates and queries runlevel information for system services
 * 1) list chkconfig
 * 1) del chkconfig

killall
kill a batch of process with same name pattern. [distuser@qa2-iphoneweb-01 ~]$ sudo killall cronInvoker.sh

>sudo killall -u runnerman
 * kill all process for specify user

alias
alias 设置别名，可以设置在文件 ~/.bash_profile 中 直接输入 alias ，查询当前可用别名 alias ll='ls -al' [yufei@localhost profile.d]$ cat /etc/profile.d/yufei_alias.sh alias jumpfoo='ssh jump@10.xx'
 * some time you need add shell file under /etc/profile.d, such as: yufei_alias.sh

rsync
rsync -rv --progress --exclude=.git demo demo_bkp
 * use rsync copy file with exlude

disable selinux
Disabled SELinux first sudo vi /etc/selinux/config SELINUX=disabled

reboot the system please.

common install from source
shell> ./configure --with-prefix=/usr/local/dirname shell> make shell> make install
 * 一般的从源码安装步骤
 * 1) --with-prefix 指定安装位置

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 /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh
 * 1) List of acceptable shells for chpass(1).
 * 2) Ftpd will not allow users to connect who are not using
 * 3) one of these shells.

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
sudo systemctl stop firewalld.service
 * https://fedoraproject.org/wiki/FirewallD - docs about firewall
 * 1) stop firewall

add user
shell> sudo adduser lokvin
 * 1) 新建用户

shell> sudo adduser -g newgroup lokvin
 * 1) 新建用户，并指定用户组

passwd
>passwd
 * change pass word

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

shell>sudo -l
 * check current user sudo privilege info

yum proxy
shell> sudo vi /etc/yum.conf proxy=http://10.90.7.56:3128/
 * 1) add correct proxy for your env

install by yum
shell> sudo yum install memcached

yum repo dir
/etc/yum.repos.d

yum clean cache
sudo yum clean all
 * clean yum cache

yum on caching
http_caching=none
 * edit file /etc/yum.conf, add follow line for no cache

yum list
sudo yum list memcached_145_config
 * yum list

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

>sudo yum clean metadata
 * 1) add "http_caching=packages" to /etc/yum.conf (the default is "http_caching=all")
 * 2) http_caching = { all, none, packages }

ssh proxy
HOST github.com ProxyCommand ssh distuser@10.90.39.170 "nc %h %p"
 * Add below two lines to your ~/.ssh/config

[yufei@localhost project]$ ls -al ~/.ssh/config -r--r--r-- 1 root root 69 Oct 30 11:31 /home/yufei/.ssh/config
 * Config file previlege should be:

For http,https protocol (eg: https://github.com/mochi/mochiweb.git)
$ git config --global http.proxy http://10.90.7.56:3128/
 * Run below command to add corresponding configs to ~/.gitconfig.

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 shell>su john shell>vncserver :1 -geometry 1600x900 -depth 24
 * 1) change the user you want to vnc

vncserver :1 -geometry 1600x900 -depth 24
 * create shell for start vnc under ~/bin/start-vnc.sh, content like below:

[yufei@us bin]$ vncserver help vncserver -list vncserver -kill  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)

 * 1) 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