1. 常用系统工作命令
1.1 常用系统工作命令笔记
echo
命令描述:echo命令用于在终端输出字符串或变量提取后的值。
命令格式:echo [字符串 | $变量]
命令用法示例:
- 显示普通字符串
- 显示变量
首先在shell环境中定义一个临时变量name。
export name="Tom"
使用echo命令将变量name的值显示到终端。
echo $name
输出结果:
- 显示结果定向至文件
以下命令会将文本This is a test text.输出重定向到文件test.txt中,如果文件已存在,将会覆盖文件内容,如果不存在则创建。其中>符号表示输出重定向。
echo "This is a test text." > test.txt
如果您希望将文本追加到文件内容最后,而不是覆盖它,请使用>>输出追加重定向符号。
- 显示命令执行结果
以下命令将会在终端显示当前的工作路径。
echo `pwd`
使用$(command)形式可以达到相同效果。
echo $(pwd)
输出结果:
date
命令描述:date命令用于显示和设置系统的时间和日期。
命令格式:date [选项] [+格式]
其中,时间格式的部分控制字符解释如下:
字符 |
说明 |
%a |
当地时间的星期名缩写(例如: 日,代表星期日) |
%A |
当地时间的星期名全称 (例如:星期日) |
%b |
当地时间的月名缩写 (例如:一,代表一月) |
%B |
当地时间的月名全称 (例如:一月) |
%c |
当地时间的日期和时间 (例如:2005年3月3日 星期四 23:05:25) |
%C |
世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20) |
%d |
按月计的日期(例如:01) |
%D |
按月计的日期;等于%m/%d/%y |
%F |
完整日期格式,等价于 %Y-%m-%d |
%j |
按年计的日期(001-366) |
%p |
按年计的日期(001-366) |
%r |
当地时间下的 12 小时时钟时间 (例如:11:11:04 下午) |
%R |
24 小时时间的时和分,等价于 %H:%M |
%s |
自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数 |
%T |
时间,等于%H:%M:%S |
%U |
一年中的第几周,以周日为每星期第一天(00-53) |
%x |
当地时间下的日期描述 (例如:12/31/99) |
%X |
当地时间下的时间描述 (例如:23:13:48) |
%w |
一星期中的第几日(0-6),0 代表周一 |
%W |
一年中的第几周,以周一为每星期第一天(00-53) |
命令用法示例:
- 按照默认格式查看当前系统时间
date
输出结果:
- 按照指定格式查看当前系统时间
date "+%Y-%m-%d %H:%M:%S"
输出结果:
- 查看今天是当年中的第几天
date "+%j"
输出结果:
- 将系统的当前时间设置为2020年02月20日20点20分20秒
date -s "20200220 20:20:20"
输出结果:
- 校正系统时间,与网络时间同步
a. 安装ntp校时工具
yum -y install ntp
b. 用ntpdate从时间服务器更新时间
ntpdate time.nist.gov
输出结果:
wget
命令描述:在终端中下载文件。
命令格式:wget [参数] 下载地址
参数说明:
参数 |
作用 |
-b |
后台下载 |
-P |
下载到指定目录 |
-t |
最大重试次数 |
-c |
断点续传 |
-p |
下载页面内所有资源,包括图片、视频等 |
-r |
递归下载 |
命令使用示例:
下载一张图片到路径/root/static/img/中,-p参数默认值为当前路径,如果指定路径不存在会自动创建。
wget -P /root/static/img/
http://img.alicdn.com/tfs/TB1.R._t7L0gK0jSZFxXXXWHVXa-2666-1500.png
输出结果:
ps
命令描述:ps命令用于查看系统中的进程状态。
命令格式:ps [参数]。
命令参数说明:
参数 |
作用 |
-a |
显示现行终端机下的所有程序,包括其他用户的程序 |
-u |
以用户为主的格式来显示程序状况 |
-x |
显示没有控制终端的进程,同时显示各个命令的具体路径 |
-e |
列出程序时,显示每个程序所使用的环境变量 |
-f |
显示当前所有的进程 |
-t |
指定终端机编号,并列出属于该终端机的程序的状况 |
命令使用示例:
ps -ef | grep sshd
输出结果:
top
命令描述:top命令动态地监视进程活动与系统负载等信息。
命令使用示例:
top
输出结果:
命令输出参数解释:
以上命令输出视图中分为两个区域,一个统计信息区,一个进程信息区。
- 统计信息区
- 第一行信息依次为:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
- 第二行信息依次为:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
- 第三行信息依次为:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。
- 第四行信息依次为:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
- 第五行信息依次为:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、预加载内存量。
- 进程信息区
列名 |
含义 |
PID |
进程ID |
USER |
进程所有者的用户名 |
PR |
进程优先级 |
NI |
nice值。负值表示高优先级,正值表示低优先级 |
VIRT |
进程使用的虚拟内存总量,单位kb |
RES |
进程使用的、未被换出的物理内存大小,单位kb |
SHR |
共享内存大小,单位kb |
S |
进程状态D:不可中断的睡眠状态R:正在运行S:睡眠T:停止Z:僵尸进程 |
%CPU |
上次更新到现在的CPU时间占用百分比 |
%MEM |
进程使用的物理内存百分比 |
TIME+ |
进程使用的CPU时间总计,单位1/100秒 |
COMMAND |
命令名 |
按 q 键退出监控页面。
pidof
命令描述:pidof命令用于查询指定服务进程的PID值。
命令格式:pidof [服务名称]。
命令参数说明:
参数 |
说明 |
-s |
仅返回一个进程号 |
-c |
只显示运行在root目录下的进程,这个选项只对root用户有效 |
-o |
忽略指定进程号的进程 |
-x |
显示由脚本开启的进程 |
命令使用示例:
查询出crond服务下的所有进程ID。
pidof crond
输出结果:
kill
命令描述:kill命令用于终止指定PID的服务进程。
kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。
命令格式:kill [参数] [进程PID]。
命令使用示例:
删除pid为1247的进程。
kill -9 1247
killall
命令描述:killall命令用于终止指定名称的服务对应的全部进程。
命令格式:killall [进程名称]。
命令使用示例:
删除crond服务下的所有进程。
killall crond
1.2 常用系统工作命令总结
echo命令用于在终端输出字符串或变量提取后的值。(重要,写shell脚本必用)
date命令用于显示和设置系统的时间和日期。(重要,很多bug找不到原因时,看看系统时间和本地时间是否一致,说不定有意外收获)
wget在终端中下载文件。(重要,安装一些不用yum安装的软件)
ps命令用于查看系统中的进程状态。(十分重要,查看进程信息)
top命令动态地监视进程活动与系统负载等信息。(十分重要!!!,写程序调优和状态检测必备,每一个含义都要了解)
pidof命令用于查询指定服务进程的PID值。(可以使用ps代替)
kill命令用于终止指定PID的服务进程。(十分重要,重启程序有时候的不得已操作)
一般配合ps -ef使用,如
ps -ef|grep tomcat 找到对应的程序,再使用kill 将该程序kill掉。
killall命令用于终止指定名称的服务对应的全部进程。(慎用,可以不记)
2. 系统状态检测命令
2.1 系统状态检测命令笔记
ifconfig
命令描述:ifconfig命令用于获取网卡配置与网络状态等信息。
命令使用示例:
- 获取网卡配置与网络状态等信息。
ifconfig
命令输出说明:
- 第一部分的第一行显示网卡状态信息。
- eth0表示第一块网卡。
- UP代表网卡开启状态。
- RUNNING代表网卡的网线被接上。
- MULTICAST表示支持组播。
- 第二行显示网卡的网络信息。
- inet(IP地址):172.16.132.195。
- broadcast(广播地址):172.16.143.255。
- netmask(掩码地址):255.255.240.0。
- RX表示接收数据包的情况,TX表示发送数据包的情况。
- lo表示主机的回环网卡,是一种特殊的网络接口,不与任何实际设备连接,而是完全由软件实现。与回环地址(127.0.0.0/8 或 ::1/128)不同,回环网卡对系统显示为一块硬件。任何发送到该网卡上的数据都将立刻被同一网卡接收到。
uname
命令描述:uname命令用于查看系统内核与系统版本等信息。
命令语法:uname [-amnrsv][--help][--version]
命令使用示例:
- 显示系统信息。
uname -a
命令输出结果:
- 显示当前系统的硬件架构。
uname -i
命令输出结果:
- 显示操作系统发行编号。
uname -r
命令输出结果:
- 显示操作系统名称。
uname -s
命令输出结果:
- 显示主机名称。
uname -n
命令输出结果:
uptime
命令描述:uptime 用于查看系统的负载信息。
命令使用示例:
- 查看系统的负载信息。
uptime
命令输出说明:
负载信息 |
命令输出值 |
当前服务器时间 |
14:20:27 |
当前服务器运行时长 |
2 min |
当前用户数 |
2 users |
当前负载情况 |
load average: 0.03, 0.04, 0.02(分别取1min,5min,15min的均值) |
free
命令描述:free用于显示当前系统中内存的使用量信息。
命令语法:free [-bkmotV][-s <间隔秒数>]
命令参数说明:
参数 |
说明 |
-b |
以Byte为单位显示内存使用情况 |
-k |
以KB为单位显示内存使用情况 |
-m |
以MB为单位显示内存使用情况 |
-h |
以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。 |
命令使用示例:
- 显示当前系统中内存的使用量信息。
free -h
命令输出说明:
参数 |
说明 |
total |
物理内存总数 |
used |
已经使用的内存数 |
free |
空间的内存数 |
share |
多个进程共享的内存总额 |
buff/cache |
应用使用内存数 |
available |
可用的内存数 |
Swap |
虚拟内存(阿里云ECS服务器默认不开启虚拟内存) |
who
命令描述:who 命令显示关于当前在本地系统上的所有用户的信息。
命令使用示例:
- 显示当前登录系统的用户
who
- 显示用户登录来源
who -l -H
- 只显示当前用户
who -m -H
- 精简模式显示
who -q
last
命令描述: last 命令用于显示用户最近登录信息。
命令使用示例:
- 显示用户最近登录信息。
last
由于这些信息都是以日志文件的形式保存在系统中,黑客可以很容易地对内容进行篡改,所以该命令输出的信息并不能作为服务器是否被入侵的依据。
history
命令描述:history命令用于显示历史执行过的命令。
bash默认记录1000条执行过的历史命令,被记录在~/.bash_history文件中。
命令使用示例:
- 显示最新10条执行过的命令。
history 10
- 清除历史记录。
history -c
2.2 系统状态检测命令总结
ifconfig命令用于获取网卡配置与网络状态等信息。(十分重要)
这个命令只能看已经适配好的网卡信息,如果硬件的网卡未被识别,可以安装lshw,使用lshw -c network 查看所有物理网卡信息。
uname命令用于查看系统内核与系统版本等信息。(重要)
uptime 用于查看系统的负载信息。(重要)
free用于显示当前系统中内存的使用量信息。(重要)
who 命令显示关于当前在本地系统上的所有用户的信息。
last 命令用于显示用户最近登录信息。
history命令用于显示历史执行过的命令。(十分重要,解决不了的问题,大神帮你调试完,想偷学大神打了那些命令)