Linux系统学习之 一:新手必须掌握的Linux命令1
2018-10-03 16:04:12
一、常用系统工作命令
1、wget 命令
作用:用于在终端中下载网络文件。
格式:wget [参数] 下载地址
参数及作用:
-b : 后台下载模式
-d:显示调试信息
-n:该参数指定wget只下载更新的文件
-s:显示服务器响应
-p:下载到指定目录
-t:最大尝试次数
-c:断点续传
-p:下载页面内所有资源,包括图片、视频等
-r:递归下载
-t timeout:超时时间设置(单位秒)
-w time:重试延时(单位秒)
-q quota=number :重试次数
-nc:不覆盖已有的文件
-nd:不下载目录结构,把从服务器所有指定目录下载的文件都堆到当前目录里
-nh:不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下到当前目录下
-np:只下载目标站点指定目录及其子目录的内容
-l [depth]:下载远程服务器目录结构的深度
2、rpm(红帽软件包管理器)
rpm 有点像 windows 系统中的控制面板,会建立统一的数据库文件,详细记录软件信息并能够自动分析依赖关系。目前 rpm 的优势已经被公众所认可,使用范围也已不局限在红帽系统中了。
常见的rpm软件包命令
rpm -ivh filename.rpm #安装软件的命令格式
rpm -uvh filename.rpm #升级软件的命令格式
rpm -e filename.rpm #卸载软件的命令格式
rpm -qpi filename.rpm #查询软件描述信息的命令格式
rpm -qpl filename.rpm #列出软件文件信息的命令格式
rpm -qf filename.rpm #查询文件属于哪个rpm的命令格式
3、yum命令
yum repolist all #列出所有仓库
yum list all #列出仓库中所有软件包
yum info 软件包名称 #查看软件包信息
yum install 软件包名称 #安装软件包
yum reinstall 软件包名称 #重新安装软件包
yum update 软件包名称 #升级软件包
yum remove 软件包 #移除软件包
yum clean all #清除所有仓库缓存
yum check-update #检查课更新的软件包
yum grouplist #查看系统中已经安装的软件包组
yum groupinstall 软件包组 #安装指定的软件包组
yum groupremove 软件包组 #移除指定的软件包组
yum groupinfo 软件包组 #查询指定的软件包组信息
4、ps 命令
ps命令用于查看系统中的进程状态,格式为 ps [参数]。
-a:显示所有进程(包括其他用户的进程)
-u:用户以及其他详细信息
-x:显示没有控制终端的进程
在linux系统中,有5种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自含义如下所示:
r(运行):进程正在运行或在运行队列中等待。
s(中断):进程处于休眠中,当某个条件形成后或者收到信号时,则脱离该状态。
d(不可中断):进程不响应系统异步信号,即使用kill命令也不能将其中断。
z(僵死):进程已经终止,但进程描述符依然存在,直到父进程调用wait4()系统函数后将进程释放。
t(停止):进程收到停止信号后停止运行。
5、top 命令
top命令用于动态地监视进程活动与系统负载等信息,格式为top。
top命令相当强大,能够动态地查看系统运维状态,完全可将它看作linux中的“强化版的windows任务管理器”。top命令的运行界面如下图示:
上图中,top命令执行结果的前5行为系统整体的统计信息,其代表的含义如下:
第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。
第4行:物流内存总数、内存使用量、内存空闲量、作为内核缓存的 内存量。
第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
6、pidof 命令
pidof命令用于查询某个指定服务进程的pid值,格式为“pifof [参数] [服务名称]”。
1 [root@rhel_10 ~]# pidof sshd 2 36764 1588 3 4 [root@rhel_10 ~]# ps -aux | grep sshd 5 root 1588 0.0 0.1 82956 3600 ? ss 14:10 0:00 /usr/sbin/sshd -d 6 root 36764 0.0 0.2 136012 5376 ? ss 17:36 0:02 sshd: root@pts/2 7 root 40539 0.0 0.0 112640 976 pts/2 r+ 22:31 0:00 grep --color=auto sshd
7、kill命令
kill命令用于终止某个指定pid的服务进程,格式为kill [参数] [进程pid]。
8、killall命令
killall命令用于终止某个指定名称的服务所对应的全部进程,格式为“killall [参数] [进程名称]”。
二、系统状态检测命令
接下来逐个讲解与网卡网络、系统内核、系统负载、内存使用情况、当前启用终端数量、历史登录记录、命令执行记录以及救援诊断等相关命令的使用方法,这些命令都超级实用。
1、ifconfig命令
ifconfig命令用于获取网卡配置与网络状态等信息,格式为“ifconfig [网络设备] [参数]”。
使用ifconfig命令其实主要是查看网卡名称、inet参数后的ip地址、ether参数后面的网卡物理地址(又称mac地址)以及rx、tx的接收数据包与发送数据包的个数及累计流量:
1 [root@centos110 ~]# ifconfig 2 ens33: flags=4163<up,broadcast,running,multicast> mtu 1500 3 inet 192.168.1.110 netmask 255.255.255.0 broadcast 192.168.1.255 4 inet6 fe80::20c:29ff:fe5f:b39f prefixlen 64 scopeid 0x20<link> 5 ether 00:0c:29:5f:b3:9f txqueuelen 1000 (ethernet) 6 rx packets 4183 bytes 415355 (405.6 kib) 7 rx errors 0 dropped 0 overruns 0 frame 0 8 tx packets 941 bytes 81789 (79.8 kib) 9 tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0 10 11 lo: flags=73<up,loopback,running> mtu 65536 12 inet 127.0.0.1 netmask 255.0.0.0 13 inet6 ::1 prefixlen 128 scopeid 0x10<host> 14 loop txqueuelen 1000 (local loopback) 15 rx packets 72 bytes 8088 (7.8 kib) 16 rx errors 0 dropped 0 overruns 0 frame 0 17 tx packets 72 bytes 8088 (7.8 kib) 18 tx errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2、uname命令
uname命令用于查看系统内核与系统版本等信息,格式为“uname [-a]”。
在使用uname命令时,一般会固定搭配上 -a 参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息。
1 [root@centos110 ~]# uname -a 2 linux centos110 3.10.0-862.14.4.el7.x86_64 #1 smp wed sep 26 15:12:11 utc 2018 x86_64 x86_64 x86_64 gnu/linux
查看当前系统版本的详细信息,需要查看redhat-release文件,命令及相应的结果如下:
1 [root@centos110 ~]# cat /etc/redhat-release 2 centos linux release 7.5.1804 (core)
3、uptime命令
作用:查看系统的负载信息,格式为uptime。
uptime命令可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。
平均负载值指的是系统在最近1分钟、5分钟、15分钟内的压力情况;
负载值越低越好,尽量不要长期超过1,在生产环境中不要超过5。
1 [root@centos110 ~]# uptime 2 14:04:46 up 4:35, 2 users, load average: 0.00, 0.01, 0.05
4、free命令
作用:显示当前系统中内存的使用量信息,格式为“free [-h]”。
为保证linux系统不会因资源耗尽而突然宕机,运维人员需要时刻关注内存的使用量。
1 [root@centos110 ~]# free -h
内存总量 已用量 可用量 进程共享的 硬盘缓存的 可用内存量
内存量 内存量 2 total used free shared buff/cache available 3 mem: 1.9g 742m 755m 10m 484m 1.0g 4 swap: 2.0g 0b 2.0g
5、who命令
作用:查看当前登入主机的用户终端信息,格式为“who [参数]”。
who命令可以快速显示出所有正在登陆本机的用户的名称及他们正在开启的终端信息。
1 [root@centos110 ~]# who
登陆用户名 终端设备 登陆到系统的时间
2 root :0 2018-10-03 09:56 (:0) 3 root pts/0 2018-10-03 09:56 (192.168.1.118)
6、last命令
作用:查看所有系统的登陆记录,格式为“last [参数]”。
本机的登陆信息以日志文件的形式保存在系统中,可以很容易进行修改。
千万不要单纯以该命令的输出信息而判断系统有无被恶意入侵!
1 [root@centos110 ~]# last 2 root pts/0 192.168.1.118 wed oct 3 09:56 still logged in 3 root :0 :0 wed oct 3 09:56 still logged in 4 reboot system boot 3.10.0-862.14.4. wed oct 3 09:29 - 14:18 (04:49) 5 reboot system boot 3.10.0-862.el7.x wed oct 3 09:14 - 14:18 (05:04) 6 root pts/3 192.168.1.118 tue oct 2 17:40 - 00:05 (06:25) 7 root pts/2 :0 tue oct 2 17:39 - 09:12 (15:32) 8 root pts/1 192.168.1.118 tue oct 2 16:54 - 19:37 (02:42) 9 root pts/0 192.168.1.118 tue oct 2 15:38 - 19:34 (03:55) 10 root pts/0 192.168.1.118 tue oct 2 12:05 - 15:38 (03:33) 11 root :0 :0 tue oct 2 12:04 - 09:12 (21:07) 12 reboot system boot 3.10.0-862.el7.x tue oct 2 11:56 - 14:18 (1+02:22)
7、history命令
作用:显示历史执行过的命令,格式为“history [-c]”。
默认显示出当前用户在本地计算机中执行过的最近1000条命令记录。
如果觉得1000不够用,可以自定义/etc/profile文件中的histsize变量值。
参数 -c : 清除所有的命令历史记录。
“!编码数字”:重复执行某一次的命令。
历史命令会被保存到用户家目录中的 .bash_history 隐藏文件中,可用cat命令查看。
8、sosreport 命令(记为sos-report)
作用:收集系统配置及架构信息并输出诊断文档,格式为sosreport。
[root@centos110 ~]# sosreport sosreport (version 3.5) this command will collect diagnostic and configuration information from this centos linux system and installed applications. an archive containing the collected information will be generated in /var/tmp/sos.cx0fud and may be provided to a centos support representative. any information provided to centos will be treated in accordance with the published support policies at: https://wiki.centos.org/ the generated archive may contain data considered sensitive and its content should be reviewed by the originating organization before being passed to any third party. no changes will be made to system configuration. press enter to continue, or ctrl-c to quit. 此处单击回车键确认收集信息
please enter your first initial and last name [centos110]:此处单击回车键确认主机编号
please enter the case id that you are generating this report for []:此处单击回车键来确认主机编号
setting up archive ...
setting up plugins ...
running plugins. please wait ...
running 97/97: yum...
creating compressed archive...
your sosreport has been generated and saved in:
/var/tmp/sosreport-centos110-20181003144212.tar.xz
the checksum is: fe27be034c15d8a9eba22b3e3e30f0cc
please send this file to your support representative.
[root@centos110 sosreport-centos110-20181003144212]# pwd /var/tmp/sosreport-centos110-20181003144212 [root@centos110 sosreport-centos110-20181003144212]# ls boot dmidecode installed-rpms lib lspci ps sos_commands sys var chkconfig etc ip_addr lsb-release mount pstree sos_logs uname version.txt date free java lsmod netstat root sos_reports uptime vgdisplay df hostname last lsof proc route sos_strings usr
三、文本文件编辑命令
1、cat命令
用于查看纯文本文件(内容较少的),格式为“cat [选项] [文件]”。
-n:查看文本内容时显示行号。
2、more命令
用于查看纯文本文件(内容较多的),格式为“more [选项] 文件”。
3、head命令
用于查看纯文本文档的前n行,格式为“head [选项] [文件]”。
-n:默认查看前10行
[root@centos110 ~]# head -n 20 initial-setup-ks.cfg #查看前20行内容 #version=devel # x window system configuration information xconfig --startxonboot # license agreement eula --agreed # system authorization information auth --enableshadow --passalgo=sha512 # use cdrom installation media cdrom # use graphical install graphical # run the setup agent on first boot firstboot --enable # system services services --disabled="chronyd" # keyboard layouts keyboard --vckeymap=us --xlayouts='us' # system language lang en_us.utf-8 --addsupport=zh_cn.utf-8
4、tail命令
查看纯文本文档的后n行或持续刷新内容,格式为“tail [选项] [文件]”。
[root@centos110 ~]# tail -n 10 initial-setup-ks.cfg #查看文档的后10行内容 %end %addon com_redhat_kdump --disable --reserve-mb=128m %end %anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end
想要实时查看最新日志文件时,使用“tail -f 文件名”。
[root@centos110 ~]# tail -f /var/log/messages oct 3 14:45:02 centos110 systemd: started session 61 of user root. oct 3 14:45:02 centos110 systemd: starting session 61 of user root. oct 3 14:50:01 centos110 systemd: started session 62 of user root. oct 3 14:50:01 centos110 systemd: starting session 62 of user root. oct 3 15:00:01 centos110 systemd: started session 64 of user root. oct 3 15:00:01 centos110 systemd: starting session 64 of user root. oct 3 15:00:01 centos110 systemd: started session 63 of user root.
5、tr 命令
tr 命令用于替换文本文件中的字符,格式为“tr [原始字符] [目标字符]”。
把某个文本内容中的英文全部替换为大写:
[root@centos110 ~]# cat anaconda-ks.cfg | tr [a-z] [a-z] #version=devel # system authorization information auth --enableshadow --passalgo=sha512 # use cdrom installation media cdrom # use graphical install graphical # run the setup agent on first boot firstboot --enable ignoredisk --only-use=sda # keyboard layouts keyboard --vckeymap=us --xlayouts='us' # system language lang en_us.utf-8 --addsupport=zh_cn.utf-8 # network information network --bootproto=dhcp --device=ens33 --ipv6=auto --activate network --hostname=localhost.localdomain # root password rootpw --iscrypted $6$pryaxltwb.t81zgw$desita1qmaytl/tpsmxdp9hesk9pb8vqtbpmsvurb4gp2xph9cran8nrrpwnbmht4mih4nt7sclexbn2hri5y0 # system services services --disabled="chronyd" # system timezone timezone asia/shanghai --isutc --nontp # x window system configuration information xconfig --startxonboot # system bootloader configuration bootloader --location=mbr --boot-drive=sda # partition clearing information clearpart --none --initlabel # disk partitioning information part /boot --fstype="xfs" --ondisk=sda --size=300 part swap --fstype="swap" --ondisk=sda --size=2048 part pv.969 --fstype="lvmpv" --ondisk=sda --size=15058 part /var --fstype="xfs" --ondisk=sda --size=3072 volgroup centos --pesize=4096 pv.969 logvol / --fstype="xfs" --size=15056 --name=root --vgname=centos %packages @^graphical-server-environment @base @core @desktop-debugging @development @dial-up @fonts @gnome-desktop @guest-agents @guest-desktop-agents @hardware-monitoring @input-methods @internet-browser @multimedia @print-client @x11 %end %addon com_redhat_kdump --disable --reserve-mb='128m' %end %anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end
6、wc 命令
用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。
wc 参数: -l:只显示行数 -w:只显示单词数 -c:只显示字节数
在linux系统中,passwd是用来保存系统账户信息的文件,要统计当前系统中有多少个用户,可以使用以下命令进行查询:
[root@centos110 ~]# wc -l /etc/passwd 42 /etc/passwd
7、stat 命令
用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”。
[root@centos110 ~]# stat anaconda-ks.cfg file: ‘anaconda-ks.cfg’ size: 1828 blocks: 8 io block: 4096 regular file device: fd00h/64768d inode: 26145971 links: 1 access: (0600/-rw-------) uid: ( 0/ root) gid: ( 0/ root) access: 2018-10-03 14:42:14.819234069 +0800 #读取时间 modify: 2018-09-23 15:42:17.364869932 +0800 #修改时间 change: 2018-09-23 15:42:17.364869932 +0800 #更改时间 birth: -
8、cut 命令
用于按“列”提取文本字符,格式为“cut [参数] 文本”。
在linux系统中,如何准确地提取出最想要的数据,是我们应该重点学习的内容。
按列搜索,不仅要使用 -f 参数来设置需要看的列数,还需要使用 -d 参数来设置间隔符号:
使用以下命令提取出passwd文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容:
1 [root@centos110 ~]# head -n 2 /etc/passwd 2 root:x:0:0:root:/root:/bin/bash 3 bin:x:1:1:bin:/bin:/sbin/nologin 4 5 [root@centos110 ~]# cut -d : -f 1 /etc/passwd 6 root 7 bin 8 daemon 9 adm 10 lp 11 sync 12 shutdown 13 halt 14 mail
9、diff 命令
用于比较多个文本文件的差异,格式为“diff [参数] 文件”。
--brief:判断两个文件是否不同
-c:描述文件内容具体的不同地方
[root@centos110 ~]# cat diff_a.txt welcome to linuxprobe.com red hat certified free linux lessons professional guidance linux course [root@centos110 ~]# cat diff_b.txt welcome tooo linuxprobe.com red hat certified free linux lessons ////////....../////// professional guideance linux course [root@centos110 ~]# diff --brief diff_a.txt diff_b.txt #判断两个文件是否不同 files diff_a.txt and diff_b.txt differ [root@centos110 ~]# diff -c diff_a.txt diff_b.txt #描述文件内容具体的不同地方 *** diff_a.txt 2018-10-03 15:46:43.434378118 +0800 --- diff_b.txt 2018-10-03 15:48:53.087375053 +0800 *************** *** 1,6 **** ! welcome to linuxprobe.com red hat certified ! free linux lessons ! professional guidance linux course - --- 1,7 ---- ! welcome tooo linuxprobe.com ! red hat certified ! free linux lessons ! ////////....../////// ! professional guideance linux course