专栏首页Jay的后台开发笔记简单的linux系统配置故障定位与排除
原创

简单的linux系统配置故障定位与排除

运维有风险,操作需谨慎

本文旨在通过一些常用命令的用法示例,让有一定linux基础的开发同学能对系统进行简单配置,也能够上服务器定位或者解决一些简单基础性的问题,做出初步故障排除,或者为运维同学描述故障的表现提供帮助。

一般性的问题无非cpu占用高,内存满,磁盘满,目录或文件无权限,防火墙设置,所以上机器之后一般从这几个方面进行排查,这样能定位和解决大部分表现为接口不能访问,变慢,服务突然或周期性中断的问题,从而及时排除或定位故障,提高服务可用率,减轻运维同学的压力。

1. top

查看本机运行的基本信息,cpu,内存,进程,负载等,类似windows的资源管理器

2. pwd

查看当前目录,用于获取完整路径

3. ls -lh

列出当前目录的文件,并且将文件的大小按照容易读懂的形式表现出来

不加 h

加 h

4. ps -ef

查看当前所有的进程信息如cpu,内存,一般会加上grep 组合成查找进程的形式例如 ps -ef | grep httpd

5. free -m

查看内存信息,内存的大小按照MB的形式展示,也可以-g,按照GB的形式这展示

6. tail -f

以流的形式查看文件,多用于查看日志,例如tail -f xx.log,可以实时的查看日志的最新内容

7. ln -s

软连接创建,类似于windows的快捷方式,当需要在某个路径创建一个已经存在其它地方的文件或者文件夹时使用,例如在不改变配置文件的情况下,将日志目录移动到更大的硬盘,减少对系统盘的存储压力,在/tmp/目录下建立/data/logs目录的映射 logs

8. rm

删除文件,加上 -f强制删除不会进行二次确认(谨慎操作),-r删除文件夹,

删除链接为目录时不要加后面的”/xx”,否则会删除原有文件夹中的内容, 出现提示:rm: remove symbolic link ‘xxx’?,才是删除软链接

9. history

查看命令的历史,如果命令太多可以加上| less”,可以用键盘上的翻页按钮进行翻页操作,less对其它列输出命令同样奏效,例如ls -lh | less ,按Q键退出

10. kill

杀死进程,用于结束一个进程 kill -9 强制结束

11. ifconfig

查看本机ip地址,会罗列出本机的网卡,并显示该网卡的详细

12. tcpdump

用于抓取数据包,一般用于查看本机从网络上接收或者发出的信息,比如在调试接口时常用到,基本形式为截获主机hostname发送的所有数据

tcpdump -i eth0 src host hostname

监视所有送到主机hostname的数据包

tcpdump -i eth0 dst host hostname

监视指定主机和端口的数据包

如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令

tcpdump tcp port 23 and host 210.27.48.1

对本机的udp 123 端口进行监视 123 为ntp的服务端口

tcpdump udp port 123

更加详细使用参考

https://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html

13. crontab

定时任务系统,用于需要按照某种时间规则重复执行程序时使用

例如:

在 12:01 a.m 运行,即每天凌晨过一分钟。这是一个恰当的进行备份的时间,因为此时系统负载不大。 1 0 * * * /root/bin/backup.sh

详细操作参考

https://www.cnblogs.com/intval/p/5763929.html

14. yum install

centos下安装软件,傻瓜式安装常用软件,在不熟悉编译安装之前是个很好的安装软件的方法

例如需要安装niginx:yum install nginx

15. df

查看磁盘大小和使用情况,加上-h 获得更好的容量大小展示,一般用于查看是不是因为磁盘满了而导致的系统不可用等情况,日志占满磁盘会导致服务不可用,通过这个问题就可以快速定位出

16. du

查看具体目录的磁盘占用信息,用ls查看,目录统一显示为4KB,无法查看真实的磁盘占用情况

-h 友好显示 -d控制层级 1表示只看当前目录 数字越大层级越深,列表中的最后一个表示当前目录总共占用的大小,如下图中的最后一行 2.0G 表示当前目录总共大小为2G。

这个命令一般用于查找那些大容量的文件夹,通过多次组合(如配合df 查看磁盘占用->du查看目录占用->ls查看具体文件大小),类似windows的先查看那个盘占用严重,进入盘后查看哪个文件夹比较大,再进入文件夹看哪个文件比较大,来定位大文件的所在,整理磁盘空间

深层级演示,这里2表示如果是目录,则进入查看里面一层的文件或目录的详细占用信息

17. cp

复制文件,加上-r 复制文件夹

cp from to

cp -r fromD toD

18. mv

剪切文件

mv from to

19. date

查看系统时间

加上-s 为修改时间 date -s 2018-08-08 10:18:00

20. chmod

修改文件或加上-R修改文件夹权限, 用数字表示为:r(读)=4,w(写)=2,x(执行)=1 因此rwx=4+2+1=7

一般用法

chmod 755 abc:赋予abc权限rwxr-xr-x

chmod u=rwx,g=rx,o=rx abc:同上u=用户权限,g=组权限,o=不同组其他用户权限

chmod u-x,g+w abc:给abc去除用户执行的权限,增加组写的权限

chmod a+r abc:给所有用户添加读的权限

具体参考

http://man.linuxde.net/chmod

21. chown

修改目录或文件的所有者信息,例如把日志目录的权限给nginx的进程的所有者www,从而解决没权限无法写入日志的问题

chown www(所有者):www(用户组) logs

详情参考

https://www.cnblogs.com/toSeeMyDream/p/6405493.html

22. tar

压缩解压缩 tar,gz格式的压缩包

解:

tar -xvf 解压缩

格式为:

tar -xvf file.tar 解压file.tar当前文件夹

tar -xvf file.tar -C /tmp/xxx 解压file.tar指定的文件夹

压:

tar -jcvf 压缩成bz2属性

tar -zcvf 压缩成 gzip属性

格式为:

tar -cvf 压缩包名 被压缩的文件或文件夹

例如 tar -cvf jpg.tar *.jpg 将目录里所有jpg文件打包成tar.jpg

详解

https://www.cnblogs.com/manong--/p/8012324.html

23. zip

解或者压缩zip格式

压:

zip -r html.zip html 把html打成zip包

解:

unzip html.zip 解压zip包

24. rpm

centos下安装删除rpm包,一般用于服务器不能通过yum安装软件时,直接下载软件包上传到服务器进行安装

rpm -ivh xxx 安装

rpm -e xxx 卸载

详情

https://www.cnblogs.com/liaojie970/p/6138075.html

25. netstat

查看本机网络状况,一般用于查看端口占用,或者正在使用网络的进程

netstat -apn 查看所有

netstat -apn | grep httpd 搜索httpd进程

netstat -apn | grep 80 查看80端口的占用

26. iptables

linux的防火墙,通常网络不通是由iptables的配置造成的,

典型的场景,本机接口客户端不能访问,或者某些客户端不能访问,

或者本机ip为192.168.1.88,在本机通过127.0.0.1(回送地址,指本地机)能够访问自身端口,而其它机器无法通过192.168.1.88访问该机器,可能的原有如下

1. ip黑名单或者白名单造成

2. 端口被限制访问

      iptables -A INPUT -p tcp --dport 22 -j ACCEPT 开启22端口的进权限
      iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 开启22端口的出权限
iptables -A INPUT -p tcp -j DROP 关闭22端口的进权限,本机22端口无法被其它机器访问
      iptables为系统的重要组件,修改和配置时需要格外小心,详细设置可参考
      https://www.cnblogs.com/zongfa/p/7967935.html

27. 查看系统配置信息的一系列命令

uname -a 查看发行版,内核版本,系统是32还是64位

cat /proc/cpuinfo 显示CPU info的信息

cat /proc/interrupts 显示中断

cat /proc/meminfo 校验内存使用

cat /proc/swaps 显示哪些swap被使用

cat /proc/version 显示内核的版本

cat /proc/net/dev 显示网络适配器及统计

cat /proc/mounts 显示已加载的文件系统

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 低成本高收益的PHP性能提升方案

    OPcache通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。

    Jayjiao
  • LintCode-142.O(1)时间检测2的幂次

    悠扬前奏
  • 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.7 增加了一个js函数的分页方式。

         昨天在csdn上看到一个人提出来了一种分页的需求,大致是分页控件只负责绘制总页数、上一页、下一页等信息,然后在用户翻页的时候可以触发一个js函数,然后...

    用户1174620
  • Flutter应用——解密Flutter响应式布局

    Flutter是一个跨平台的应用开发框架,支持各种屏幕大小的设备,它可以在智能手表这样的小设备上运行,也可以在电视这样的大设备上运行。使用相同的代码来适应不同的...

    思想者杰克
  • 设计模式(一) | 啥是工厂模式和策略模式?

    谭庆波
  • 传统数仓如何转型大数据?

    Q:现在做传统数仓,如何快速转到大数据数据呢?其实很多小伙伴都是从传统数据仓库转到大数据的,今天就结合身边的同事经历来一起分享一下。

    zhisheng
  • [享学Netflix] 五十八、Ribbon负载均衡命令:LoadBalancerCommand(一)基础类打点

    如果你已经了解过Netflix Hystrix,那么你对Command命令模式并不陌生。同样的,Ribbon也采用了基于RxJava的命令模式来控制请求的执行过...

    YourBatman
  • 一道有趣的面试题

      前两天在刷leetcode的时候,遇到了一题Implement Rand10() Using Rand7(),rand7()可以给你等概率返回1-7的任意一...

    xindoo
  • 水仙花数

    输入有多组测试数据,每组测试数据以包含一个整数n(100<=n<1000) 输入0表示程序输入结束。输出如果n是水仙花数就输出Yes 否则输出No样例输入

    书童小二
  • ansbile--playbook剧本案例

    通过ansible批量管理三台服务器,使三台服务器实现备份,web01、nfs、backup,把web和nfs上的重要文件被分到backup上,主机ip地址分配...

    张琳兮

扫码关注云+社区

领取腾讯云代金券