Linux系统之基础扫盲教程大全
序言
如果大家都爱装逼,一般会偏爱使用安装最小化的liunx系统,那么你的系统就不带图形化的桌面功能,这样对于一个想装b的初学者来说,liunx就是黑漆马虎,一望无际的黑屏,黑屏,如何快速的对liunx系统有个较为全面基础的认识呢?答:继续往下读,哈哈。
本篇目的就是让大家对linux系统有个全面的基础认知。
主要内容:网络,系统,cpu,内存,硬盘,进程等等常用的基础信息查看与基础功能设置。
linux系统时间相关
查看系统当前时间
[root@zlhpc ~]# date 2017年 02月 09日 星期四 03:20:45 cst
修改时间
[root@zlhpc sysconfig]# date -s "2016-02-09 15:15:00" 2016年 02月 09日 星期二 15:15:00 cst [root@zlhpc sysconfig]# date 2016年 02月 09日 星期二 15:15:05 cst
同步网路时间
[root@zlhpc sysconfig]# ntpdate -u ntp.api.bz 9 feb 15:56:21 ntpdate[4132]: step time server 17.253.68.253 offset 31624839.558211 sec [root@zlhpc sysconfig]# date 2017年 02月 09日 星期四 15:56:27 cst
note1:ntp是网络时间协议,主要用作同步计算机时间与服务器时间一致的。常见的ntp服务器有:210.72.145.44(国家授时中心服务器地址),ntp.api.bz(上海),time.nist.gov(美国),ntp.fudan.edu.cn(复旦),s1b.time.edu.cn(清华大学),等等。
note2:date命令设置时间只有超级用户才有,一般用户只能查看,且修改玩之后要记得执行clock -w 命令,把系统时间写入cmos中。
linux系统主机名与操作系统相关信息
显示系统主机名
[root@zlhpc sysconfig]# hostname zlhpc
修改主机名,需要同时修改/etc/hosts和/etc/sysconfig/network,且修改完之后需重启机器生效且永久保存,使用hostname命令只能临时修改不能永久有效。
[root@zlhpc sysconfig]# vim /etc/hostname
- -v:详细信息模式;
- -a:显示主机别名;
- -d:显示dns域名;
- -f:显示fqdn名称;
- -i:显示主机的ip地址;
- -s:显示短主机名称,在第一个点处截断;
- -y:显示nis域名。
uname查看操作系统相关信息
[root@zlhpc /]# uname -a linux zlhpc 3.10.0-327.el7.x86_64 #1 smp thu nov 19 22:10:57 utc 2015 x86_64 x86_64 x86_64 gnu/linux
数据依次为:内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
参数如下
- -m或–machine 显示主机的硬件(cpu)名
- -n或-nodename 显示主机在网络节点上的名称或主机名称
- -r或–release 显示linux操作系统内核版本号
- -s或–sysname 显示linux内核名称
- -v 显示显示操作系统是第几个 version 版本
- -p 显示处理器类型或unknown
- -i 显示硬件平台类型或unknown
- -o 显示操作系统名
- –help 获得帮助信息
- –version 显示uname版本信息
其他几种出去啊看linux版本信息的方法
[root@zlhpc /]# cat /proc/version linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (red hat 4.8.3-9) (gcc) ) #1 smp thu nov 19 22:10:57 utc 2015 [root@zlhpc /]# cat /etc/issue \s kernel \r on an \m [root@zlhpc /]# lsb_release -a lsb version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch distributor id: centos description: centos linux release 7.2.1511 (core) release: 7.2.1511 codename: core
linux系统查看cpu信息
[root@zlhpc /]# grep "model name" /proc/cpuinfo #查看cpu信息 model name : intel(r) core(tm) i7-4790 cpu @ 3.60ghz [root@zlhpc /]# more /proc/cpuinfo #查看cpu信息 processor : 0 vendor_id : genuineintel cpu family : 6 model : 60 model name : intel(r) core(tm) i7-4790 cpu @ 3.60ghz stepping : 3 microcode : 0x1e cpu mhz : 3591.678 cache size : 8192 kb physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 [root@zlhpc /]# getconf long_bit #查看cpu位数 64
linux系统用户与用户组
用户与组分类,根据帐号或组的位置都可以分为:本地帐号|组,远程(域)帐号|组 ,ldap,nis
根据帐号|组的功能分类可以分为:超级用户(root) uid:0 ,普通用户。普通用户又分为:系统帐号(uid范围:1-499,1-99:由distributions自行创建的系统帐号,100-499:若用户有系统帐号的需求时,可以使用的帐号uid)和可登录帐号(uid范围:500+)
关于系统用户和组的相关配置文件放在系统的一下文件中:
用户的帐号信息:/etc/passwd 用户的密码信息:/etc/shadow
用户组信息:/etc/group 组的密码信息:/etc/gshadow
那么下面我们一一打开这些文件来看看他们到底存放啦那些内容,格式是什么样的,我们又该怎么解读。
[root@zlhpc home]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:ftp user:/var/ftp:/sbin/nologin nobody:x:99:99:nobody:/:/sbin/nologin avahi-autoipd:x:170:170:avahi ipv4ll stack:/var/lib/avahi-autoipd:/sbin/nologin systemd-bus-proxy:x:999:997:systemd bus proxy:/:/sbin/nologin systemd-network:x:998:996:systemd network management:/:/sbin/nologin dbus:x:81:81:system message bus:/:/sbin/nologin polkitd:x:997:995:user for polkitd:/:/sbin/nologin tss:x:59:59:account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:privilege-separated ssh:/var/empty/sshd:/sbin/nologin rpc:x:32:32:rpcbind daemon:/var/lib/rpcbind:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin libstoragemgmt:x:996:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin chrony:x:995:993::/var/lib/chrony:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin rabbitmq:x:994:992:rabbitmq messaging server:/var/lib/rabbitmq:/bin/bash nginx:x:993:991:nginx web server:/var/lib/nginx:/sbin/nologin
每一行都代表一个用户,每一行中的冒号(:)代表分割符,那我们拿第一行做一个解读,如下:
root:x:0:0:root:/root:/bin/bash
1.root:用户名
2.x:密码占位符
3.uid
4.gid
5.用户描述
6.用户主文件夹
7.登录后使用的shell./sbin/nologin此shell会让该用户无法登录。
查看系统中支持那些shell:
[root@zlhpc home]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh
接下来我们看下用户关于密码的配置文件:
[root@zlhpc home]# cat /etc/shadow root:$6$zvdr2oo1yg7altbs$.70ppmyxg70k9bvltjhdm94cda1ywdrdi5nfzsfcmzf5wmesgibludnqrjuvycg481ny9rl//yzafnxhurqi//::0:99999:7::: bin:*:16659:0:99999:7::: daemon:*:16659:0:99999:7::: adm:*:16659:0:99999:7::: lp:*:16659:0:99999:7::: sync:*:16659:0:99999:7::: shutdown:*:16659:0:99999:7::: halt:*:16659:0:99999:7::: mail:*:16659:0:99999:7::: operator:*:16659:0:99999:7::: games:*:16659:0:99999:7::: ftp:*:16659:0:99999:7::: nobody:*:16659:0:99999:7::: avahi-autoipd:!!:17203:::::: systemd-bus-proxy:!!:17203:::::: systemd-network:!!:17203:::::: dbus:!!:17203:::::: polkitd:!!:17203:::::: tss:!!:17203:::::: postfix:!!:17203:::::: sshd:!!:17203:::::: rpc:!!:17204:0:99999:7::: abrt:!!:17204:::::: libstoragemgmt:!!:17204:::::: chrony:!!:17204:::::: ntp:!!:17204:::::: tcpdump:!!:17204:::::: rabbitmq:!!:17204:::::: nginx:!!:17204::::::
依然拿出第一行做一下解读:
root:$6$zvdr2oo1yg7altbs$.70ppmyxg70k9bvltjhdm94cda1ywdrdi5nfzsfcmzf5wmesgibludnqrjuvycg481ny9rl//yzafnxhurqi//::0:99999:7:::
1.root:用户名
2.$6$zvdr2oo1yg7altbs$.70ppmyxg70k9bvltjhdm94cda1ywdrdi5nfzsfcmzf5wmesgibludnqrjuvycg481ny9rl//yzafnxhurqi//:root用户用sha512加密过的用户密码
3.最近更改密码的日期,从19700101开始计算至修改密码那天的累积天数。
4.0:密码不能更改的天数,最近更改过后几年之后才能被再次更改,0表示可以随意随时修改。
5.99999:密码的过期时间,密码在多少天后必须被修改。
6.7:系统需要在密码过期的的前7天发出密码即将过期的警告。
7.宽限天数,密码过啦几天后还能修改密码。
8.帐号过期时间
9.保留字段,目前没有用到。
查看关于组的配置文件,如下:
[root@zlhpc home]# head -n 4 /etc/group root:x:0: bin:x:1: daemon:x:2: sys:x:3:
root:x:0:
1.root:用户组名称
2.x:用户组密码的占位符
3.0:用户组的gid
4.此用户组支持的帐号名称。
接下来我们来看下帐号管理,关于帐号的增删改查操作
1、添加用户
[root@zlhpc home]# useradd zhanglonghao [root@zlhpc home]# useradd zhanglonghao1
useradd (选项)(参数)
- -c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
- -d<登入目录>:指定用户登入时的启始目录;
- -d:变更预设值;
- -e<有效期限>:指定帐号的有效期限;
- -f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
- -g<群组>:指定用户所属的群组;
- -g<群组>:指定用户所属的附加群组;
- -m:自动建立用户的登入目录;
- -m:不要自动建立用户的登入目录;
- -n:取消建立以用户名称为名的群组;
- -r:建立系统帐号;
- -s:指定用户登入后所使用的shell;
- -u:指定用户id。
修改用户信息,参数选项和添加一致。
[root@zlhpc home]# usermod zhanglonghao -u 1005 [root@zlhpc home]# id zhanglonghao uid=1005(zhanglonghao) gid=1000(zhanglonghao) 组=1000(zhanglonghao)
删除用户
[root@zlhpc home]# userdel zhanglonghao2 -rf
userdel,参数如下:如果不加下面的参数进行直接删除,则用户删除,用户的目录与文件依旧保留。
- -f:强制删除用户,即使用户当前已登录;
- -r:删除用户的同时,删除与用户相关的所有文件。
把某个用户添加到哪个组中:示例把用户zhanglonghao添加到zhanglonghao1的组中,且也在原有的组中不被删除,这是必须加 -a意思是附加的意思,如下:
[root@zlhpc home]# usermod zhanglonghao -a -g zhanglonghao1 [root@zlhpc home]# groups zhanglonghao zhanglonghao : zhanglonghao zhanglonghao1
id查看用户的id信息
[root@zlhpc home]# id zhanglonghao uid=1005(zhanglonghao) gid=1000(zhanglonghao) 组=1000(zhanglonghao),1001(zhanglonghao1)
查看当前登录系统的用户信息
[root@zlhpc home]# who root pts/0 2017-02-12 15:01 (172.18.8.196) [root@zlhpc home]# users root [root@zlhpc home]# id -un root [root@zlhpc home]# whoami root [root@zlhpc home]# who root pts/0 2017-02-12 15:01 (172.18.8.196) [root@zlhpc home]# w 16:51:15 up 1:50, 1 user, load average: 0.00, 0.01, 0.05 user tty from login@ idle jcpu pcpu what root pts/0 172.18.8.196 15:01 3.00s 0.44s 0.01s w
我们针对w这个命令做个解释
1.user:用户名
2.tty:用户的机器名或tty号
3.from:远程主机的地址
4.login@:用户登录系统的时间
5.idle:空闲时间
6.jcpu:附加到tty(终端)的进程所用的时间(jcpu时间)
7.pcpu:当前进程所用时间(pcpu时间)
8.what:用户当前正在使用的命令
参数为 -h :忽略头文件信息, -u:显示结果的加载时间 , -s :不显示jcpu,pcpu,登陆时间。
liunx网络的基本操作
打开网页:curl
[root@zlhpc ~]# curl www.baidu.com <!doctype html> <!--status ok--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=x-ua-compatible content=ie=edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class="head_wrapper"> <div class="s_form"> <div class="s_form_wrapper"> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class="fm"> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class="s_ipt" value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn"></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class="mnav">新闻</a> <a href=http://www.hao123.com name=tj_trhao123 class="mnav">hao123</a> <a href=http://map.baidu.com name=tj_trmap class="mnav">地图</a> <a href=http://v.baidu.com name=tj_trvideo class="mnav">视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class="mnav">贴吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=http%3a%2f%2fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class="lb">登录</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeuricomponent(window.location.href+ (window.location.search === " rel="external nofollow" " ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登录</a>');</script> <a href=//www.baidu.com/more/ name=tj_briicon class="bri" style="display: block;">更多产品</a> </div> </div> </div> <div id=ftcon> <div id=ftconw> <p id=lh> <a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>about baidu</a> </p> <p id=cp>©2017 baidu <a href=http://www.baidu.com/duty/>使用百度前必读</a> <a href=http://jianyi.baidu.com/ class="cp-feedback">意见反馈</a> 京icp证030173号 <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>
下载文件:wget
[root@zlhpc ~]# wget http://download.redis.io/releases/redis-3.0.6.tar.gz
linux下的文本浏览器:w3m与links
[root@zlhpc ~]# w3m www.baidu.com [root@zlhpc ~]# links www.baidu.com
检查你的网络与另外一台机器是否互通:ping
[root@zlhpc ~]# ping www.baidu.com
做路由图提供我们分析哪里出现故障或者是否存在网络拥塞情况:mtr
[root@zlhpc ~]# mtr [root@zlhpc ~]# mtr -r -c 30 www.baidu.com #每秒发送数据包的数量是30 ,mtr -r -c 30 -s 1024 www.baidu.com #ping包的大小为1024个字节 start: sun feb 12 18:01:09 2017 host: zlhpc loss% snt last avg best wrst stdev 1.|-- ??? 100.0 30 0.0 0.0 0.0 0.0 0.0 2.|-- 116.236.169.77 0.0% 30 4179. 9116. 4179. 11973 2051.2 3.|-- 124.74.124.165 0.0% 30 1.9 3.6 1.7 5.4 1.0 4.|-- 124.74.210.101 0.0% 30 4.1 4.5 2.4 6.1 1.0 5.|-- 59.43.77.141 0.0% 30 20.1 18.1 7.4 54.5 8.2 6.|-- 59.43.80.94 0.0% 30 4.3 6.0 2.7 24.3 3.6 7.|-- 202.97.26.2 86.7% 30 5.1 5.2 5.0 5.4 0.0 8.|-- 220.191.200.30 0.0% 30 5.9 5.5 5.1 7.0 0.3 9.|-- ??? 100.0 30 0.0 0.0 0.0 0.0 0.0 10.|-- 115.239.209.2 0.0% 30 6.8 7.1 6.6 8.0 0.0 11.|-- ??? 100.0 30 0.0 0.0 0.0 0.0 0.0 12.|-- 115.239.210.27 0.0% 30 6.1 6.5 5.6 11.7 1.4
- 第一列:显示的是ip地址和本机域名,这点和tracert很像。
- 第二列 loss%:是显示的每个对应ip的丢包率。
- 第三列 snt:snt等于10,设置每秒发送数据包的数量,默认值是10 可以通过参数 -c来指定。
- 第四列 last:显示的最近一次的返回时延。
- 第五列 avg:平均值,这个应该是发送ping包的平均时延。
- 第六列 best:最好或者说时延最短的时间。
- 第七列 wrst:最坏或者说时延最长的时间。
- 第八列 stdev:标准偏差。
mtr参数如下:
1.-h 提供帮助命令
2.-v 显示mtr的版本信息
3.-r 已报告模式显示
4.-c 设置每秒发送数据包的数量
5. -s 用来指定ping数据包的大小
6.-n no-dns不对ip地址做域名解析
7.-a 来设置发送数据包的ip地址 这个对一个主机由多个ip地址是有用的
8.-i 使用这个参数来设置icmp返回之间的要求默认是1秒
9.-4 ipv4
10.-6 ipv6
dns查询,如果是参数是域名输出关联ip,如果参数是ip输出关联的域名:host
[root@zlhpc ~]# host www.baidu.com www.baidu.com is an alias for www.a.shifen.com. www.a.shifen.com has address 115.239.211.112 www.a.shifen.com has address 115.239.210.27
出网络接口配置、调优和debug的各种选项:ifconfig
[root@zlhpc ~]# ifconfig eno16777736: flags=4163<up,broadcast,running,multicast> mtu 1500 inet 172.18.8.190 netmask 255.255.255.0 broadcast 172.18.8.255 inet6 fe80::20c:29ff:feb5:d2d8 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:b5:d2:d8 txqueuelen 1000 (ethernet) rx packets 10916 bytes 7044121 (6.7 mib) rx errors 0 dropped 0 overruns 0 frame 0 tx packets 7267 bytes 774719 (756.5 kib) tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<up,loopback,running> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (local loopback) rx packets 318 bytes 32844 (32.0 kib) rx errors 0 dropped 0 overruns 0 frame 0 tx packets 318 bytes 32844 (32.0 kib) tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
关于ip的命令
[root@zlhpc ~]# ip link show #查看所有网络接口属性信息 1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state unknown mode default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno16777736: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state up mode default qlen 1000 link/ether 00:0c:29:b5:d2:d8 brd ff:ff:ff:ff:ff:ff [root@zlhpc ~]# ip -s link show #查看所有统计信息 1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state unknown mode default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 rx: bytes packets errors dropped overrun mcast 32844 318 0 0 0 0 tx: bytes packets errors dropped carrier collsns 32844 318 0 0 0 0 2: eno16777736: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state up mode default qlen 1000 link/ether 00:0c:29:b5:d2:d8 brd ff:ff:ff:ff:ff:ff rx: bytes packets errors dropped overrun mcast 7050452 10988 0 0 0 0 tx: bytes packets errors dropped carrier collsns 780097 7309 0 0 0 0 [root@zlhpc ~]# ip addr show #查看网络信息 1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state unknown link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno16777736: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state up qlen 1000 link/ether 00:0c:29:b5:d2:d8 brd ff:ff:ff:ff:ff:ff inet 172.18.8.190/24 brd 172.18.8.255 scope global dynamic eno16777736 valid_lft 83120sec preferred_lft 83120sec inet6 fe80::20c:29ff:feb5:d2d8/64 scope link valid_lft forever preferred_lft forever
这里简单介绍下,以后会有深入介绍。
ifdown与ifup分别是禁用与启用摸个网络接口
[root@zlhpc ~]# ifdown eno16777736 [root@zlhpc ~]# ifup eno16777736
netstat命令查看网络信息
netstat命令是一个监控tcp/ip网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的,netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。
netstat [选项]
- -a 显示所有socket,包括正在监听的。
- -c 每隔1秒就重新显示一遍,直到用户中断它。
- -i 显示所有网络接口的信息,格式同“ifconfig -e”。
- -n 以网络ip地址代替名称,显示出网络连接情形
- -r 显示核心路由表,格式同“route -e”。
- -t 显示tcp协议的连接情况。
- -u 显示udp协议的连接情况。
- -v 显示正在进行的工作。
- -p 显示建立相关链接的程序名
列出所有连接
[root@zlhpc ~]# netstat -a --列出所有连接 active internet connections (servers and established) proto recv-q send-q local address foreign address state tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* listen tcp 0 0 0.0.0.0:ssh 0.0.0.0:* listen tcp 0 0 localhost:smtp 0.0.0.0:* listen
只列出tcp或者udp协议的连接
[root@zlhpc ~]# netstat -at active internet connections (servers and established) proto recv-q send-q local address foreign address state tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* listen tcp 0 0 0.0.0.0:ssh 0.0.0.0:* listen tcp 0 0 localhost:smtp 0.0.0.0:* listen
[root@zlhpc ~]# netstat -au active internet connections (servers and established) proto recv-q send-q local address foreign address state udp 0 0 0.0.0.0:18604 0.0.0.0:* udp 0 0 localhost:323 0.0.0.0:* udp 0 0 0.0.0.0:bootpc 0.0.0.0:* udp6 0 0 localhost:323 [::]:* udp6 0 0 [::]:53744 [::]:*
禁用反向域名解析,加快查询速度
[root@zlhpc ~]# netstat -ant active internet connections (servers and established) proto recv-q send-q local address foreign address state tcp 0 0 0.0.0.0:111 0.0.0.0:* listen tcp 0 0 0.0.0.0:22 0.0.0.0:* listen tcp 0 0 127.0.0.1:25 0.0.0.0:* listen tcp 0 52 172.18.8.190:22 172.18.8.196:51171 established tcp 0 0 172.18.8.190:22 172.18.8.196:49639 established
只列出监听中的连接
[root@zlhpc ~]# netstat -tnl active internet connections (only servers) proto recv-q send-q local address foreign address state tcp 0 0 0.0.0.0:111 0.0.0.0:* listen tcp 0 0 0.0.0.0:22 0.0.0.0:* listen tcp 0 0 127.0.0.1:25 0.0.0.0:* listen tcp6 0 0 :::111 :::* listen tcp6 0 0 :::22 :::* listen tcp6 0 0 ::1:25 :::* listen
获取进程名,进程号以及用户id
[root@zlhpc ~]# netstat -nlpt active internet connections (only servers) proto recv-q send-q local address foreign address state pid/program name tcp 0 0 0.0.0.0:111 0.0.0.0:* listen 1/systemd tcp 0 0 0.0.0.0:22 0.0.0.0:* listen 1538/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* listen 2094/master tcp6 0 0 :::111 :::* listen 1/systemd tcp6 0 0 :::22 :::* listen 1538/sshd tcp6 0 0 ::1:25 :::* listen 2094/master
[root@zlhpc ~]# netstat -ltpe active internet connections (only servers) proto recv-q send-q local address foreign address state user inode pid/program name tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* listen root 16299 1/systemd tcp 0 0 0.0.0.0:ssh 0.0.0.0:* listen root 21179 1538/sshd tcp 0 0 localhost:smtp 0.0.0.0:* listen root 22083 2094/master tcp6 0 0 [::]:sunrpc [::]:* listen root 16298 1/systemd tcp6 0 0 [::]:ssh [::]:* listen root 21189 1538/sshd tcp6 0 0 localhost:smtp [::]:* listen root 22084 2094/master
网络报统计情况
[root@zlhpc ~]# netstat -s ip: 7872 total packets received 0 forwarded 0 incoming packets discarded 6932 incoming packets delivered 7284 requests sent out 60 dropped because of missing route icmp: 260 icmp messages received 1 input icmp message failed. icmp input histogram: destination unreachable: 1 timeout in transit: 214 echo requests: 1 echo replies: 44 409 icmp messages sent 0 icmp messages failed icmp output histogram: destination unreachable: 33 echo request: 12 echo replies: ... output truncated ...
持续输出 -c持续输出tcp协议信息
[root@zlhpc ~]# netstat -ct active internet connections (w/o servers) proto recv-q send-q local address foreign address state tcp 0 52 zlhpc:ssh localhost:51171 established tcp 0 0 zlhpc:ssh localhost:49639 established
iftop工具实时监控linux系统的网络流量信息
最后上一个简单的实时流量监控工具:iftop ,它可以用来监控实时流量,反向解析ip,显示端口等。使用需先安装iftop,官网地址:
不过还有很多类似的软件,我们放在以后讨论。
[root@zlhpc ~]# iftop interface: eno16777736 ip address is: 172.18.8.190 mac address is: 00:0c:29:b5:d2:d8
常用参数命令:
- -i设定监测的网卡,如:# iftop -i eth1
- -b 以bytes为单位显示流量(默认是bits),如:# iftop -b
- -n使host信息默认直接都显示ip,如:# iftop -n
- -n使端口信息默认直接都显示端口号,如: # iftop -n
- -f显示特定网段的进出流量,如# iftop -f 10.10.1.0/24或# iftop -f 10.10.1.0/255.255.255.0
- -h(display this message),帮助,显示参数信息
- -p使用这个参数后,中间的列表显示的本地主机信息,出现了本机以外的ip信息;
- -b使流量图形条默认就显示;
- -f这个暂时还不太会用,过滤计算包用的;
- -p使host信息及端口信息默认就都显示;
- -m设置界面最上边的刻度的最大值,刻度分五个大段显示,例:# iftop -m 100m
图解:
- 界面头部:流量刻度尺,对应下边每行的白色横条。
- 界面中部:左边为服务器;中间为外网ip,左箭头流入,右箭头流出;右边为2s 10s 40s 的流量情况。
- 界面下部:tx:发送流量 ,rx:接收流量 ,total:总流量 ,cumm:运行iftop到目前时间的总流量 ,peak:流量峰值 ,rates:分别表示过去 2s 10s 40s 的平均流量
界面命令:
- 按h切换是否显示帮助;
- 按n切换显示本机的ip或主机名;
- 按s切换是否显示本机的host信息;
- 按d切换是否显示远端目标主机的host信息;
- 按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;
- 按n切换显示端口号或端口服务名称;
- 按s切换是否显示本机的端口信息;
- 按d切换是否显示远端目标主机的端口信息;
- 按p切换是否显示端口信息;
- 按p切换暂停/继续显示;
- 按b切换是否显示平均流量图形条;
- 按b切换计算2秒或10秒或40秒内的平均流量;
- 按t切换是否显示每个连接的总流量;
- 按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个ip相关的流量信息;
- 按l切换显示画面上边的刻度;刻度不同,流量图形条会有变化;
- 按j或按k可以向上或向下滚动屏幕显示的连接记录;
- 按1或2或3可以根据右侧显示的三列流量数据进行排序;
- 按<根据左边的本机名或ip排序;
- 按>根据远端目标主机的主机名或ip排序;
- 按o切换是否固定只显示当前的连接;
- 按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!
- 按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!
- 按q退出监控。
linux系统的硬盘存储与tree工具
整个系统的存储情况
[root@zlhpc ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 18g 2.1g 16g 12% / devtmpfs 479m 0 479m 0% /dev tmpfs 489m 0 489m 0% /dev/shm tmpfs 489m 6.7m 483m 2% /run tmpfs 489m 0 489m 0% /sys/fs/cgroup /dev/sda1 497m 124m 374m 25% /boot tmpfs 98m 0 98m 0% /run/user/0
某个文件或文件夹大小
[root@zlhpc usr]# du --max-depth=1 -h 108m ./bin 46m ./sbin 390m ./lib 417m ./lib64 517m ./share 0 ./etc 0 ./games 35m ./include 78m ./libexec 51m ./local 55m ./src 1.7g .
du的相关参数如下:
- -a 显示所有文件及目录大小,递归显示
- --apparent-size 显示文件及目录展现大小,而非磁盘占用量。
- -b,--block-size='size' 显示块的数量,引号中的size表示系统的块尺寸。
- -b 以byte的方式显示查看对象大小,相当于--apparent-size --block-size=1
- -c 计总并以total表面总数
- -d 计算不包含链接文件
- -h 类似于--si 以1000为计算单位计算文件及目录的磁盘占用量
- -h 人类可读的模式(k,m,g)
- --si 以1000取代1024换算单位
- -k 类似于--block-size=1k指定块大小为1k,计算文件目录大小。
- -l, --count-links 多次计算如果包含硬链接
- -m 类似于--block-size=1m指定块大小为1m,计算文件目录大小。
- -l, --dereference 和-d参数不同,忽略所有链接对象(文件,目录)
- -p, --no-dereference 默认参数,不
- -0 用0字节替代换行符
- -s, --separate-dirs 不包含子目录的大小
- -s, --summarize 仅显示当前目录级下每个对象的总大小
- -x, --one-file-system 跳过那些在不同文件系统上的目录。
- -x file, --exclude-from=file 不包含匹配的对象,这里的file是用户指定的文件对象
- --exclude=pattern
- --max-depth= 显示目录级的深度--max-depth=0相当于--summarize
- --time 显示目录中文件的或子目录最后的改动时间
- --time=word 以关键词 word显示时间,包含:atime,access,use,ctime,status
- --time-style=style 调整显示时间格式,格式包含full-iso, long-iso, iso, +format(该格式来自于date命令)
- --help 帮助
- --version 版本信息
使用tree工具,查看树形目录结构,首先先安装tree工具
[root@zlhpc usr]# tree -l 3 src #列出src层数为3以内的所有文件 src ├── debug └── kernels └── 3.10.0-514.6.1.el7.x86_64 ├── arch ├── block ├── crypto ├── drivers ├── firmware
tree常用参数:
-d:仅显示目录
-a:显示所有
-f:显示完整路径
-l n :n为数字,表示要现实几层。
进程资源的实时占用状况,linux中的任务管理器:top
top默认3秒刷新一次,按空格立即刷新,q:退出,m:按内存排序,p:按cpu排序,<>:翻页 。
top - 21:32:45 up 6:31, 2 users, load average: 0.01, 0.02, 0.05 tasks: 348 total, 2 running, 346 sleeping, 0 stopped, 0 zombie %cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st kib mem : 1001332 total, 321616 free, 166176 used, 513540 buff/cache kib swap: 2097148 total, 2097148 free, 0 used. 596688 avail mem pid user pr ni virt res shr s %cpu %mem time+ command 3865 root 20 0 146296 2272 1452 r 0.7 0.2 0:00.62 top 1 root 20 0 126416 7184 2608 s 0.0 0.7 0:02.43 systemd 2 root 20 0 0 0 0 s 0.0 0.0 0:00.06 kthreadd 3 root 20 0 0 0 0 s 0.0 0.0 0:00.37 ksoftirqd/0 6 root 20 0 0 0 0 s 0.0 0.0 0:00.98 kworker/u256:0 7 root rt 0 0 0 0 s 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 s 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 s 0.0 0.0 0:00.00 rcuob/0 10 root 20 0 0 0 0 s 0.0 0.0 0:00.00 rcuob/1 11 root 20 0 0 0 0 s 0.0 0.0 0:00.00 rcuob/2 12 root 20 0 0 0 0 s 0.0 0.0 0:00.00 rcuob/3 13 root 20 0 0 0 0 s 0.0 0.0 0:00.00 rcuob/4
统计讲解:
第一行的统计信息与命令uptime命令执行结果一致,依次为:
- 21:32:45 :当前时间
- 6:31 :系统运行时间
- 2 users:当前登录用户数
- load average: 0.01, 0.02, 0.05 :系统负载,即任务队列的平均长度:1分钟,5分钟,15分钟前到现在的平均值。一般来说,每个cpu内核当前活动进程不大于3,则系统运行表现良好。当然这里说的是每个cpu内核,也就是如果你的主机是8核的话,那么uptime输出的最后一串字符应小于8*3=24即表示系统负载不是很严重。
第二、三行为进程和cpu的信息,当有多个cpu时,这些内容可能会超过2行,内容如下:
- tasks: 348 total:进程总数
- 2 running:正在运行的进程数
- 346 sleeping:睡眠的进程数
- 0 stopped:停止的进程数
- 0 zombie :僵尸进程数
- %cpu(s) 0.3 us:系统用户进程使用cpu百分比,不包括调高优先级的进程。cpu%是由每个核的cpu占用率之和计算出来的,如果是4核,核1使用率为100%,核2cpu使用率为100%,则会出现cpu高于100%的现象,最终为200%。
- 0.3 sy :内核空间占用cpu百分比
- 0.0 ni :用户进程空间内改变过优先级的进程占用cpu百分比
- 99.3 id :空闲cpu百分比
- 0.0 wa :等待输入输出的cpu时间百分比
- 0.0 hi :硬件cpu中断占用百分比
- 0.0 si :软中断占用百分比
- 0.0 st :虚拟机占用百分比
第四、五行为内存信息
- kib mem : 1001332 total :物力内存总量
- 321616 free :空闲内存总量
- 166176 used :使用物理内存总量
- 513540 buff/cache :用作内核缓存的内存量,和free -k 命令一个意思
- kib swap: 2097148 total :交换区总量
- 2097148 free :空闲交换区总量
- 0 used :使用交换区总量
- 596688 avail mem :缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
第六列头标题详细
- pid :进程id
- ppid :父进程id
- ruser :real user name
- uid : 进程所有者的用户id
- user : 进程所有者的用户名
- group : 进程所有者的组名
- tty : 启动进程的终端名。不是从终端启动的进程则显示为 ?
- pr : 优先级
- ni : nice值。负值表示高优先级,正值表示低优先级
- p : 最后使用的cpu,仅在多cpu环境下有意义
- %cpu : 上次更新到现在的cpu时间占用百分比
- time : 进程使用的cpu时间总计,单位秒
- time+ : 进程使用的cpu时间总计,单位1/100秒
- %mem : 进程使用的物理内存百分比
- virt : 进程使用的虚拟内存总量,单位kb。virt=swap+res
- swap : 进程使用的虚拟内存中,被换出的大小,单位kb。
- res: 进程使用的、未被换出的物理内存大小,单位kb。res=code+data
- code: 可执行代码占用的物理内存大小,单位kb
- data : 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
- shr : 共享内存大小,单位kb
- nflt: 页面错误次数
- ndrt : 最后一次写入到现在,被修改过的页面数。
- s : 进程状态(d=不可中断的睡眠状态,r=运行,s=睡眠,t=跟踪/停止,z=僵尸进程)
- command :命令名/命令行
- wchan : 若该进程在睡眠,则显示睡眠中的系统函数名
- flags : 任务标志,参考 sched.h
top命令参数
- d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
- p 通过指定监控进程id来仅仅监控某个进程的状态。
- q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
- s 指定累计模式
- s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
- i 使top不显示任何闲置或者僵死进程。
- c 显示整个命令行而不只是显示命令名
常用命令
- top //每隔5秒显式所有进程的资源占用情况
- top -d 2 //每隔2秒显式所有进程的资源占用情况
- top -c //每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
- top -p 12345 -p 6789//每隔5秒显示pid是12345和pid是6789的两个进程的资源占用情况
- top -d 2 -c -p 123456 //每隔2秒显示pid是12345的进程的资源使用情况,并显式该进程启动的命令行参数
linux系统free命令查看系统内存情况
[root@zlhpc ~]# free -h total used free shared buff/cache available mem: 977m 138m 693m 6.6m 145m 690m swap: 2.0g 0b 2.0g
- mem:系统物理内存
- swap:相当于windows中的虚拟内存,这里叫做交换区,当系统的物理内存不够用时,系统会将磁盘空间虚拟成内存使用。内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行。
- buff:buff这里我简单说明下,与cache对比,他是在做写操作的时候,把分散的写操作集中进行,减少磁盘i/o,从而提高系统性能。文件是在写操作之前先放入buff。
- cache:在做读操作的时候,把数据放入缓存中,等下次来访问此数据时候,不用读磁盘,直接读缓存即可。
- total:去掉为硬件和操作系统保留的内存后剩余的内存总量。许多人奇怪自己的电脑安装了一共8g的内存,但是显示总共只有七点几g的,现在应该没什么疑惑了把,不管linux还是windows都会有部分内存是保留给硬件和操作系统的!
- used:已分配的内存
- free:未分配内存
- shared:共享内存
- available:可以使用的内存总量
linux系统查看内存信息
[root@zlhpc /]# more /proc/meminfo #查看内存信息 memtotal: 1001332 kb memfree: 322740 kb memavailable: 597536 kb buffers: 1004 kb cached: 261816 kb swapcached: 0 kb active: 169740 kb inactive: 167476 kb active(anon): 74780 kb inactive(anon): 6452 kb active(file): 94960 kb inactive(file): 161024 kb unevictable: 0 kb mlocked: 0 kb swaptotal: 2097148 kb swapfree: 2097148 kb dirty: 0 kb writeback: 0 kb [root@zlhpc /]# grep memtotal /proc/meminfo #查看内存信息 memtotal: 1001332 kb
linux系统进程相关
pstree:树形结构显示系统进程信息
-p显示进程号
[root@zlhpc ~]# pstree -p systemd(1)─┬─networkmanager(978)─┬─dhclient(1320) │ ├─{networkmanager}(1051) │ └─{networkmanager}(1054) ├─abrt-watch-log(886) ├─abrtd(885) ├─agetty(906) ├─atd(900) ├─auditd(852)───{auditd}(871)
ps:用于展示当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
[root@zlhpc ~]# ps -aux user pid %cpu %mem vsz rss tty stat start time command root 1 0.0 0.7 126420 7172 ? ss 09:12 0:01 /usr/lib/systemd/system root 2 0.0 0.0 0 0 ? s 09:12 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? s 09:12 0:00 [ksoftirqd/0] root 6 0.0 0.0 0 0 ? s 09:12 0:00 [kworker/u256:0] root 7 0.0 0.0 0 0 ? s 09:12 0:00 [migration/0] root 8 0.0 0.0 0 0 ? s 09:12 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? s 09:12 0:00 [rcuob/0]
- user:运行次进程的用户名
- pid:该进程的进程号码
- %cpu:该进程使用掉的cpu资源百分比
- %mem:该进程所占用的物理内存百分比
- vsz:该进程使用掉的虚拟内存量(kbytes)
- rss:该进程占用的固定内存量(kbytes)
- tty:该进程是在哪个终端机上运作,若与终端机无关,则显示?,另外,tty-tty6是本机上面的登入者程序,若为pts/0等等的,则表示为由网络连接进主机的程序。
- stat:该程序目前的状态,linux进程有6种基本状态:r:正在运行或运行队列中等待,s:可中断的睡眠状态,可被某些讯号(signal)唤醒。t:暂停状态或跟踪状态,d:不可中断的睡眠状态,z:退出状态,进程成为僵尸进程,x:退出状态,进程即将被销毁。6种状态下又有6种子状态分别为:<:高优先级的,n:低优先级的,l:有内存分页但是带锁,s:包含子进程,l:多线程,+:前台程序(命令正在打开使用的程序,比如vim)
- start:该进程被触发的时间
- time:该进程实际使用cpu运作的时间
- command:该程序的实际指令
恐怖的参数多的如下:
- -a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
- a:显示现行终端机下的所有程序,包括其他用户的程序。
- -a:显示所有程序。
- -c:显示cls和pri栏位。
- c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
- -c<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。
- -d:显示所有程序,但不包括阶段作业领导者的程序。
- -e:此选项的效果和指定"a"选项相同。
- e:列出程序时,显示每个程序所使用的环境变量。
- -f:显示uid,ppip,c与stime栏位。
- f:用ascii字符显示树状结构,表达程序间的相互关系。
- -g<群组名称>:此选项的效果和指定"-g"选项相同,当亦能使用阶段作业领导者的名称来指定。
- g:显示现行终端机下的所有程序,包括群组领导者的程序。
- -g<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。
- h:不显示标题列。
- -h:显示树状结构,表示程序间的相互关系。
- -j或j:采用工作控制的格式显示程序状况。
- -l或l:采用详细的格式来显示程序状况。
- l:列出栏位的相关信息。
- -m或m:显示所有的执行绪。
- n:以数字来表示user和wchan栏位。
- -n:显示所有的程序,除了执行ps指令终端机下的程序之外。
- -p<程序识别码>:指定程序识别码,并列出该程序的状况。
- p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。
- r:只列出现行终端机正在执行中的程序。
- -s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
- s:采用程序信号的格式显示程序状况。
- s:列出程序时,包括已中断的子程序资料。
- -t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。
- t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。
- -t:显示现行终端机下的所有程序。
- -u<用户识别码>:此选项的效果和指定"-u"选项相同。
- u:以用户为主的格式来显示程序状况。
- -u<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。
- u<用户名称>:列出属于该用户的程序的状况。
- v:采用虚拟内存的格式显示程序状况。
- -v或v:显示版本信息。 -w或w:采用宽阔的格式来显示程序状况。
- x:显示所有程序,不以终端机来区分。
- x:采用旧式的linux i386登陆格式显示程序状况。
- -y:配合选项"-l"使用时,不显示f(flag)栏位,并以rss栏位取代addr栏位 。
- -<程序识别码>:此选项的效果和指定"p"选项相同。
- --cols<每列字符数>:设置每列的最大字符数。
- --columns<每列字符数>:此选项的效果和指定"--cols"选项相同。
- --cumulative:此选项的效果和指定"s"选项相同。
- --deselect:此选项的效果和指定"-n"选项相同。
- --forest:此选项的效果和指定"f"选项相同。
- --headers:重复显示标题列。
- --help:在线帮助。
- --info:显示排错信息。
- --lines<显示列数>:设置显示画面的列数。
- --no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。
- --group<群组名称>:此选项的效果和指定"-g"选项相同。
- --group<群组识别码>:此选项的效果和指定"-g"选项相同。
- --pid<程序识别码>:此选项的效果和指定"-p"选项相同。
- --rows<显示列数>:此选项的效果和指定"--lines"选项相同。
- --sid<阶段作业>:此选项的效果和指定"-s"选项相同。
- --tty<终端机编号>:此选项的效果和指定"-t"选项相同。
- --user<用户名称>:此选项的效果和指定"-u"选项相同。
- --user<用户识别码>:此选项的效果和指定"-u"选项相同。
- --version:此选项的效果和指定"-v"选项相同。
- --widty<每列字符数>:此选项的效果和指定"-cols"选项相同。
[root@zlhpc ~]# ps -ef --标准格式显示进程 [root@zlhpc ~]# ps -aux --bsd格式显示进程
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。