标签:
1、修改ip 即时生效: # ifconfig eth0 192.168.0.2 netmask 255.255.255.0 注 虚拟机ip网段应和本机网段一致 VMnet0(使用桥接网络)、VMnet1(仅主机网络)和VMnet8(NAT网络) 启动生效:修改 /etc/sysconfig/network-scripts/ifcfg-eth0 修改以下内容 DEVICE=eth0 #描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为eth0 BOOTPROTO=static #设置网卡获得ip地址的方式,可能的选项为static,dhcp或bootp,分别对应静态指定的 ip地址,通过dhcp协议获得的ip地址,通过bootp协议获得的ip地址 BROADCAST=192.168.0.255 #对应的子网广播地址 HWADDR=00:07:E9:05:E8:B4 #对应的网卡物理地址 IPADDR=12.168.1.2 #如果设置网卡获得 ip地址的方式为静态指定,此字段就指定了网卡对应的ip地址 IPV6INIT=no IPV6_AUTOCONF=no NETMASK=255.255.255.0 #网卡对应的网络掩 NETWORK=192.168.1.0 #网卡对应的网络地址 ONBOOT=yes #系统启动时是否设置此网络接口,设置为yes时,系统启动时激活此设备 ifup eth0 启用一个 ‘eth0‘ 网络设备 ifdown eth0 禁用一个 ‘eth0‘ 网络设备 自动获取IP vi /etc/sysconfig/network-script/ifcfg-eth0 ONBOOT="yes" MM_Controlled="no" BOOTPROTO="dhcp" #ifconfig 查看 Linux的 IP地址信息(interface configure) #iptables –F 禁用防火墙(擦掉所有防火墙的设置) #service network restart 重新获取 IP地址 2、重新启动网络配置 # /etc/init.d/network restart # service network restat 3、修改网关 Default Gateway 即时生效: # route add default gw 192.168.0.1 dev eth0 启动生效: 修改 /etc/sysconfig/network 4、修改 DNS 修改/etc/resolv.conf 修改后可即时生效,启动同样有效 5、修改 host name 即时生效: # hostname centos 启动生效: 修改/etc/sysconfig/network 6、mysql 启动 $mysql_dir/bin/safe_mysqld 2>&1> /dev/null & 补充参考: /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql --log-error=/usr/local/mysql/var/localhost.err --pid-file=/usr/local/mysql/var/localhost.pid --socket=/tmp/mysql.sock --port=3306 停止 $mysql_dir/bin/mysqladmin -u root -p shutdown 7、yes 命令 这个命令可以帮你自动回答命令行提示 yes | rm -i *.txt 表示自动确认删除 8、 9、 10、 11、编译安装时指定安装路径 即./configure --prefix=/usr/local 12、时间 date +%Y:%m:%d 13、日历 cal 02 2012 获取2012年2月的日历 cal 2012 获取 2012整年的日历 14、bc 计算器 15、常用按键说明 [Ctrl+D] 万能退出; [Tab] 按两次 自动获取; [q] more 或者 less 等退出 16、在线说明文件路径 /usr/share/doc 17、查看网络的联机状态 netstat -nato 查看背景执行的程序 ps aux 18、内存中数据写入硬盘 sync 这个指令在系统关机或重新开机之前,很重要喔!最好多执行几次 19、shutdown shutdown -h now 立刻关机,其中 now 相当于时间为 0 的状态 shutdown -h 20:25 系统在今天的 20:25 分会关机 shutdown -h +10 系统再过十分钟后自动关机 shutdown -r now 系统立刻重新开机 shutdown -r +30 ‘The system will reboot‘ 再过三十分钟系统会重新开机,并显示后面的讯息。 shutdown -k now ‘This system will reboot‘ 仅发出警告信件的参数!系统并不会关机啦!吓唬人 20、添加一个用户 useradd wangxu 添加密码 passwd wangxu 修改密码 sudo passwd wangxu 删除用户 userdel wangxu 建立一个新用户账户,并设置ID #useradd caojh -u 544 (设定ID值时尽量要大于500,以免冲突 0到499之间的值留给bin、mail这样的系统账号) #groupadd oinstall #groupadd dba #useradd -m -g oinstall -G dba oracle #passwd oracle useradd参数 保存在/etc/passwd文本文件中 -c:加上备注文字,备注文字保存在passwd的备注栏中。 -d:指定用户登入时的启始目录。 -D:变更预设值。 -e:指定账号的有效期限,缺省表示永久有效。 -f:指定在密码过期后多少天即关闭该账号。 -g:指定用户所属的群组。 -G:指定用户所属的附加群组。 -m:自动建立用户的登入目录。 -M:不要自动建立用户的登入目录。 -n:取消建立以用户名称为名的群组。 -r:建立系统账号。 -s:指定用户登入后所使用的shell。 -u:指定用户ID号。 查看组内成员:grep 组名 /etc/group 更改用户名:usermod -l 新名 老名 21、chgrp :改变档案所属群组 chown :改变档案所属人 chmod :改变档案的属性 例如:将文件showme.sh修改其所有人为root #chown root showme.sh 22、cat 由第一行开始显示档案内容 cat -n 加行号(含空行) cat -n 加行号(不含空行) [test @test test]#cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容 [test @test test]#>/etc/test.txt 清空文件 [test @test test]#cat *.txt>new.txt 将所有txt文件内容写入到new.txt tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写! more 一页一页的显示档案内容 less 与 more 类似,但是比 more 更好的是,他可以往前翻页! head 只看头几行 #head -n 100 r3.txt head 输出文件除了最后n行的全部内容 head -n -6 log2014.log tail 只看尾巴几行 tail -n200 tail -f 监控更新的数据 nl 显示的时候,顺道输出 行号! od 以二进制的方式读取档案内容! 23、zip命令可以用来将文件压缩成为常用的zip格式。unzip命令则用来解压缩zip文件。 1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip: # zip -r yasuo.zip abc.txt dir1 -r 递归处理,将指定目录下的所有文件和子目录一并处理。 2.我下载了一个yasuo.zip文件,想解压缩: # unzip yasuo.zip 3.我当前目录下有abc1.zip,abc2.zip和abc3.zip,我想一起解压缩它们: # unzip abc\?.zip 注释:?表示一个字符,如果用*表示任意多个字符。 4.我有一个很大的压缩文件large.zip,我不想解压缩,只想看看它里面有什么: # unzip -v large.zip 5.我下载了一个压缩文件large.zip,想验证一下这个压缩文件是否下载完全了 # unzip -t large.zip 6.我用-v选项发现music.zip压缩文件里面有很多目录和子目录,并且子目录中其实都是歌曲mp3文件,我想把这些文件都下载到第一级目录,而不是一层一层建目录: # unzip -j music.zip 24、tar(常用) 压缩 #tar zcvf /root/etc.tar.gz /etc 将etc打包为etc.tar.gz 并存储到/root 下 解压 #tar zxvf /root/etc.tar.gz -C /root 将包etc.tar.gz 解压到 /root 下 解压到当前文件夹 tar zxvf /root/etc.tar.gz 除txt外的所有文件压缩 #tar -cf arch.tar * --exclude "*.txt" 打包当前目录下的sinon文件夹 但忽略sinon文件夹下的log文件夹 #tar -cjvf sinon.tar.bz2 sinon --exclude=sinon/logs 或者#tar -cjvf sinon.tar.bz2 --exclude=sinon/logs sinon 只解压压缩文件中的index.php出来 #tar zxvf all.tar.gz index.php 25 rar 解压 rar x /root/elong.rar /root 解压elong.rar到 /root 压缩 rar a /root/elong.rar /root 将/root目录下的文件 添加到 elong.rar 26 > >> 1> 2> [test @test test]# ls -al > list.txt 将显示的结果输出到 list.txt 档案中,若该档案以存在则予以取代! [test @test test]# ls -al >> list.txt 将显示的结果累加到 list.txt 档案中,该档案为累加的,旧数据保留! [test @test test]# ls -al 1> list.txt 2> list.err 将显示的数据,正确的输出到 list.txt 错误的数据输出到 list.err [test @test test]# ls -al 1> list.txt 2>&1 将显示的数据,不论正确或错误均输出到 list.txt 当中! [test @test test]# ls -al 1> list.txt 2> /dev/null 将显示的数据,正确的输出到 list.txt 错误的数据则予以丢弃! /dev/null 黑洞 27 < 由档案代替输入 [test @test tset]# mail -s "test" root < /root/.bashrc 将 .bashrc 内容寄给 root 28 管线命令 pipe | [test @test bin]# last 执行 last ,将所有这个月的所有人登入数据取出来; [test @test bin]# last | grep root 使用 grep 将上面的输出数据(stdout)当中的 root 撷取出来,其它的不要 [test @test bin]# last | grep root | wc -l 使用 wc 这个可以计算行数的指令将上一步的数据计算行数! wc -l 按行计算总数 29 cut 类似于php 的 explode [root @test /root ]# cut -d "分隔字符" [-cf] fields 参数说明: -d :后面接的是用来分隔的字符,预设是『空格符』 -c :后面接的是『第几个字符』 -f :后面接的是第几个区块? 范例: [root @test /root]# cat /etc/passwd | cut -d ":" -f 1 将 passwd 这个档案里面,每一行里头的 : 用来作为分隔号, 而列出第一个区块! [root @test /root]# cat /etc/passwd | cut -d ":" -f 2,5 将 passwd 这个档案里面,每一行里头的 : 用来作为分隔号,列出第2 和第5 [root @test /root]# last | cut -d " " -f 1 以空格符为分隔,并列出第一个区间! [root @test /root]# cat | cut -c1-20 将 cat 之后的数据,每一行的 1-20 个字符取出来! 30 sort 分类,将相同的放一块 [root @test /root]# last | cut -d" " -f1 | sort sort 按正序排列 sort -r 按倒序排列 sort -n 按数字排序 sort -k 2 按列排序 sort -u seq.txt 去重 sort -r number.txt -o number.txt 排序后输出到原文件 不能用重定向> 31 uniq 取唯一(必须先sort 才能uniq) # last | cut -d" " -f1 | sort | uniq #cat a b | sort | uniq > c # c 是a和b的合集 #cat a b | sort | uniq -d > c # c 是a和b的交集 #cat a b | sort | uniq -u > c # c 是a和b的不同 32 tr 类似 replace [root @test /root ]# tr [-ds] SET1 参数说明: -d :删除 SET1 这个字符串 -s :取代掉重复的字符! 范例: [root @test /root]# last | tr ‘[a-z]‘ ‘[A-Z]‘ <==将小写改成大写 [root @test /root]# cat file | tr -d "Snail" > new_file 删除文件file中出现的"Snail"字符 【注意】凡是在file文件中出现的‘S‘,‘n‘,‘a‘,‘i‘,‘l‘字符都会被删除!而不是紧紧删除出现的"Snail”字符串。 [root @test /root]# cat /home/test/dostxt | tr -d ‘\r‘ > dostxt-noM <==将 DOS 档案的字尾符号 ^M 的符号去除! [root @test /root]# cat file | tr [a-z] [A-Z] 使用tr命令“统一”字母大小写 [root @test /root]# cat file | tr [0-9] [a-j] 把文件中的数字0-9替换为a-j 33 split 分割 [root @test /root ]# split [-bl] 输入档案 输出档案前导字符 参数说明: -b :以档案 size 来分 -l :以行数来分 范例: [root @test /root]# split -l 5 /etc/passwd test <==会产生 testaa, testab, testac... 等等的档案 34 grep 参数说明: -a :在二进制文件中以文本文件的方式搜索数据 -c :计算找到指定字符串的次数 -i :忽略大小写 -v : 反向选择 -n ;输出行号 linux grep显示指定内容前后指定行数的方法 查询前后5行内容: cat /etc/httpd/conf/httpd.conf | grep -5 ^ 查询之后5行内容: cat /etc/httpd/conf/httpd.conf | grep -A 5 ^ 查询之前5行内容 cat /etc/httpd/conf/httpd.conf | grep -B 5 ^ 递归查询指定类型文件 $grep -r --include=*.php "keyword" ./ 正则搜索 grep ‘t[ae]st‘ regular_express.txt 输出相同行: $grep -wf file1 file2 输出不同行 $grep -wvf file1 file2 统计两个文本文件的相同行 $grep -Ff file1 file2 如何比较两个文件并去删除相同的内容 for i in $(<file1); do grep $i file2 || echo $i >>tmp1 ; done 35 script debug [test @test test]# sh -x test01-hello.sh 36 查找文件 locate ‘srm‘ 查找所有路径中带srm字符 find /etc -name ‘*srm*‘ find /etc -name ‘srm*‘ find /etc -name ‘srm‘ find ./ -size 0 //查找大小为0的文件 37 awk #cat /etc/passwd | awk ‘{FS=":"} {print $1}‘ ##以:号分隔 并获取 第一列数据 等同于 awk -F ":" ‘{print $1}‘ /etc/passwd #cat /etc/passwd | awk ‘{FS=" "} {print $1}‘ ##以空格分隔 并获取 第一列数据 等同于 cat /etc/passwd | awk ‘{print $1}‘ #cat /etc/passwd | awk ‘{FS=":"} $3 < 10 {print $1 "\t" $3}‘ ##文件/etc/passwd是以":"分隔的,查看第三栏小于10的数据,并且只第一栏与第三栏 #cat /etc/passwd | awk ‘NR==9,NR==12‘ 获取第9至12行的数据 #awk ‘/pa.*3/, /end/‘ section.txt 正则查找含有pa.*3 与end 之间的行 #awk ‘BEGIN{total=0}{total+=$4}END{print total}‘ a.txt -----对a.txt文件的第四列进行求和! #awk ‘BEGIN{ while( system("ls -l") | getline line ){ print line } }‘ #awk ‘{L[NR]=$0}END{for (i=3;i<=NR-2;i++){print L[i]}}‘ new.txt 打印第3行至倒数第3行之间的数据 #sed ‘1d‘ ParentRegionList.txt|awk -F ‘|‘ ‘{printf("%s|%s|%s|%s|%s\n",$1,$5,$7,$8,$9)}‘>aa.txt 删除第一行后 获取需要的列写入新文件 38 linux 打印mysql库中的数据 echo "select * from el_hotel limit 10" | mysql elong -uroot -padmin --default-character-set=utf8 echo "select * from el_hotel limit 5" | mysql elong -uroot -padmin --default-character-set=gbk >a.xls //导出为excel windows下 echo select * from el_hotel limit 5 | mysql elong -uroot -padmin --default-character-set=gbk >a.xls //windows下导出为excel 39 xargs 将前一个命令的输出作为参数 例:ls | xargs -n 20 rm -fr 将ls的输出,每20个为一组(以空格为分隔符),作为rm -rf的参数 40 wget wget -c http://www.example.com/large.file 继续上次未完的下载 wget -O aa.txt http://www.example.com/large.file 将数据写入aa.txt 文件中 41 touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm) 42 iconv -l 列出已知的编码 43 mkdir #mkdir -p /tmp/dir1/dir2 递归创建一个目录树 #mkdir -m 777 /home/dir1/ 创建文件并设置权限 44 APT 软件工具 apt-get install package_name 安装/更新一个 deb 包 apt-cdrom install package_name 从光盘安装/更新一个 deb 包 apt-get update 升级列表中的软件包 apt-get upgrade 升级所有已安装的软件 apt-get remove package_name 从系统删除一个deb包 apt-get check 确认依赖的软件仓库正确 apt-get clean 从下载的软件包中清理缓存 apt-cache search searched-package 返回包含所要搜索字符串的软件包名称 45 egrep 正则查找 #egrep -o "http://[a-zA-Z0-9.]+\.[a-zA-Z]{2,3}" url_email.txt #sed -n ‘100,200p‘ hotellist.xml |egrep -o ‘[0-9]{8}‘|uniq|sort 查找100到200行之间的8位数字并去重排序 46 replace # var="This is a line of text" # echo ${var/line/REPLACED} This is a REPLACED of text" //将变量var中的line替换成 REPLACED 47 substr # string=abcdefghijklmnopqrstuvwxyz # echo ${string:4} efghijklmnopqrstuvwxyz # echo ${string:4:8} efghijkl # echo ${string:(-1)} z # echo ${string:(-2):2} yz 48 whereis 命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置 [root@linux.iamhjl.cn ~]# whereis mysql mysql: /usr/local/mysql 49 ln 它的功能是为某一个文件在另外一个位置建立一个同步的链接 不占用硬盘空间相当于一个镜像 最常用的参数是-s,具体用法是:ln -s 源文件 目标文件。 ln -s /usr/local/webserver/mysql/bin/mysqldump /usr/bin/mysqldump 将建立一个软链到环境变量中 通过ls -l /usr/bin/mysqldump 或者ll /usr/bin/mysqldump 可查看软链;通过rm -rf /usr/bin/mysqldump 删除软链 50 find find命令的参数; ·find path -option [ -print ] [ -exec -ok command ] {} \; pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 -print: find命令将匹配的文件输出到标准输出。 -exec: find命令对匹配的文件执行该参数所给出的shell命令。-exec只限于 find使用 -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。 #-print 将查找到的文件输出到标准输出 #-exec command {} \; —–将查到的文件执行command操作,{} 指代前面 find查询的结果,{} 和 \;之间有空格 #-ok 和-exec相同,只不过在操作前要询用户 \; 则相当于“宪法” 在 -exec 后面需要一个表示该命令终结的的符号 eg: #find /root/webroot/taobao/log/ -type f -mtime +2 -exec rm -rf {} \; 删除过期文件 #find /root/webroot/taobao/log/ -name "*.log" -exec rm -rf {} \; 删除查出来的文件 #find ./ -name "update*" -type f -exec ls -al {} \; 查找当前文件下以update开头的文件 并显示文件属性 #find ./ -name "update*" -exec cp {} /home/hezuo/ \; 查找当前文件下以update开头的文件 并将find出来的东西拷到/home/hezuo/文件夹下 #find . -size +3000k -exec ls -ld {} \; 查找磁盘中大于3M的文件 #find ./ -type f -ls 查看一个目录树里的文件的体积和修改日期 #find /etc -cmin -5 //在/etc下查找 5分钟内被修改过属性的文件和目录 #find ./ -name "*.log" -exec cat {} \;>all.log 将满足条件的文件搜索出来并合并为一个文件 或者$find ./ -name "per*.log"|xargs cat >all.log 条件连接符 -a and 逻辑与 -o or 逻辑或 >#find / -size +204800 -a -size -409600 >#find /etc -name init* -a -type f >#find /etc -cmin -30 -o -mmin -30 命令连接符 -exec -ok 询问确认 >#find /home -user samlee -exec rm-rf {} \; >#find /etc -name init* -a -type d -exec ls -ld {} \; -exec/-ok 命令 {} \; 51 rsync 用于服务器之间文件同步 $rsync -avz /root/file1/ /root/file2/ 本地传 $rsync -avz /root/wangxu/ 192.168.15.129:/root/wangxu/其他机器 注意:如果远程主机的端口不是默认的22端口,假如是3000端口,上述的命令修改为, $ rsync -avz ‘-e ssh -p 3000‘ filename1 ubuntu@192.168.0.1:/home/ubuntu/filenam 52 crontab -e编辑的时候,在文件名后面加上$(date +\%F)就能生成以年月日命名文件名 *:20 * * * * echo ‘haha‘>>/root/webroot/taobao/log/$(date +\%F).log 每20秒执行一次 */20 * * * * echo ‘haha‘>>/root/webroot/taobao/log/$(date +\%F).log 每20分执行一次 53 tar.bz2 解压 tar jxvf fcitx-3.2-050827.tar.bz2 54 常用软件下载地址 libmcrypt http://lcmp.googlecode.com/files/libmcrypt-2.5.8.tar.gz mhash http://jaist.dl.sourceforge.net/project/mhash/mhash/0.9.9.9/mhash-0.9.9.9.tar.bz2 nginx http://nginx.org/download/ mysql http://downloads.mysql.com/archives.php php http://www.php.net/downloads.php 55 报错:Another app is currently holding the yum lock;waiting for it to exit... 解决方案:可以通过强制关掉yum进程 #rm -f /var/run/yum.pid 56 curl 用php生成一个随机码 然后post 提交 xml curl -i –k ‘https://api.dev.hotwire.com/v3/secure/booking/hotel?apikey=bqh3bv4ugfjk5swpcwn74w32&sig=‘$(php -r ‘echo hash("sha256", "bqh3bv4ugfjk5swpcwn74w32test123456".time());‘) -H ‘Content-type: text/xml‘ -d @dev-booking_request_credit_card.xml -X POST 相关:php -r Run PHP <code> without using script tags <?..?> 57 export 导入环境变量 #export MYNAME="wangxu" #env | grep MYNAME #echo $MYNAME 删除环境变量 #unset MYNAME 环境变量永久有效 #vi /etc/profile 加入 export MYNAME="wangxu" 注:修改文件后要想马上生效还要运行# source /etc/profile 58 #/usr/local/bin/redis-server &> /dev/null & redis服务启动 信息扔进黑洞 59 如何查看系统是哪个发布版? #cat /etc/issue #cat /proc/version 60 查看操作系统是多少位? #getconf LONG_BIT #uname -a 61 yum #yum install 软件名(-y:自动安装) #yum check-update //检测升级 #yum update //升级 #yum remove //卸载 #yum list //软件包查询 #yum info //软件包信息 62 !$ #mkdir /path/to/exampledir //创建一个目录 #cd !$ //转到刚创建的目录 63 快捷键 Ctrl + a:将光标定位到命令的开头 Ctrl + e:与上一个快捷键相反,将光标定位到命令的结尾 Ctrl + u:剪切光标之前的内容(删除整行) Ctrl + k:与上一个快捷键相反,剪切光标之后的内容 Ctrl + y:粘贴以上两个快捷键所剪切的内容 Ctrl + t:交换光标之前两个字符的顺序 Ctrl + w:删除光标左边的参数(选项)或内容 Ctrl + l:清屏 Ctrl + r:逆向搜索 搜索历史记录 64 命令置换 ^^ 输入了一个 sudo apt-get updkte 的错误命令,这时可以通过输入 ^updkte^update(或 ^k^a)来纠正错误 65 查看Linux系统负荷 uptime load average 里面有三个数字,它们的意思分别是1分钟、5分钟、15分钟内系统的平均负荷 值越小性能越好 66 $date -s ‘17:32:50 2013-01-17‘ 修改服务器时间 $date -R 查看当前时区 $hwclock -w将当前时间和日期写入BIOS,避免重启后失效 67 witch 查找环境变量 68 nginx 多个php版本中选择(通过socket方式) fastcgi_pass unix:/tmp/php547.socket; 一般使用TCP方式 如fastcgi_pass 127.0.0.1:9000 php 中/php/etc/php-fpm.conf 中设置 ;listen = 127.0.0.1:9000 listen = /tmp/php547.socket 69 liunx 下php运行文件地址 /usr/local/server/php547/bin/php php环境变量地址 ln -s /usr/local/server/php547/bin/php /usr/bin/php547 #php547 -i 70 php 重启 /usr/local/server/php/sbin/php-fpm restart php 启动 /usr/local/server/php/sbin/php-fpm start php.ini 位置 /usr/local/server/php/etc 或 kill -INT `cat /usr/local/server/php547/var/run/php-fpm.pid` 关闭 kill -USR2 `cat /usr/local/server/php547/var/run/php-fpm.pid` 重启 71 nginx 检查 /usr/local/server/nginx0849/sbin/nginx -t nginx 重启 /usr/local/server/nginx0849/sbin/nginx -s reload nginx 启动 /usr/local/server/nginx0849/sbin/nginx 72 scp 服务器之间拷贝文件 命令格式: scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@remote_ip:remote_file 或者 scp local_file remote_ip:remote_folder 或者 scp local_file remote_ip:remote_file 或者(从别处拷到本地) #scp -r root@10.0.24.103:/home2/backup/ ./ 拷贝远程(10.0.24.103)的/home2/backup/ 到本地的当前文件夹 73 清空文件 cat /dev/null >test.txt 74 Linux ubuntu /添加源 sudo vi /etc/apt/sources.list sources.list就是添加源的文件,只要把我上面说的那个源加到最后一行就行了,然后保存。回到终端下,更新一下软件列表,输入 sudo apt-get update 75 ssh连接不上怎么办? 安装SSH yum install openssh-server 启动SSH service sshd start 设置开机运行 chkconfig sshd on #service sshd status //查看运行状态 如果未运行 #service sshd restart //重启 查看22端口是否开启 #iptables -L -n 若返回 如下 表示已开启 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 76 确认路由设置是否设置正确?(使用route命令查看) 确认主机上是否开启了telnet服务?(使用netstat命令查看,TCP的23端口是否有LISTEN状态的行) 确认防火墙是否放开了23端口的访问?(使用iptables-save查看) 77 nl命令 [root@localhost test]# nl log2012.log 用 nl 列出 log2012.log 的内容 空白行不会加上行号 [root@localhost test]# nl -b a log2012.log 空白行加上行号 [root@localhost test]# nl -b a -n rz log2014.log 行号前面自动补上0,统一输出格式 默认6位 [root@localhost test]# nl -b a -n rz -w 3 log2014.log 指定为3位 78 df du 用来检查linux服务器的文件系统的磁盘空间占用情况 du与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看 [root@localhost test]#df -h [root@CAB-BTDWWeb1 xml]# du -sh 38M 79 /usr/sbin/groupadd Usage: groupadd [options] GROUP Options: -f, --force 强制建立已经存在的组(如果存在则返回成功) -g, --gid GID 设置新建立组的识别码,0--499保留给系统服务,可以指定500以上的唯一数值(除非用--non-unique参数)。 -o, --non-unique 允许重复使用组识别码。 -p, --password PASSWORD 设置新组的密码 -r, --system 创建一个系统账号 80 设置环境变量 方法1 :直接用export命令(临时): #export PATH=$PATH:/opt/au1200_rm/build_tools/bin 方法2 :修改profile文件:在里面加入: $export PATH="$PATH:/opt/au1200_rm/build_tools/bin" #vi /etc/profile 81 nginx 监听80端口 ,可以将所有站点均设为80端口 server_name配置不一样的域名即可,不存在的域名设置host listen 80; server_name test.wyndham.elong.com; listen 80; server_name test.taobao.elong.com; listen 80; server_name test.caibei.elong.com; listen 80; server_name _; 不限制机器 82 cp -rf -r 递归复制文件 -f强制复制 83 sed 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e∶直接在指令列模式上进行 sed 的动作编辑; -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作; -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法) -i∶直接修改读取的档案内容,而不是由萤幕输出。 #只打印第三行 $sed -n ‘3p‘ datafile # 只查看文件的第100行到第200行 $sed -n ‘100,200p‘ mysql_slow_query.log #查看100行至最后一行 $sed -n ‘100,$p‘ mysql_slow_query.log #去掉多余的回车符 sed ‘s/^M//‘ test.sh > back.sh #删除第二到第五行 $sed ‘2,5d‘ datafile #删除包含"My"的行到包含"You"的行之间的行 $sed ‘/My/,/You/d‘ datafile #删除包含"My"的行到第十行的内容 $sed ‘/My/,10d‘ datafile #删除最后一行,其余的都被显示 $sed ‘$d‘ datafile #删除第一行,其余的都被显示 $sed ‘1d‘ datafile #替换内容 $sed -i ‘s/查找字段/替换字段/g‘ datafile #批量替换多个文件中的字符串 $sed -i ‘s/oldstring/newstring/g‘ `grep oldstring -rl yourdir` 也可以使用 $sed -i "s/oldstring/newstring/g" `ls` 例如:替换/home下所有文件中的www.admin99.net为admin99.net $sed -i ‘s/www.admin99.net/admin99.net/g‘ `grep www.admin99.net -rl /home` (去掉 -i 只会显示更改输出的内容 但不会更改原文件内容 ) sed ‘/^$/d‘ aa.txt #去除空行 84 ls #ls -l | grep ^d 只显示文件夹 #ls -l | grep ^- 只显示文件 #ls -lh 按M显示 84 查找并杀死僵尸进程(zombie) #ps -ef | grep defunct 或者 ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]‘ #ps -e -o ppid,stat | grep Z | cut -d” ” -f2 | xargs kill -9 或 kill -HUP `ps -A -ostat,ppid | grep -e ’^[Zz]‘ | awk ’{print $2}’` 85 redis-cli [OPTIONS] [cmd [arg [arg ...]]] -h <主机ip>,默认是127.0.0.1 -p <端口>,默认是6379 -a <密码>,如果redis加锁,需要传递密码 --help,显示帮助信息 redis-cli -h 192.168.99.68 -p 6477 86 linux下 telnet、redis 退出方式 quit 回车 87 history 显示时间 # HISTTIMEFORMAT=‘%F %T: ‘;history 88 删除文件大小为零的文件的多种方式 # rm -i `find ./ -size 0` # find ./ -size 0 -exec rm {} \; # find ./ -size 0 | xargs rm -f & 89 查看机器内存大小和交换分区大小 # grep ‘MemTotal‘ /proc/meminfo # grep ‘SwapTotal‘ /proc/meminfo 90 rpm #rpm -q binutils make glibc 查看已安装的文件包 #rpm -e 软件名 卸载 #rpm -ivh 软件包名 安装 例如 #rpm –ivh sudo-1.7.0pl-5.el5.i386.rpm //安装 sudo #rpm -Uvh 软件包名 升级 例如 #rpm –Uvh sudo-1.8.0pl-5.el5.i386.rpm //升级 sudo #rpm -ql 包名 一个rpm包中的文件安装到那里去了? 注意这里的是不包括.rpm后缀的软件包的名称 91 查看系统信息 cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx) cat /proc/interrupts - 中断 cat /proc/ioports - 设备IO端口 cat /proc/meminfo - 内存信息(i.e. mem used, free, swap size) cat /proc/partitions - 所有设备的所有分区 cat /proc/pci - PCI设备的信息 cat /proc/swaps - 所有Swap分区的信息 cat /proc/version - Linux的版本号相当于 uname -r uname -a - 看系统内核等信息 92 ctrl+s与ctrl+q ctrl-s用来暂停向终端发送数据的,屏幕就象死了一样,可以用ctrl-q来恢复 93 pwd --print working directory pwd -P 显示正式路径 而不显示外链路径 94 硬盘分区 fdisk #fdisk -l 查看硬盘个数及分区情况 #fdisk -l /dev/sda 查看单个硬盘情况 #fdisk /dev/sda 分区操作 95 对分区进行格式化 用 mkfs.bfs mkfs.ext2 mkfs.jfs mkfs.msdos mkfs.vfatmkfs.cramfs mkfs.ext3 mkfs.minix mkfs.reiserfs mkfs.xfs 等命令来格式化分区 # mkfs.ext3 /dev/sda6 格式化 sda6为ext3文件系统 96 挂载目录 mount # mkdir /mnt/sda6 # mount /dev/sda6 /mnt/sda6 # df -lh Filesystem 容量 已用 可用 已用% 挂载点 /dev/hda8 11G 8.4G 2.0G 81% / /dev/shm 236M 0 236M 0% /dev/shm /dev/hda10 16G 6.9G 8.3G 46% /mnt/hda10 /dev/sda6 191M 5.6M 176M 4% /mnt/sda6 这样我们就能进入 /mnt/sda6目录,然后存取文件了 97 如何重启后保存mount结果 #vi /etc/fstab 输入以下 文件系统(可以是卷标) 挂载点 文件系统类型 文件系统类型 挂载参数(一般俩零就行了) /dev/sdb3 /mnt/sdb ext3 defaults 0 0 98 开机启动可执行的文件 /etc/rc.local (常用) /etc/rc.init /etc/rc.sysinit /etc/inittab /etc/profile 99 chkconfig 如何增加一个服务: 1.服务脚本必须存放在/etc/ini.d/目录下; 2.chkconfig --add servicename 在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了; 3.chkconfig --level 35 mysqld on 修改服务的默认启动等级。 4.#chkconfig --list 查看所有 101 service 用于对系统服务进行管理 #service mysqld status 查看运行状态 #service mysqld stop 停止服务 #service mysqld start 启动服务 #service mysqld restart 重启服务 100 lsof -i:80 查看端口对应的进程和程序 #lsof -i:3306 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME mysqld 3706 mysql 10u IPv4 9581 TCP *:mysql (LISTEN) 101 lsmod——显示已载入系统的模块 102 tree 树形结构显示文件夹 Linux的目录进行遍历 103 查看Linux的启动信息 dmesg 104 硬盘命名: IDE硬盘:hd hda hdb hdc hda1 hda2 hda3 SCSI硬盘(SATA硬盘、USB移动硬盘):sd sda sda2 105 改变字符集 #vi /etc/sysconfig/i18n LANG="en_US.UTF-8" 106 /bin /usr/bin /usr/local/bin 所有用户可执行命令 binary /sbin /usr/sbin 只有 root可以使用命令 (super binary) 107 #umask 查看默认权限 0022 0-代表特殊权限,默认为空 022-代表默认权限掩码 (777-022=755 rwxr-xr-x) 108 #which //显示系统命令所在的目录(同 whereis【whatis】) 109 查看用户名是否被禁用 #passwd -S 用户名 Password set,MD5 crypt. Empty password. Password locked. 110 查看用户隶属于哪些用户组 #id dianjianlu uid=10007(dianjianlu) gid=10007(dianjianlu) groups=10007(dianjianlu) 111 kill kill PID 关闭进程 (默认信号 15) kill -9 PID 强行关闭进程 kill -1 PID 重启 xkill 关闭图形程序 点击左键,取消右键 killall 进程名 //关闭的有进程 pkill 进程名 关闭进程 112 pgrep 查看进程 PID pgrep mysql 113 查看日志中出现最多次数 uniq -c #tail -n 1000 apitest-access.log|awk ‘{print $1}‘|sort|uniq -c #awk ‘{print $1}‘ apitest-access.log|sort|uniq -c|sort -n -r -k 1|head #查看日志中出现最多次数的ip 114 hosts.deny hosts.allow 用于允许和禁止指定ip访问服务 /etc/hosts.allow 加入 sshd:192.168.1.2 sshd:192.168.9.51 /etc/hosts.deny 加入 sshd:all 表示 只允许 ip为 192.168.1.2 与 192.168.9.51 登陆到sshd 115 /etc/sysconfig/iptables #iptables -I INPUT -s 192.168.38.174 -j DROP //屏蔽单个ip禁用指定ip #iptables -I INPUT -s 192.168.38.0/100 -j DROP //屏蔽某段ip # iptables -F 清除预设表filter中的所有规则链的规则 # iptables -X 清除预设表filter中使用者自定链中的规则 删除所有的 INPUT FORWARD OUTPUT #iptables -P INPUT DROP #iptables -P FORWARD DROP #iptables -P OUTPUT DROP 删除指定规则 iptables -L -n --line-number //获取规则号 iptables -D INPUT 2 通过规则号删除规则 只打开22端口 #iptables -A INPUT -p tcp --dport 22 -j ACCEPT #iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 查看端口是否添加成功 iptables -L -n 保存更改 service iptables save 116 解决主机不能访问虚拟机CentOS中的web站点 虚拟机上装好了centos5.5,并配好了nginx+php+mysql,但是本机就是无法访问。 具体情况如下 1.本机能ping通虚拟机 2.虚拟机也能ping通本机 3.虚拟机能访问自己的web 4.本机无法访问虚拟己的web 后来发现是防火墙将80端口屏蔽了的缘故。 检查是不是服务器的80端口被防火墙堵了,可以通过命令:telnet server_ip 80 来测试。 解决方法如下: /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 然后保存: service iptables save 重启防火墙 service iptables restart 117 linux 直接操作mysql mysql -udianjianlu -pnopass.2 -e "use el_agency;select username from tbl_user limit 1" 118 ` ` 使用反短斜线可以将一个命令的输出作为另外一个命令的一个命令行参数 例如: # rm -i `find ./ -size 0` 删除为空的文件 #tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print` 把过去24小时变化了的文件打包 119 在Linux中1代表标准输出,2代表标准错误 #ls -al 1> list.txt 2> /dev/null 将显示的数据,正确的输出到 list.txt 错误的数据则予以丢弃! /dev/null 黑洞 120 && 命令1 && 命令2:如果这个命令执行成功&&那么执行这个命令 例如:$mv /apps/bin /apps/dev/bin && rm -r /apps/bin || 命令1 || 命令2:如果这个命令执行失败了 || 那么执行这个命令 例如:$cp test.sql test.bak || echo "errors occured during coping file" 121 strace 调试跟踪 strace -o output.txt -T -tt -e trace=all -p 28979 strace -o output.txt httpd 122 获取时间戳 date +%s 123 调试 shell #sh [-nvx] script.sh -n 不要执行脚本 仅检查语法 -v 执行脚本前将脚本输出到屏幕 -x 将使用的脚本输出到屏幕(很有用) 124 sudo su 将普通用户提升到拥有root权限(需要在/etc/sudoers 文件中添加上该用户) 例如: #vi /etc/sudoers 添加 dianjianlu ALL=(ALL) ALL //将dianjianlu设置为完全可用 先用dianjianlu的账号密码登陆 然后执行 #sudo su 即可 125 /etc/nologin 禁止普通用户登陆 /etc/nologin 文件中的内容将会显示给用户,会一闪而过。例如,按如下方式创建 nologin 文件: disable login by admin temperarily!当用户试图登陆时,将会给用户显示"disable login by admin temperarily!",当系统维护结束以后,再删除/etc/nologin文件,其他用户就又可以恢复登陆了 126 fuser fuser能识别出正在对某个文件或端口访问的进程,它会把正在使用当前文件的进程id列出 fuser有一个特别的用法在于它可以一次杀死那些正在访问指定文件的进程 [root@localhost lhd]# fuser / /: 1rc 2rc 3rc 4rc 5rc 6rc 7rc 80rc 82rc 84rc 85rc 153rc 157rc 158rc 1788rc 1806r 1808r 1810rc 1811rc 1812rc 1813rc 1814rc 1815rc 1848rc 1886rc 1899rc 1900rc 2001rc ......太多不一一列出 说明: 这些进程号后面的rc是什么意思? c 将此文件作为当前目录使用。 e 将此文件作为程序的可执行对象使用。 r 将此文件作为根目录使用。 s 将此文件作为共享库(或其他可装载对象)使用 127 tee tee命令读取标准输入,把这些内容同时输出到标准输出和(多个)文件中 我们可以把输出重定向到文件中,比如 ls >a.txt,这时我们就不能看到输出了,如果我们既想把输出保存到文件中,又想在屏幕上看到输出内容,就可以使用tee命令了 [root@web ~]# cat 1.txt | tee 3.txt 5.txt #将1.txt中的内容输出到显示器并同时写入3.txt 5.txt 1 2 3 4 5 128 find中的-print0和xargs中-0的奥妙 让 find 在打印出一个文件名之后接着输出一个 NULL 字符 (‘‘) 而不是换行符, 然后再告诉 xargs 也用 NULL 字符来作为记录的分隔符. 这就是 find 的 -print0 和 xargs 的 -0 的来历 例如 #find /root -print0 返回 /root/pengtest/CRBT/wang.txt/root/pengtest/CRBT/su.txt/root/pengtest/CRBT/new.txt #du -sb /root/pengtest/CRBT/wang.txt/root/pengtest/CRBT/su.txt/root/pengtest/CRBT/new.txt #报错 #du -sb /root/pengtest/CRBT/wang.txt /root/pengtest/CRBT/su.txt /root/pengtest/CRBT/new.txt #以空格分隔多个文件运行成功 返回 123 /root/pengtest/CRBT/wang.txt 345 /root/pengtest/CRBT/su.txt 56 /root/pengtest/CRBT/new.txt 同理 使用 -print0和xargs中-0 #find /root -print0 |xargs -0 du -sb 返回 123 /root/pengtest/CRBT/wang.txt 345 /root/pengtest/CRBT/su.txt 56 /root/pengtest/CRBT/new.txt 129 发送邮件sendEmail 1. 安装sendEmail # cd /u01/software/nagios # wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz # tar -zxvf sendEmail-v1.56.tar.gz && cd sendEmail-v1.56 # cp sendEmail /usr/local/bin # chmod 0755 /usr/local/bin/sendEmail 2 发送测试 #sendEmail -f wangxusummer@163.com -t xu.wang@corp.elong.com -s mta1.corp.elong.com -u "nagios" -m "nagios test" 130 iostat 磁盘IO iostat工具查看进程IO请求下发的数量、系统处理IO请求的耗时 iostat -x 1 10 avg-cpu: %user %nice %sys %iowait %idle 0.00 0.00 0.25 33.46 66.29 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sdb 0.00 1122 17.00 9.00 192.00 9216.00 96.00 4608.00 123.79 137.23 1033.43 13.17 100.10 sdc 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。 idle小于70% IO压力就较大了,一般读取速度有较多的wait 131 redis 大量数据的插入处理 #vi data.txt 输入: SET Key0 Value0 SET Key1 Value1 ... SET KeyN ValueN #cat data.txt | redis-cli --pipe 132 yum命令执行报错(python升级导致) 解决方案: [root@localhost ~]# which yum /usr/bin/yum [root@localhost ~]# vi /usr/bin/yum 将 #!/usr/bin/python 改为: #!/usr/bin/python2.4(原老版本) 133 查看TCP并发连接数 # netstat -an | awk ‘/^tcp/{ A[$NF]++} END{ for (a in A) print a, A[a]}‘ 解析: CLOSED //无连接是活动的或正在进行 LISTEN //服务器在等待进入呼叫 SYN_RECV //一个连接请求已经到达,等待确认 SYN_SENT //应用已经开始,打开一个连接 ESTABLISHED //正常数据传输状态/当前并发连接数 FIN_WAIT1 //应用说它已经完成 FIN_WAIT2 //另一边已同意释放 ITMED_WAIT //等待所有分组死掉 CLOSING //两边同时尝试关闭 TIME_WAIT //另一边已初始化一个释放 LAST_ACK //等待所有分组死掉 134 dig 查看域名解析情况 #dig api.elong.com 135 修改DNS #vi /etc/resolv.conf 136 diff # diff -ruNa dirc1 dirc2 //比较文件夹中的不同文件 -r 比较子目录中的文件 -u 以合并的方式来显示文件内容的不同 -N 在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。 -a 逐行比较文本文件 -y 以并列的方式显示文件的异同之处 #diff file1 file2 -y //比较两个文件中得内容不同处 137 通过进程名查端口 #ps aux |grep "svn" 获取到进程号pid 比如4939 root 4939 0.0 0.1 165052 1076 ? Ss 14:56 0:00 svnserve -d -r /opt/svn/repos #netstat -nap |grep 4939 通过pid 查找端口 tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 4939/svnserve 138 相反 通过 端口查进程 #lsof -i:3690 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME svnserve 4939 root 3u IPv4 21988 0t0 TCP *:svn (LISTEN) 139 Linux下查看连接数 用以下命令可以看到对方的连接数 #netstat -ntu | awk ‘{print $5}‘ | cut -d: -f1 | sort | uniq -c | sort -n 140 跟踪进程 strace -p 10747 141 #echo * 以串行顺序打印当前整个目录列表 142 在防火墙级限制每个IP的连接数 下面的例子会阻止来自一个IP的60秒钟内超过15个连接端口80的连接数。 #/sbin/iptables -A INPUT -p tcp –dport 80 -i eth0 -m state –state NEW -m recent –set #/sbin/iptables -A INPUT -p tcp –dport 80 -i eth0 -m state –state NEW -m recent –update –seconds 60 –hitcount 15 -j DROP #service iptables save 143 vi强制退出 :q! 144 查看crontab执行情况 tail -f /var/log/cron 145 crontab 执行顺序 cmd1;cmd2 :不管cmd1执行的结果如何,都执行cmd2 cmd1 && cmd2:只有cmd1执行返回的结果是成功的,才执行cmd2 cmd1 || cmd2 表示 cmd1 返回结果为假时就执行 cmd2 146 重启crontab $/sbin/service crond restart 147 查看内存使用情况 ps -aux top free 148 当前网络流量--需安装sysstat 一般会自带 # sar -n DEV -u 1 10 每秒1次 连续10次 04:02:30 PM CPU %user %nice %system %iowait %steal %idle 04:02:35 PM all 41.46 0.00 4.90 0.00 0.00 53.65 04:02:30 PM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 04:02:35 PM lo 339.48 339.48 58370.14 58370.14 0.00 0.00 0.00 04:02:35 PM eth0 257.52 210.22 37945.29 112858.12 0.00 0.00 0.00 04:02:35 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 04:02:35 PM eth2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 04:02:35 PM eth3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 04:02:35 PM sit0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 结论:在所有的显示中,我们应主要注意%iowait和%idle, %iowait的值过高,表示硬盘存在I/O瓶颈, %idle值高,表示CPU较空闲, 如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。 %idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU 149 md5sum -b 以二进制模式读入内容 -t 以文本模式读入文件内容进行校验 150 进程 端口互查 #netstat -anp|grep XXX XXX可以是端口,也可以是进程名称 151 添加自定义脚本到开机自启动 写一个脚本auto_coreseek.sh 放到/etc/init.d/auto_coreseek.sh 然后chmod +x /etc/init.d/auto_coreseek.sh 然后加到开机启动中:hkconfig --add auto_coreseek.sh ok 152 shell中如何注释一段代码 使用:<<BLOCK :<<BLOCK BINARY_MYSQL_PATH="$ROOT_PATH"/binary/mysql if [ ! -d "$BINARY_MYSQL_PATH" ] then mkdir -p $BINARY_MYSQL_PATH fi BLOCK 153 安装软件报错 :/lib/ld-linux.so.2: bad ELF interpreter安装软件:/lib/ld-linux.so.2: bad ELF interpreter 原因:是因为64位系统中安装了32位程序 154 python -m SimpleHTTPServer 8001 以http方式共享当前文件夹的文件 可实现跨平台文件传输 浏览器中输入 http://ip:8001 显示所有文件列表 下载即可 155 sudo !! 以 root 帐户执行上一条命令。 156 ^foo^bar 将上一条命令中的 foo 替换为 bar,并执行。 157 cp filename{,.bak} 快速备份或复制文件。 158 ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg 把 Linux 桌面录制为视频 159 ssh-keygen+ssh-copy-id 在linux下实现ssh无密码登录访问 在192.168.42.142机器上 1)运行:#ssh-keygen -t rsa 2)然后拍两下回车(均选择默认) 3)运行: #ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.42.163 4)再输入163机器上的root密码 此时,再ssh 到163机器,则不需要密码了。相互之间scp,也不需要密码 169 alias 永久保存 ~/.bashrc #vi ~/.bashrc 加入alias #source ~/.bashrc 立即生效 170 .sh文件总是提示permission denied chmod 777 *.sh or chmod +x *.sh 171 traceroute 计算机到互联网另一端的主机是走的什么路径 追踪数据包所经过的网关 Windows系统下是执行tracert的命令 [root@localhost ~]# traceroute www.baidu.com traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets 1 192.168.74.2 (192.168.74.2) 2.606 ms 2.771 ms 2.950 ms 2 211.151.56.57 (211.151.56.57) 0.596 ms 0.598 ms 0.591 ms 3 211.151.227.206 (211.151.227.206) 0.546 ms 0.544 ms 0.538 ms 4 210.77.139.145 (210.77.139.145) 0.710 ms 0.748 ms 0.801 ms 5 202.106.42.101 (202.106.42.101) 6.759 ms 6.945 ms 7.107 ms 6 61.148.154.97 (61.148.154.97) 718.908 ms * bt-228-025.bta.net.cn (202.106.228.25) 5.177 ms 7 124.65.58.213 (124.65.58.213) 4.343 ms 4.336 ms 4.367 ms 8 202.106.35.190 (202.106.35.190) 1.795 ms 61.148.156.138 (61.148.156.138) 1.899 ms 1.951 ms 9 * * * 30 * * * [root@localhost ~]# 172 nohup 如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令 #nohup /usr/www/gopro/gopath_1/bin/ihotel --port 9999 >>/usr/www/gopro/gopath_1/bin/log.file 2>&1 & 标准错误(2) 重定向到标准输出中(1),而标准输出又追加导入文件log.file里面 所以结果是标准错误和标准输出都导入文件log.file里面了 173 $? 上一次命令执行完成之后的状态返回值,位0表示成功,不为0表示失败 tar czvf all.gz /etc/*.conf if [ $? -eq 0 ];then action fi 174 unzip -o:不提示的情况下覆盖文件 175 svn 客户端处理 1 新建文件夹 #mkdir /data 2 #cd /data 3 添加用户wheel组权限 #sudo chown -R user:wheel . 4 svn up —username xu.wang 176 shell获取命令行参数的方法 内部参数 : $0 ----- 当前程序的名称,实际上是一个内部参数,不同于$1,$2....因为它必须有! $# ---- 传递给程序的总的参数数目,也就是那个传说中的数组大小 $? ---- 上一个代码或者shell程序在shell中退出的情况,如果正常退出则返回0,反之为非0值。 $* ---- 传递给程序的所有参数组成的字符串。 $@---- 以"参数1" "参数2" ... 形式保存所有参数 $$ ---- 本程序的(进程id号)pid $! ---- 上一个命令的pid 177 查看每个IP多少个连接数 #netstat -ntu | awk ‘{print $5}‘ | cut -d: -f1 | sort | uniq -c | sort -n 5 192.168.79.17 6 121.40.142.3 13 194.153.190.139 68 127.0.0.1 109 192.168.79.25 348 172.21.20.75 178 tar exclude #tar -czf des.tar.gz a –exclude a/b –exclude a/c 有目录a, 下面多个文件并有目录b和c,只打包文件而不想打包两目录 179 Centos Linux安装Apache Benchmark, AB压力测试工具 #yum install httpd-tools 180 Comm 该命令是对两个已经排好序的文件进行比较。其中file1和file2是已排序的文件 选项1、2或3抑制相应的列显示。例如 $comm - 12就只显示在两个文件中都存在的行; $comm - 23只显示在第一个文件中出现而未在第二个文件中出现的行; $comm - 123则什么也不显示。 181 taskset 使用taskset命令来限制进程的CPU taskset -cp 1,2 25718 #将进程id 25718 分配到1和2号cpu上 taskset -cp 3 25720 #将进程id 25720 分配到3号cpu上 182 tcpdump linux抓包命令 #tcpdump tcp port 5302 #tcpdump tcp host 102.168.1.100 //截获来自和发往主机102.168.1.100的所有报文数据。 #tcpdump src host 102.168.1.100 //截获来自主机 102.168.1.100的所有报文数据 #tcpdump -i eth0 -A -s 3000 port 3306 抓取发送到服务器端的sql # tcpdump -i eth0 -s 3000 port 3306 -w ~/sql.pcap //可用wireshark 打开sql.pcap 分析 -A 以ASCII格式打印出所有分组,并将链路层的头最小化。向mysql服务端传输的sql语句就是以ASCII码形式进行传输。我们就可以使用-A参数查看传输的具体sql语句。 -i 指定监听的网络接口。 -s 设置读取数据包的长度,而不是默认的68个字节 183 将stdout和stderr合并:&> 如果你想将正确信息和错误信息合并,且输出到同一个文件,可以使用&>符号 将stdout和stderr分离: >和2> stderr表示标准错误输出,代码为2 184 系统环境配置文件 /etc/profile 是系统整体的设置,每个用户共享,最好不要修改 ~/.bash_profile 属于单个用户的设置,每个用户设置后,互不影响和共享 185 pstree -p 显示进程树 init(1)─┬─atd(1361) ├─auditd(1039)───{auditd}(1040) ├─crond(1345) ├─cupsd(1102) ├─dbus-daemon(1086) ├─dhclient(976) ├─mingetty(1374) ├─mingetty(1376) ├─mingetty(1378) ├─mingetty(1380) ├─mingetty(1385) ├─mingetty(1387) ├─mysqld_safe(1166)───mysqld(1355)─┬─{mysqld}(1389) │ ├─{mysqld}(1390) │ ├─{mysqld}(1391) │ ├─{mysqld}(1392) │ ├─{mysqld}(1393) │ ├─{mysqld}(1394) │ ├─{mysqld}(1395) │ ├─{mysqld}(1396) │ ├─{mysqld}(1397) │ ├─{mysqld}(1398) │ ├─{mysqld}(1400) │ ├─{mysqld}(1401) │ ├─{mysqld}(1402) │ ├─{mysqld}(1403) │ └─{mysqld}(1404) ├─nginx(1140)───nginx(1145) ├─php-fpm(1130)─┬─php-fpm(1131) │ └─php-fpm(1132) ├─rsyslogd(1064)─┬─{rsyslogd}(1065) │ ├─{rsyslogd}(1067) │ └─{rsyslogd}(1068) ├─sendmail(1309) ├─sendmail(1317) ├─sshd(1152)─┬─sshd(6415)───bash(6417)───redis-server(23173)─┬─{redis-s+ │ │ └─{redis-s+ │ ├─sshd(6458)───bash(6460) │ ├─sshd(23762)───bash(23764)───pstree(23925) │ └─sshd(23837)───bash(23839) └─udevd(384)─┬─udevd(1383) └─udevd(1384) 186 su root 切换用户 su wangxu 187 输出带颜色的字体 echo -e " \e[0;32mHelloWorld\e[0m" 输出绿色的HelloWorld 32 表示颜色 188 linux 自带 time 粗糙测速 $time php action.php real 0m8.741s user 0m0.021s sys 0m0.005s 189 rsync 增量备份 $rsync -av ./aa/ ./bb/ -a 归档模式,表示以递归方式传输文件,并保持所有文件属性 -v详细模式输出 Rsync的命令格式可以为以下六种: rsync [OPTION]... SRC DEST rsync [OPTION]... SRC [USER@]HOST:DEST rsync [OPTION]... [USER@]HOST:SRC DEST rsync [OPTION]... [USER@]HOST::SRC DEST rsync [OPTION]... SRC [USER@]HOST::DEST rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] 对应于以上六种命令格式,rsync有六种不同的工作模式: 1)拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。如:rsync -av /data /backup 2)使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。如:rsync -avz *.c foo:src 3)使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。如:rsync -avz foo:src/bar /data 4)从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。如:rsync -av root@172.16.78.192::www /databack 5)从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。如:rsync -av /databack root@172.16.78.192::www 6)列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www 190 tar.xz 解压方式 $xz -d ***.tar.xz $tar -xvf ***.tar 191 当前用户的执行级别 $who -r $runlevel 192 curl ifconfig.me 查看外网ip 193 查看使用最多的前10条命令 [root@localhost ~]# history | awk ‘{D[$2]++;count++;} END { for (i in D )print D[i] " " D[i]/count*100 "% " i }‘ | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10 194 error: command ‘gcc‘ failed with exit status 1 的解决办法 yum install gcc python-devel 195 Linux系统改变ls文件和文件夹颜色方法 [root@localhost www]# vi /etc/DIR_COLORS 件内设定的“DIR 01;34”,为ls命令的目录的颜色设置,01表示粗体,34表示字体蓝色。 改成“DIR 01;37;44”,37是字体白色,44是字背景蓝色。 31 = red 32 = green 33 = orange 34 = blue 35 = purple 36 = cyan 37 = grey 40 = black background 41 = red background 42 = green background 43 = orange background 44 = blue background 45 = purple background 46 = cyan background 47 = grey background 90 = dark grey 91 = light red 92 = light green 93 = yellow 94 = light blue 95 = light purple 96 = turquoise 100 = dark grey background 101 = light red background 102 = light green background 103 = yellow background 104 = light blue background 105 = light purple background 106 = turquoise background 之后执行: [root@localhost www]# eval `dircolors /etc/DIR_COLORS` 196 CentOS更改yum源与更新系统 备份/etc/yum.repos.d/CentOS-Base.repo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 进入yum源配置文件所在文件夹 [root@localhost yum.repos.d]# cd /etc/yum.repos.d/ 下载163的yum源配置文件,放入/etc/yum.repos.d/(操作前请做好相应备份) [root@localhost yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo 运行yum makecache生成缓存 [root@localhost yum.repos.d]# yum clean all [root@localhost yum.repos.d]# yum makecache 更新系统 [root@localhost yum.repos.d]# yum -y update 197 ps_mem 查看进程对应的个数及内存 [root@localhost ~]# ps_mem Private + Shared = RAM used Program 212.0 KiB + 36.5 KiB = 248.5 KiB atd 348.0 KiB + 44.5 KiB = 392.5 KiB auditd 284.0 KiB + 160.5 KiB = 444.5 KiB mysqld_safe 492.0 KiB + 39.5 KiB = 531.5 KiB dbus-daemon 612.0 KiB + 19.5 KiB = 631.5 KiB dhclient 488.0 KiB + 165.0 KiB = 653.0 KiB mingetty (6) 648.0 KiB + 51.5 KiB = 699.5 KiB crond 700.0 KiB + 83.0 KiB = 783.0 KiB init 996.0 KiB + 67.5 KiB = 1.0 MiB rsyslogd 292.0 KiB + 772.5 KiB = 1.0 MiB udevd (3) 1.8 MiB + 254.5 KiB = 2.0 MiB cupsd 1.8 MiB + 878.0 KiB = 2.7 MiB bash (4) 3.1 MiB + 436.0 KiB = 3.5 MiB sendmail.sendmail (2) 6.8 MiB + 71.5 KiB = 6.9 MiB redis-server 4.7 MiB + 2.7 MiB = 7.4 MiB sshd (5) 4.3 MiB + 5.0 MiB = 9.2 MiB php-fpm (3) 12.7 MiB + 919.5 KiB = 13.6 MiB python 32.6 MiB + 746.5 KiB = 33.3 MiB nginx (2) 38.1 MiB + 115.5 KiB = 38.2 MiB mysqld --------------------------------- 123.3 MiB ================================= 198 监控网卡流量 方法1 [root@localhost ~]#watch more /proc/net/dev /proc/net/dev :::::::::::::: Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 1907572 2830 0 0 0 0 0 0 1907572 2830 0 0 0 0 0 0 eth0:50138007 414754 0 0 0 0 0 0 9751350 25608 0 0 0 0 0 0 [root@localhost ~]#cat /proc/net/dev | grep eth0 | tr : " " | awk ‘{print "RX-" $2}‘ RX-51884897 [root@localhost ~]#cat /proc/net/dev | grep eth0 | tr : " " | awk ‘{print "TX-" $10}‘ TX-10072495 方法2 [root@localhost ~]# watch ifconfig Every 2.0s: ifconfig Wed Sep 23 01:13:23 2015 eth0 Link encap:Ethernet HWaddr 00:0C:29:8D:FD:FF inet addr:192.168.11.201 Bcast:192.168.11.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe8d:fdff/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:415308 errors:0 dropped:0 overruns:0 frame:0 TX packets:25623 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:50190845 (47.8 MiB) TX bytes:9754292 (9.3 MiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:2830 errors:0 dropped:0 overruns:0 frame:0 TX packets:2830 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1907572 (1.8 MiB) TX bytes:1907572 (1.8 MiB) 主要观察 RX 接收 TX发送 (packets数据包数|bytes字节数) 方法3 ifstat 方法4 sar 方法5 iftop 方法6 iptraf 199 redis模糊批量删除 [root@localhost ~]# redis-cli -h 192.168.11.12 -n 1 keys "*city*" |xargs -n 1 redis-cli -n 1 -h 192.168.11.12 DEL 200 echo -e 处理特殊字符 echo -n 不换行输出 [root@localhost ~]# echo -e "\t RX `date +%k:%M:%S`" RX 1:40:54 [root@localhost ~]# echo "\t RX `date +%k:%M:%S`" \t RX 1:40:45 200 tee - 重定向输出到多个文件 [root@localhost ~]# php test.php |tee ./aa.txt |tee -a ./bb.txt >./cc.txt # -a 追加到文件 201 mkpasswd 系统自带的密码生成器 [root@centos6 game-dir]# zas4Ery+5K8l -l # (length of password, default = 7)指定密码的长度,默认是7位数 -d # (min # of digits, default = 2)指定密码中数字最少位数,默认是2位 -c # (min # of lowercase chars, default = 2)指定密码中小写字母最少位数,默认是2位 -C # (min # of uppercase chars, default = 2)指定密码中大写字母最少位数,默认是2位 -s # (min # of special chars, default = 1)指定密码中特殊字符最少位数,默认是1位 202 flock 加锁 flock -xn ./test.lock -c "sh /root/test.sh" #-n 非阻塞模式 #test.lock 是随便建立的锁文件 加上锁后 执行后面 -c中的命令 在执行过程中 再次运行flock -xn ./test.lock -c "sh /root/test.sh" 获取锁失败 返回 直到上一个命令运行完毕解锁后才能运行 可用于 crontab flock命令防止crontab重复执行 * * * * * (flock -xn ./test.lock -c "sh /root/test.sh")
标签:
原文地址:http://www.cnblogs.com/wangxusummer/p/4955316.html