第4课:Linux常用命令

linux的命令非常的多,但是常用的不多

只要你记住这里列出来的命令就足够了linux的命令非常的多,但是常用的不多

只要你记住这里列出来的命令就足够了

cd  进入某个目录
ll  罗列当前目录文件列表
locate 文件名  查找文件
history 查看以前用过的命令
ps   查询进程状态
free -m  查看内存
df -h 查看硬盘
rm -rf 删除文件
chmod 0777 设置文件权限

当前机器负载:
top  -d0.6 -cMH -u webid

当前机器的TCP连接次数:
netstat -na|grep ESTABLISHED | wc -l

还有一些命令主要是针对热门软件:
LNMP 1.2状态管理: lnmp {start|stop|reload|restart|kill|status}
LNMP 1.2各个程序状态管理: lnmp {nginx|mysql|mariadb|php-fpm|pureftpd} {start|stop|reload|restart|kill|status}
LNMP 1.1状态管理: /root/lnmp {start|stop|reload|restart|kill|status}
Nginx状态管理:/etc/init.d/nginx {start|stop|reload|restart}
MySQL状态管理:/etc/init.d/mysql {start|stop|restart|reload|force-reload|status}
Memcached状态管理:/etc/init.d/memcached {start|stop|restart}
PHP-FPM状态管理:/etc/init.d/php-fpm {start|stop|quit|restart|reload|logrotate}
PureFTPd状态管理: /etc/init.d/pureftpd {start|stop|restart|kill|status}
ProFTPd状态管理: /etc/init.d/proftpd {start|stop|restart|reload}
如重启LNMP,输入命令:/root/lnmp restart 即可,单独重启mysql:/etc/init.d/mysql restart

当前账户是 webid. 的进程是 php-cgi 的内核在做什么事情 (输出到/tmp/a.out):
(nginx)
top  -b -cMH -n1 -u webid | grep php-cgi  | head -n1 | awk '{print $1}' | xargs strace -Tt -o /tmp/a.out  -f -s 100  -p


cat /tmp/a.out | grep AF_INET

统计分析
top  -b -cMH -n1 -u webid | grep php-cgi  | head -n1 | awk '{print $1}' | xargs strace -T -r -c -p

虚拟机的Oracle TNS配置
php -n -r'echo "\n\n";ini_set("display_errors",true); foreach (array ( "/home/oracle/godeyeorg/10.2.0/network/admin/tnsnames.ora", "/opt/oracle/product/9.2.0/network/admin/tnsnames.ora" ) as $k) { echo $k . "\n"; foreach (file($k) as $r) { if (preg_match("/PPS(.)*=/i", $r, $a)) $name = str_replace(array ( "=", " ", "\n", "\t" ), "", $a[0]); if (preg_match("/(\d+)\.(\d+)\.(\d+)\.(\d+)/i", $r, $a)) $i = str_replace(array ( "=", " ", "\n", "\t" ), "", $a[0]); if ($name && $i) { echo "Database:{$name}\tIP:{$i}\t"; if (is_resource( ocilogon("ppstream", "ppstream", $name))) echo "success\n"; else echo "fail\n"; $name = ""; $i = ""; } } }'

检测虚拟主机的名称
grep server_name /usr/godeye/nginx/conf/nginx.conf

查看403的请求
cat admin.c.pps.tv_access.log | awk '($9~/403/){print}' | more

网址分组排序
zcat vodguide2.pps.tv.1378783200.5b178777593bed98fff2af5bc170fbb0.tar.gz | awk '{print $7}' | awk -F '/' '{print "/"$2"/"$3}' |sort |uniq -c |sort -nr |more

检测PHP有没有加速:
php -n -r 'echo "\n\n"; foreach (glob("/usr/local/php*", GLOB_ONLYDIR) as $dir) {     $d2 = $dir . "/etc/php.ini";     echo($d2 . "\n");     $d = file_get_contents($d2);     preg_match("/eaccelerator\.cache_dir=\"(.*)\"/i", $d, $da);     if (!is_dir($da[1])) echo "\t[X]{$da[1]}\n"; else echo "\t[Y]{$da[1]}\n";     preg_match("/error_reporting.*/i", $d, $da);     echo "\t [error_reporting]->{$da[0]}\n";     preg_match("/error_log.*/i", $d, $da);     echo "\t [error_log]->{$da[0]}\n";     preg_match("/log_errors.*/i", $d, $da);     echo "\t [log_errors]->{$da[0]}\n";     preg_match("/auto_append_file.*/i", $d, $da);     echo "\t [auto_append_file]->{$da[0]}\n";     preg_match("/.*couchbase.so/i", $d, $da);     if ($da[0]) {         echo "\t [couchbase.so]->{$da[0]}\n";         preg_match("/couchbase.compressor.*/i", $d, $da);         echo "\t [couchbase.compressor]->{$da[0]}\n";     } } echo "\n\n";'

memcache类型端口的请求个数
netstat -na|grep ESTABLISHED | awk '($5~/:112/){print}' | wc -l

WEB 80 端口的请求个数:
netstat -na|grep ESTABLISHED | awk '($4~/:80/){print}' | wc -l

查询服务器瞬时TCP压力分布:
netstat -na|grep ESTABLISHED > /dev/shm/can_delete_tcp.txt ; echo; echo; echo "======================="; echo '总端口:' ;cat /dev/shm/can_delete_tcp.txt |awk '($4!~/:9000/){print}'  | wc -l ; echo "80端口: cat /dev/shm/can_delete_tcp.txt | awk '(\$4~/:80/){print}' " ;cat /dev/shm/can_delete_tcp.txt | awk '($4~/:80/){print}' | wc -l ;echo "=======================" ;echo;cat /dev/shm/can_delete_tcp.txt |  awk '($5~/:80$/){print $5}' | awk -F '.' '{print $1"."$2"."$3"."$4}' |sort |uniq -c |sort -nr ; echo; cat /dev/shm/can_delete_tcp.txt |  awk '($5!~/:80$/){print}' |awk '($5~/^10\./){print $5}' | awk -F '.' '{print $1"."$2"."$3"."$4}' |sort |uniq -c |sort -nr ;echo;  cat /dev/shm/can_delete_tcp.txt  |  awk '($5!~/:80$/){print}' |awk '($5~/^127\./){print $5}' | awk -F '.' '{print $1"."$2"."$3"."$4}' |sort |uniq -c |sort -nr | head;

排除掉正规的TCP,剩余的TCP详细信息
cat /dev/shm/can_delete_tcp.txt | awk '($4!~/:80/){print}' | awk '($4!~/:9000/){print}'  | awk '($5!~/:9000/){print}' | awk '($5!~/^10\.|127\./)'

系统

# uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统版本
# cat /proc/cpuinfo      # 查看CPU信息
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量

资源

# free -m                # 查看内存使用量和交换区使用量
# df -h                  # 查看各分区使用情况
# du -sh <目录名>        # 查看指定目录的大小
# grep MemTotal /proc/meminfo   # 查看内存总量
# grep MemFree /proc/meminfo    # 查看空闲内存量
# uptime                 # 查看系统运行时间、用户数、负载
# cat /proc/loadavg      # 查看系统负载

磁盘和分区

# mount | column -t      # 查看挂接的分区状态
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况

网络

# ifconfig               # 查看所有网络接口的属性
# iptables -L            # 查看防火墙设置
# route -n               # 查看路由表
# netstat -lntp          # 查看所有监听端口
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息

进程

# ps -ef                 # 查看所有进程
# top                    # 实时显示进程状态

用户

# w                      # 查看活动用户
# id <用户名>            # 查看指定用户信息
# last                   # 查看用户登录日志
# cut -d: -f1 /etc/passwd   # 查看系统所有用户
# cut -d: -f1 /etc/group    # 查看系统所有组
# crontab -l             # 查看当前用户的计划任务

服务

# chkconfig --list       # 列出所有系统服务
# chkconfig --list | grep on    # 列出所有启动的系统服务
用这个命令可以设置开机启动服务,在现实业务中,会出现机器重启的情况,这个时候,如果nginx等服务没有设置开机启动,重启之后,项目就不能用了
还有一种最常用的设置开机启动方式
vi /etc/rc.local
设置开机启动命令

程序

# rpm -qa                # 查看所有安装的软件包


如何用Linux命令查看已安装的软件版本
rpm -qa | grep mysql
然后下面就会出来一些mysql的软件,你就可以看到它的版本

在进行任何更改之前和之后对不同度量标准进行测量是有用的。有用的命令如下:
vmstat 显示输入/输出 (IO) 统计和 CPU 使用,特别是用户时间和等待时间
iostat 显示有关磁盘读写的详细信息以及磁盘控制器的使用
ps 显示 slapd 进程的内存使用(并不是说使用多的内存是一件坏事,但是必须确保不能将 RAM 耗尽)
time 定时不同的命令行操作

cd  进入某个目录
ll  罗列当前目录文件列表
locate 文件名  查找文件
history 查看以前用过的命令
ps   查询进程状态
free -m  查看内存
df -h 查看硬盘
rm -rf 删除文件
chmod 0777 设置文件权限

当前机器负载:
top  -d0.6 -cMH -u webid

当前机器的TCP连接次数:
netstat -na|grep ESTABLISHED | wc -l

当前账户是 webid. 的进程是 php-cgi 的内核在做什么事情 (输出到/tmp/a.out):
(nginx)
top  -b -cMH -n1 -u webid | grep php-cgi  | head -n1 | awk '{print $1}' | xargs strace -Tt -o /tmp/a.out  -f -s 100  -p


cat /tmp/a.out | grep AF_INET

统计分析
top  -b -cMH -n1 -u webid | grep php-cgi  | head -n1 | awk '{print $1}' | xargs strace -T -r -c -p

虚拟机的Oracle TNS配置
php -n -r'echo "\n\n";ini_set("display_errors",true); foreach (array ( "/home/oracle/godeyeorg/10.2.0/network/admin/tnsnames.ora", "/opt/oracle/product/9.2.0/network/admin/tnsnames.ora" ) as $k) { echo $k . "\n"; foreach (file($k) as $r) { if (preg_match("/PPS(.)*=/i", $r, $a)) $name = str_replace(array ( "=", " ", "\n", "\t" ), "", $a[0]); if (preg_match("/(\d+)\.(\d+)\.(\d+)\.(\d+)/i", $r, $a)) $i = str_replace(array ( "=", " ", "\n", "\t" ), "", $a[0]); if ($name && $i) { echo "Database:{$name}\tIP:{$i}\t"; if (is_resource( ocilogon("ppstream", "ppstream", $name))) echo "success\n"; else echo "fail\n"; $name = ""; $i = ""; } } }'

检测虚拟主机的名称
grep server_name /usr/godeye/nginx/conf/nginx.conf

查看403的请求
cat admin.c.pps.tv_access.log | awk '($9~/403/){print}' | more

网址分组排序
zcat vodguide2.pps.tv.1378783200.5b178777593bed98fff2af5bc170fbb0.tar.gz | awk '{print $7}' | awk -F '/' '{print "/"$2"/"$3}' |sort |uniq -c |sort -nr |more

检测PHP有没有加速:
php -n -r 'echo "\n\n"; foreach (glob("/usr/local/php*", GLOB_ONLYDIR) as $dir) {     $d2 = $dir . "/etc/php.ini";     echo($d2 . "\n");     $d = file_get_contents($d2);     preg_match("/eaccelerator\.cache_dir=\"(.*)\"/i", $d, $da);     if (!is_dir($da[1])) echo "\t[X]{$da[1]}\n"; else echo "\t[Y]{$da[1]}\n";     preg_match("/error_reporting.*/i", $d, $da);     echo "\t [error_reporting]->{$da[0]}\n";     preg_match("/error_log.*/i", $d, $da);     echo "\t [error_log]->{$da[0]}\n";     preg_match("/log_errors.*/i", $d, $da);     echo "\t [log_errors]->{$da[0]}\n";     preg_match("/auto_append_file.*/i", $d, $da);     echo "\t [auto_append_file]->{$da[0]}\n";     preg_match("/.*couchbase.so/i", $d, $da);     if ($da[0]) {         echo "\t [couchbase.so]->{$da[0]}\n";         preg_match("/couchbase.compressor.*/i", $d, $da);         echo "\t [couchbase.compressor]->{$da[0]}\n";     } } echo "\n\n";'

memcache类型端口的请求个数
netstat -na|grep ESTABLISHED | awk '($5~/:112/){print}' | wc -l

WEB 80 端口的请求个数:
netstat -na|grep ESTABLISHED | awk '($4~/:80/){print}' | wc -l

查询服务器瞬时TCP压力分布:
netstat -na|grep ESTABLISHED > /dev/shm/can_delete_tcp.txt ; echo; echo; echo "======================="; echo '总端口:' ;cat /dev/shm/can_delete_tcp.txt |awk '($4!~/:9000/){print}'  | wc -l ; echo "80端口: cat /dev/shm/can_delete_tcp.txt | awk '(\$4~/:80/){print}' " ;cat /dev/shm/can_delete_tcp.txt | awk '($4~/:80/){print}' | wc -l ;echo "=======================" ;echo;cat /dev/shm/can_delete_tcp.txt |  awk '($5~/:80$/){print $5}' | awk -F '.' '{print $1"."$2"."$3"."$4}' |sort |uniq -c |sort -nr ; echo; cat /dev/shm/can_delete_tcp.txt |  awk '($5!~/:80$/){print}' |awk '($5~/^10\./){print $5}' | awk -F '.' '{print $1"."$2"."$3"."$4}' |sort |uniq -c |sort -nr ;echo;  cat /dev/shm/can_delete_tcp.txt  |  awk '($5!~/:80$/){print}' |awk '($5~/^127\./){print $5}' | awk -F '.' '{print $1"."$2"."$3"."$4}' |sort |uniq -c |sort -nr | head;

排除掉正规的TCP,剩余的TCP详细信息
cat /dev/shm/can_delete_tcp.txt | awk '($4!~/:80/){print}' | awk '($4!~/:9000/){print}'  | awk '($5!~/:9000/){print}' | awk '($5!~/^10\.|127\./)'

系统

# uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统版本
# cat /proc/cpuinfo      # 查看CPU信息
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量

资源

# free -m                # 查看内存使用量和交换区使用量
# df -h                  # 查看各分区使用情况
# du -sh <目录名>        # 查看指定目录的大小
# grep MemTotal /proc/meminfo   # 查看内存总量
# grep MemFree /proc/meminfo    # 查看空闲内存量
# uptime                 # 查看系统运行时间、用户数、负载
# cat /proc/loadavg      # 查看系统负载

磁盘和分区

# mount | column -t      # 查看挂接的分区状态
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况

网络

# ifconfig               # 查看所有网络接口的属性
# iptables -L            # 查看防火墙设置
# route -n               # 查看路由表
# netstat -lntp          # 查看所有监听端口
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息

进程

# ps -ef                 # 查看所有进程
# top                    # 实时显示进程状态

用户

# w                      # 查看活动用户
# id <用户名>            # 查看指定用户信息
# last                   # 查看用户登录日志
# cut -d: -f1 /etc/passwd   # 查看系统所有用户
# cut -d: -f1 /etc/group    # 查看系统所有组
# crontab -l             # 查看当前用户的计划任务

服务

# chkconfig --list       # 列出所有系统服务
# chkconfig --list | grep on    # 列出所有启动的系统服务
用这个命令可以设置开机启动服务,在现实业务中,会出现机器重启的情况,这个时候,如果nginx等服务没有设置开机启动,重启之后,项目就不能用了
还有一种最常用的设置开机启动方式
vi /etc/rc.local
设置开机启动命令

程序

# rpm -qa                # 查看所有安装的软件包


如何用Linux命令查看已安装的软件版本
rpm -qa | grep mysql
然后下面就会出来一些mysql的软件,你就可以看到它的版本

在进行任何更改之前和之后对不同度量标准进行测量是有用的。有用的命令如下:
vmstat 显示输入/输出 (IO) 统计和 CPU 使用,特别是用户时间和等待时间
iostat 显示有关磁盘读写的详细信息以及磁盘控制器的使用
ps 显示 slapd 进程的内存使用(并不是说使用多的内存是一件坏事,但是必须确保不能将 RAM 耗尽)
time 定时不同的命令行操作