Linux常用命令总结
Linux命令总结 (updated Jan. 9th 2013).
- Install a printer from the web: localhost:631
- To play encrypted DVD using under linux, you need the libreadcss library.
- nl ,给文件编上行号;
- tac,将文件以逆序行号输出;
- 删除以-开头的文件:rm -- -foo 或 rm ./-foo
- 内容替换命令:tr (翻译和替换命令),例如将文件中的大写字母替换称小写字母使用的命令是:cat foo | tr A-Z a-z
- nice 用来调整进程的优先级,默认情况下进程的优先级是10,优先级范围是[-20--19].
- banner命令,将输入的字符以大标题的形式显示出来。
- finger命令显示用户的信息。
- 给本系统或其他系统的用户发送邮件,例如:$ mail xxx@gmail.com 或:$ mail xxx,(其中xxx是本地一个用户。)
- write命令,给某个用户发送及时消息,用户必须在线,例如:$ write gsm, $ write xxx@gmail.com
- wall命令向系统中的所有用户发送广播消息,例如:$ wall "hello, good day"
- talk命令,向某个用户发送聊天邀请。例如: $ talk lili
- pg命令用来翻页阅读文件,例如 $ pg file_name
- cat -vte将不可见字符显示为特殊字符;-v 将非打印字符显示为可见字符,-t将tab键解释为^I,-e在行的末尾添加一个$.
- lsof 查看打开的文件,包括各种文件,例如pipe,socket,各种库文件等,如果想查看一个进程打开的文件的话这个命令就很有用了,例如查看2098号进程打开的文件,使用的命令为lsof -pn 2098
- lwp-download, lwp-mirror and lwp-rget commands can be used to retrieve website using (http) requests.
- sudo command can let common system users work as root on some privileged commands such as services, network management and so on.
- cut 命令可以将一个复杂的字符串根据指定的分隔符分割成几个部分,然后分别对这几个部分进行处理;
- join 将两个文件的内容合成一个;
- rev 将一个字符串进行反转,得到一个反向的字符串,这种操作对于取出带有全路径的文件名非常有用的。
- mtr ping和traceroute的组合体,用于检测网络的性能。
- atop,top的增强版,显示更多的信息,包括内存,cpu的summary等。
- scp rcp远程拷贝命令,例如scp hostname:/home/add/sohu ./
- nmap扫描机器的端口;
- 删除0字节文件 find -type f -size 0 -exec rm -rf {} \;
- 查看进程按内存从大到小排列 ps -e -o "%C : %p : %z : %a"|sort -k5 -nr
- 按cpu利用率从大到小排列 ps -e -o "%C : %p : %z : %a"|sort -nr
- 打印说cache里的URL : grep -r -a jpg /data/cache/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}'
- 查看http的并发请求数及其TCP连接状态: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
- sed -i '/Root/s/no/yes/' /etc/ssh/sshd_config sed在这个文里Root的一行,匹配Root一行,将no替换成yes.
- 如何杀掉mysql进程: ps aux|grep mysql|grep -v grep|awk '{print $2}'|xargs kill -9 (从中了解到awk的用途) killall -TERM mysqld kill -9 `cat /usr/local/apache2/logs/httpd.pid` 试试查杀进程PID
- 显示运行3级别开启的服务: ls /etc/rc3.d/S* |cut -c 15- (从中了解到cut的用途,截取数据)
- 如何在编写SHELL显示多个信息,用EOF cat << EOF +---------+ | === Welcome to Tunoff services === | +-------+ EOF
- for 的巧用(如给mysql建软链接) cd /usr/local/mysql/bin for i in * do ln /usr/local/mysql/bin/$i /usr/bin/$i done
- 取IP地址: ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6- 或者 ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'
- 内存的大小: free -m |grep "Mem" | awk '{print $2}'
- netstat -an -t | grep ":80" | grep ESTABLISHED | awk '{printf "%s %s\n",$5,$6}' | sort
- 查看Apache的并发请求数及其TCP连接状态:
- netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
- 因为同事要统计一下服务器下面所有的jpg的文件的大小,写了个shell给他来统计.原来用xargs实现,但他一次处理一部分,搞的有多个总和....,下面的命令就能解决啦. find / -name *.jpg -exec wc -c {} \;|awk '{print $1}'|awk '{a+=$1}END{print a}' CPU的数量(多核算多个CPU,cat /proc/cpuinfo |grep -c processor)越多,系统负载越低,每秒能处理的请求数也越多。
- CPU负载 # cat /proc/loadavg 检查前三个输出值是否超过了系统逻辑CPU的4倍。
- CPU负载 #mpstat 1 1 检查%idle是否过低(比如小于5%)
- 内存空间 # free 检查free值是否过低 也可以用 # cat /proc/meminfo
- swap空间 # free 检查swap used值是否过高 如果swap used值过高,进一步检查swap动作是否频繁: # vmstat 1 5 观察si和so值是否较大
- 磁盘空间 # df -h 检查是否有分区使用率(Use%)过高(比如超过90%) 如发现某个分区空间接近用尽,可以进入该分区的挂载点,用以下命令找出占用空间最多的文件或目录: # du -cks * | sort -rn | head -n 10
- 磁盘I/O负载: # iostat -x 1 2 检查I/O使用率(%util)是否超过100% 23 网络负载 # sar -n DEV 检查网络流量(rxbyt/s, txbyt/s)是否过高
- 网络错误 # netstat -i 检查是否有网络错误(drop fifo colls carrier) 也可以用命令:# cat /proc/net/dev
- 网络连接数目 # netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n
- 进程总数 # ps aux | wc -l 检查进程个数是否正常 (比如超过250)
- 可运行进程数目 # vmwtat 1 5 列给出的是可运行进程的数目,检查其是否超过系统逻辑CPU的4倍
- 进程 # top -id 1 观察是否有异常进程出现
- 网络状态 检查DNS, 网关等是否可以正常连通
- 用户 # who | wc -l 检查登录用户是否过多 (比如超过50个) 也可以用命令:# uptime
- 系统日志 # cat /var/log/rflogview/*errors
- 检查是否有异常错误记录 也可以搜寻一些异常关键字,例如: # grep -i error /var/log/messages # grep -i fail /var/log/messages
- 核心日志 # dmesg 检查是否有异常错误记录
- 系统时间 # date 检查系统时间是否正确
- 打开文件数目 # lsof | wc -l 检查打开文件总数是否过多
- 日志 # logwatch –print 配置/etc/log.d/logwatch.conf,将 Mailto 设置为自己的email 地址,启动mail服务 (sendmail或者postfix),这样就可以每天收到日志报告了。缺省logwatch只报告昨天的日志,可以用# logwatch –print –range all 获得所有的日志分析结果。可以用# logwatch –print –detail high 获得更具体的日志分析结果(而不仅仅是出错日志)。
- 杀掉80端口相关的进程 lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh
- 清除僵死进程。ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9
- tcpdump 抓包 ,用来防止80端口被人攻击时可以分析数据 # tcpdump -c 10000 -i eth0 -n dst port 80 > /root/pkts
- 然后检查IP的重复数 并从小到大排序 注意 "-t\ +0" 中间是两个空格: # less pkts | awk {'printf $3"\n"'} | cut -d. -f 1-4 | sort | uniq -c | awk {'printf $1" "$2"\n"'} | sort -n -t\ +0
- 查看有多少个活动的php-cgi进程: # netstat -anp | grep php-cgi | grep ^tcp | wc -l chkconfig --list | awk '{if ($5=="3:on") print $1}'
- kudzu查看网卡型号 kudzu --probe --class=network
- 设定默认的编辑器:$EDITOR 环境变量。
- 清空或创建一个文件 > file.txt
- 用ssh创建端口转发通道 ssh -N -L2001:remotehost:80 user@somemachine 这个命令在本机打开了2001端口,对本机2001端口的请求通过somemachine作为跳板,转到remotehost的 80端口上。实现效果跟术语反向代理是相似的,实际上就是端口转发,注意上面的描述涉及了3台主机,但当然somemachine可 以变成localhost。这个命令比较抽象,但有时候是很有用的,比如因为众所周知的原因国内的IP的80端口无法使用,又或者公司的防火墙只给外网开了ssh端口,需要访 问内部服务器一个web应用,以及需要访问某些限定了来源IP的服务,就可以用上这个方法了。举一个具体例子,运行:ssh -f -N -L 0.0.0.0:443:twitter.com:443 shell.cjb.netssh -f -N -L 0.0.0.0:80:twitter.com:80 shell.cjb.net 然后在/etc/hosts里面添加127.0.0.1 twitter.com.
- 重置终端 reset
- 在午夜的时候执行某命令 echo cmd | at midnight
- 远程传送麦克风语音 dd if=/dev/dsp | ssh username@host dd of=/dev/dsp
- 映射一个内存目录 mount -t tmpfs -o size=1024m tmpfs /mnt/ram
- 用diff对比远程文件跟本地文件 ssh user@host cat /path/to/remotefile | diff /path/to/localfile -
- 查看系统中占用端口的进程 netstat -tulnp
- Netstat是很常用的用来查看Linux网络系统的工具之一,这个参数可以背下来:
- -t: 显示TCP链接信息
- -u: 显示UDP链接信息
- -l: 显示监听状态的端口
- -n: 直接显示ip,不做名称转换
- -p: 显示相应的进程PID以及名称(要root权限)
- 如果要查看关于sockets更详细占用信息等,可以使用lsof工具。
- Linux command line editing:
- Ctrl-k kill from cursor to the end of line.
- Ctrl-u kill from cursor to the beginning of line.
- Ctrl-y paste content to cursor position.
- Ctrl-t exchange character.
- Alt-t exchange words.
- Alt-u Uppercase word.
- Alt-l Lowercase word.
- Alt-? List possible completions.
- Alt-* Insert all possible completions.
- sar 查看系统状态的综合命令。
- iostat 查看 CPU 负载,硬盘状况
- mpstat 查看多处理器状态。
- iptraf 实时网络状态监控。
- Stop/Halt a user named didi. : skill -STOP -u didi
- resume a halted user: skill -CONT -u didi
- kill and logout user called didi. skill -KILL -u didi
- kill and logout all users. skill -KILL -v /dev/pts/*
- kill a program by it's name. kill PROG_NAME
- disable enforcement of selinux. setenforce 0 sudo echo 0 > /selinux/enforce
- lpstat query status of printing jobs
- lpq show the queue status;
- Use hwclock --systohc --localtime to change the time from UTC to local time;
- In xinetd.conf, bind rather than server is used to sign the address of the service;
- The /etc/nsswitch.conf defines the source order for security configuration.
- Encryption: When A uses encryption to send data specifically to B, it encrypts the data using B's public key, so that B can decrypt the message after receiving it from A.
- cupsdisable will disable print service and cups enables the disabled service
- vmstat Monitor virtual memory
- pmap Display/examine memory map and libraries (so). Usage: pmap pid
- sar -B Show statistics on page swapping.
- time -v date Show system page size, page faults, etc of a process during execution. Note you must fully qualify the command as "/usr/bin/time" to avoid using the bash shell command "time".
- cat /proc/sys/vm/freepages Display virtual memory "free pages". One may increase/decrease this limit: echo 300 400 500 > /proc/sys/vm/freepages
- cat /proc/meminfo Show memory size and usage.
- To create a background process that will not hang after user exist, we can use command nohup.
- To put a process into background, use three steps 1) ctrl-z 2)bg 3) disown -h
- Print each item in a CSV file: for line in `cat dpgdp.csv`; do for i in `echo $line | tr ',' ' '`; do echo $i; done; echo '============='; done;
nmap命令用来扫描机器端口状态。
ReplyDelete