5分钟学透Linux知识体系
每天与你分享
IT编程开发 技术干货 架构方案 技术思维导图 设计模式 算法题库
系统相关操作
fdisk -l 查看硬盘及分区情况
df -h 查看分区空间使用情况(磁盘)安文件大小排序查看:du -sh /* | sort -nr使用find:find ./ -size +1G -exec du -h {} \;
top -d 进程号 进程内存使用情况
top -c cpu资源占用说明Tasks : 115 total 进程总数1 running 正在运行进程数114 sleeping 睡眠进程数0 stopped 停止进程数0 zombie 僵尸进程数Cpu(s) : 16.1% us 用户空间占用CPU百分比2.0% sy 内核空间占用CPU百分比0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比79.5% id 空闲CPU百分比1.4% wa 等待输入输出的CPU时间百分比0.0% hi0.0% si序号列名含义PID 进程idPPID 父进程idRUSER RealusernameUID 进程所有者的用户idUSER 进程所有者的用户名GROUP 进程所有者的组名TTY 启动进程的终端名。不是从终端启动的进程则显示为?PR 优先级NInice 值。负值表示高优先级,正值表示低优先级P 最后使用的CPU,仅在多CPU环境下有意义%CPU 上次更新到现在的CPU时间占用百分比TIME 进程使用的CPU时间总计,单位秒TIME+ 进程使用的CPU时间总计,单位1/100秒%MEM 进程使用的物理内存百分比VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESSWAP 进程使用的虚拟内存中,被换出的大小,单位kb。RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATACODE 可执行代码占用的物理内存大小,单位kbDATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kbSHR 共享内存大小,单位kbnFLT 页面错误次数nDRT 最后一次写入到现在,被修改过的页面数。S 进程状态。D= 不可中断的睡眠状态R= 运行S= 睡眠T= 跟踪/停止Z= 僵尸进程COMMAND 命令名/命令行WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名Flags 任务标志,参考sched.h
free -h 内存使用情况1.作用free命令用来显示内存的使用情况,使用权限是所有用户。2.格式free [-b-k-m] [-o] [-s delay] [-t] [-V]3.主要参数-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。-s delay:显示每隔多少秒数来显示一次内存使用情况。-t:显示内存总和列。-o:不显示缓冲区调节列。
iostat -x 查看io的性能安装:
Iostat 是 sysstat 工具集的一个工具,需要安装。
Centos的安装方式是:yum install sysstat
Ubuntu的安装方式是: aptitude install sysstat
使用:iostat -dx
显示磁盘扩展信息说明:rrqm/s:
每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);
wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。
rsec/s:每秒读取的扇区数;
wsec/s:每秒写入的扇区数。
r/s 和 w/s 分别是每秒的读操作和写操作,
rKB/s 和wKB/s 列以每秒千字节为单位显示了读和写的数据量
await:每一个IO请求的处理的平均时间(单位是毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。
%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。
网络相关操作
netstat -ntlp 查看网络连接情况-t 列出tcp协议端口-u 列出udp协议端口-n 不使用域名与服务名,使用IP和端口-l 列出监听状态的网络服务-a 列出所有的网络连接-r 路由信息-p 列出pid,进程id
netstat -nupl (UDP类型的端口)
netstat -ntpl (TCP类型的端口)
iptables -A OUTPUT -p tcp --dport 端口号-j DROP 关闭端口
iptables -A INPUT -ptcp --dport 端口号-j ACCEPT 打开端口
nc -lp 23 &(打开23端口,即telnet)
netstat -an | grep 23 (查看是否打开23端口) 防火墙
iptables -L 查看防火墙
lsof -i:80 查看端口是否开发
常用命令
php a.php 1>/dev/null 2>&1 & 后台运行,不打印
du -m * |sort -r -n 降序排序日志文件
ps –ef | grep aio 查询名称中包含aio的进程
netstat -an | grep 3306 查询3306端口的占用情况
ln -s [源文件或目录] [目标文件或目录] 创建软件链接 例:ln –s /var/www/test test
chmod -R 777 目录 修改权限
chattr -i /home/wwwroot/fuelcard-lxy/.user.ini 解除文件锁定无法修改权限
tar -xvf [xxx.tar] | tar -xzf [xxx.tar.gz] 解压
netstat -nlp | grep [端口号] 查看端口是否被使用
rm -f [文件名] 删除文件不提示
mv [原文件名] [新文件名] 重命名文件
mv [原文件] [新的文件路径] 移动文件
find -name file\* 寻找当前目录下,所有以file为前缀的文件或子目录
find /home -mtime 2 列出目录下最近两天之内有变动的文件
mkdir test 在当前目录下创建一个test目录
cp test1.txt test2.txt 复制test1.txt并粘贴到当前目录下,然后重命名为test2.txt
grep abc test.txt 在test.txt文件中查找abc
grep abc test.txt --color 在test.txt文件中查找abc,并高亮显示
pwd 显示当前所在目录
wget http://nginx.org/download/nginx-1.9.12.tar.gz 下载资料
kill -9 进程号 杀死进程
ps -aux|grep xxx.php 查看进程 (在不同终端) a:显示所有程序 u:以用户为主的格式来显示 x:显示所有程序,不以终端机来区分
netstat -nap|grep 7779 查看其占用的端口
yum install wget wget安装
cp -rf www.xx.com www.xx.con.bak 文件备份
日志文件操作
sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log 根据日期查询日志
cat -n test.log |grep "debug" 查询关键字的日志tac是倒序查看,是cat单词反写
head -n 10 test.log 查询日志文件中的头10行日志;
head -n -10 test.log 查询日志文件除了最后10行的其他所有日志;
tail -100f test.log 实时监控100行日志tail -n 10 test.log 查询日志尾部最后10行的日志; tail -n +10 test.log 查询10行之后的所有日志;
使用more和less命令, 如: cat -n test.log |grep "地形" |more 这样就分页打印了,通过点击空格键翻页
使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析.如:cat -n test.log |grep "地形" >xxx.txt
日志筛选
你可以使用下面方法去重:
awk -F"," '{print $6 $7}' versionUpgrade_msg.log | sort -n | uniq
下面方法得出数量:
awk -F"," '{print $6 $7}' versionUpgrade_msg.log | sort -n | uniq | wc -l
nginx
nginx -s reload 重启配置
nginx -t 检测配置文件
nohup命令
nohup php server.php > ./server_log_`date "+%Y-%m-%d"`_.log 2>&1 & //运行php脚本,输出nohup日志导log文件
jobs -l //查看运行的后台进程(只能在同一个终端)
ftp命令
配置流程:账号-密码-路径
./pureftpd.sh //安装ftp
lnmp ftp add //添加FTP
lnmp ftp list //显示FTP用户
lnmp ftp del //删除FTP
useradd -d /home/test test //增加用户test,并制定test用户的主目录为/home/test
passwd test //为test用户设置密码
usermod -d /cbbtop //修改用户权限目录
虚拟主机管理(lnmp/lnmpa/lamp)
文件
LNMP默认网站配置文件:/usr/local/nginx/conf/nginx.conf
LNMPA默认网站配置文件:/usr/local/nginx/conf/nginx.conf 和 /usr/local/apache/conf/extra/httpd-vhosts.conf
LAMP默认网站配置文件:/usr/local/apache/conf/extra/httpd-vhosts.conf
命令
lnmp vhost del 删除虚拟主机
lnmp vhost list 查看列表
lnmp vhost add 添加虚拟主机
crontab定时任务
http://www.runoob.com/linux/linux-comm-crontab.html
crontab -l 列出crontab文件
crontab -e 定时任务编辑
crontab -r 删除crontab文件
23122 */5 * * * * /home/bcb/app/php7.2.6/bin/php sendTplMsg3.php :
minute hour day month week command其中:
minute:表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
* * * * php /www/wwwroot/resource.daorating.org/curl.php
crontab使用实例
实例1:每1分钟执行一次command命令:* * * * * command
实例2:每小时的第3和第15分钟执行命令:3,15 * * * * command
实例3:在上午8点到11点的第3和第15分钟执行命令:3,15 8-11 * * * command
实例4:每隔两天的上午8点到11点的第3和第15分钟执行命令:3,15 8-11 */2 * * command
实例5:每个星期一的上午8点到11点的第3和第15分钟执行命令:3,15 8-11 * * 1 command
实例6:每晚的21:30重启smb 命令:30 21 * * * /etc/init.d/smb restart
实例7:每月1、10、22日的4 : 45重启smb 命令:45 4 1,10,22 * * /etc/init.d/smb restart
实例8:每周六、周日的1 : 10重启smb命令:10 1 * * 6,0 /etc/init.d/smb restart
实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb 命令:0,30 18-23 * * * /etc/init.d/smb restart
实例10:每星期六的晚上11 : 00 pm重启smb 命令:0 23 * * 6 /etc/init.d/smb restart
实例11:每一小时重启smb 命令:* */1 * * * /etc/init.d/smb restart
实例12:晚上11点到早上7点之间,每隔一小时重启smb 命令:* 23-7/1 * * * /etc/init.d/smb restart
实例13:每月的4号与每周一到周三的11点重启smb 命令:0 11 4 * mon-wed /etc/init.d/smb restart
实例14:一月一号的4点重启smb 命令:0 4 1 jan * /etc/init.d/smb restart实例15:每小时执行/etc/cron.hourly目录内的脚本命令:01 * * * * root run-parts /etc/cron.hourly
ssh使用与命令
安装:yum install ssh
启动:service sshd start
登陆:ssh -p 50022 my@127.0.0.1
修改系统变量(目的:shell脚本可以全局运行)
1.修改vim /etc/profile文件(指定你的脚本所在目录):export PATH=$PATH:/root/sh/shbat
2.重启source /etc/profile
3.执行脚本 xx.sh
php扩展安装
yaf
https://segmentfault.com/a/1190000012006517
安装:pecl install yaf
检查:php --ri yaf
memcached
1.安装客户端
http://www.runoob.com/memcached/memcached-install.html
yum install memcached
-d -m 1024 -u root -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid
2.安装扩展
https://blog.csdn.net/u011547570/article/details/78325556
yum install libmemcached libmemcached-devel
pecl install memcached
redis
1.安装redis扩展
http://www.runoob.com/redis/redis-php.html
源码编译安装
$ wget https://github.com/phpredis/phpredis/archive/3.1.4.tar.gz$ cd phpredis-3.1.4 # 进入 phpredis 目录$ /usr/local/php/bin/phpize # php安装后的路径$ ./configure --with-php-config=/usr/local/php/bin/php-config$ make && make install
修改php.ini文件
vi /usr/local/php/lib/php.ini
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20090626" extension=redis.so
2.安装redis服务
http://www.runoob.com/redis/redis-install.html
下载安装
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz$ tar xzf redis-2.8.17.tar.gz$ cd redis-2.8.17$ make$cd src$make install
部署
https://www.cnblogs.com/wangchunniu1314/p/6339416.html
文件部署和目录转移
mkdir -p/usr/local/redis/bin
mkdir -p/usr/local/redis/ect
mv /lamp/redis-3.0.7/redis.conf /usr/local/redis/etc
cd /lamp/redis-3.0.7/src
mv mkreleasdhdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
修改成后台运行服务
首先编辑conf文件,将daemonize属性改为yes(表明需要在后台运行)
cd etc/
vi redis.conf
再次启动redis服务,并指定启动服务配置文件
redis-server /usr/local/redis/etc/redis.conf
检查
netstat -tumpl|grep 6379
开机自启动服务
https://blog.csdn.net/gorgeouschou/article/details/79841150
vi /etc/rc.local
/usr/local/redis/bin/redis-server /usr/local/redis/ect/redis.conf
memcache
安装:https://www.cnblogs.com/flywind/p/6021568.html
推荐阅读