5分钟学透Linux知识体系

Posted codebox

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.hfree -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,进程idnetstat -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 -lnginx 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 //安装ftplnmp ftp add //添加FTPlnmp ftp list //显示FTP用户lnmp ftp del //删除FTPuseradd -d /home/test test //增加用户test,并制定test用户的主目录为/home/testpasswd test //为test用户设置密码usermod -d /cbbtop //修改用户权限目录虚拟主机管理(lnmp/lnmpa/lamp)

文件

LNMP默认网站配置文件:/usr/local/nginx/conf/nginx.confLNMPA默认网站配置文件:/usr/local/nginx/conf/nginx.conf 和 /usr/local/apache/conf/extra/httpd-vhosts.confLAMP默认网站配置文件:/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.htmlcrontab -l 列出crontab文件crontab -e 定时任务编辑crontab -r 删除crontab文件183.6.116.151:23122 */5 * * * * /home/bcb/app/php7.2.6/bin/php sendTplMsg3.phpminute hour day month week command其中:minute:表示分钟,可以是从0到59之间的任何整数。hour:表示小时,可以是从0到23之间的任何整数。day:表示日期,可以是从1到31之间的任何整数。month:表示月份,可以是从1到12之间的任何整数。week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。*/1 * * * * 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/shbat2.重启source /etc/profile3.执行脚本 xx.sh

php扩展安装

yaf

https://segmentfault.com/a/1190000012006517安装:pecl install yaf检查:php --ri yaf

 memcached

1.安装客户端http://www.runoob.com/memcached/memcached-install.htmlyum install memcached/usr/bin/memcached -d -m 1024 -u root -l 127.0.0.1 -p 11211 -c 1024 -P /tmp/memcached.pid2.安装扩展https://blog.csdn.net/u011547570/article/details/78325556yum install libmemcached libmemcached-develpecl 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.iniextension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20090626" extension=redis.so2.安装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/binmkdir -p/usr/local/redis/ectmv /lamp/redis-3.0.7/redis.conf /usr/local/redis/etccd /lamp/redis-3.0.7/srcmv 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/79841150vi /etc/rc.local /usr/local/redis/bin/redis-server /usr/local/redis/ect/redis.confmemcache安装:https://www.cnblogs.com/flywind/p/6021568.html



推荐阅读





以上是关于5分钟学透Linux知识体系的主要内容,如果未能解决你的问题,请参考以下文章

职业发展

Java开发知识体系!mysql免安装配置

图解 + 源码分析,轻松学透 Linux 操作系统

《8小时学透ARM体系架构》在线视频课程

学透10个github开源项目,掌握app开发者相关知识

《Linux内核 核心知识全解析(完)》