目录
-
echo命令
-
date命令
-
reboot命令
-
poweroff命令
-
wget命令
-
ps命令
-
top命令
-
pidof命令
-
kill命令
-
killall命令
-
pkill命令
一、echo命令
echo命令用于在终端输出字符串或变量提取后的值。
格式:
echo [字符串] [$变量]
实例:
1)指定字符串“tourby.com”输出到终端屏幕
[root@VM_0_10_centos ~]# echo tourby.com
tourby.com
2)使用$变量方式提取SHELL变量的值并将其输出到屏幕上
[root@VM_0_10_centos ~]# echo $SHELL
/bin/bash
二、date命令
date命令用于显示及设置系统的时间或日期。在date命令后面输入以“+”号开头的参数,即可按照指定格式输出系统的时间或日期。在日常工作时可以把备份数据的命令与指定的时间信息结合到一起使用。
格式:
Usage: date [OPTION]... [+FORMAT]
or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
或
date [选项] [+指定格式]
常见参数及作用:
参数 | 作用 |
-d, --date=STRING | 显示STRING指定的时间 |
-f, --file=DATEFILE | 类似--date参数显示DATEFILE文件中的每行时间 |
-I[TIMESPEC],--iso-8601[=TIMESPEC] |
以ISO 8601 格式显示日期/时间。TIMESPEC为”date”(只显示日期)、”hours”、”minutes”、”senconds”(显示时间精度)之一,默认为”date”。 |
-r, –reference=FILE | 显示文件最后修改日期 |
-R, –rfc-2822 | 以RFC-2822兼容日期格式显示时间 |
-s, –set=STRING | 设置时间为STRING |
-u, –utc, –universal | 显示或设定为Coordinated Universal Time时间格式 |
命令参数实例:
[root@VM_0_10_centos ~]# date
Tue Oct 22 10:07:58 CST 2019
[root@VM_0_10_centos ~]# date -I
2019-10-22
[root@VM_0_10_centos ~]# date -Ihours
2019-10-22T10+0800
[root@VM_0_10_centos ~]# date -Iminutes
2019-10-22T10:08+0800
[root@VM_0_10_centos ~]# date -Iseconds
2019-10-22T10:08:54+0800
[root@VM_0_10_centos ~]# date -R
Tue, 22 Oct 2019 10:09:34 +0800
[root@VM_0_10_centos ~]# date -u
Tue Oct 22 02:10:22 UTC 2019
#设置当前系统时间为“2019年10月23日10点30分”(下面命令显示的结果一样)
[root@VM_0_10_centos ~]# date -s "20191023 1030"
[root@VM_0_10_centos ~]# date -s "20191023 10:30:00"
Wed Oct 23 10:30:00 CST 2019
参数 | 作用 |
%F | 日期,同%Y-%m-%d |
%A | 星期的完整名称 (Sunday..Saturday) |
%a | 星期的缩写(Sun..Sat) |
%D | 日期(mm/dd/yy) |
%d | 一个月的第几天(01..31) |
%t | 跳格键[Tab键] |
%T | 24小时制时间(hh:mm:ss) |
%G | 年份(yyyy) |
%g | 年份(yy) |
%e | 一个月的第几天 ( 1..31) |
%B | 月份的完整名称(January..December) |
%b | 月份的缩写(Jan..Dec) |
%H | 小时(00~23) |
%h | 同%b |
%I | 小时(01~12) |
%Y | 年份 (1970…) |
%y | 年份(00..99) |
%M | 分钟(00~59) |
%m | 月份(01~12) |
%S | 秒(00~59) |
%j | 几年中的第几天(001~366) |
%X | 时间(%H:%M:%S) |
%x | 日期(mm/dd/yy) |
%p | AM or PM |
%P | am or pm |
格式参数实例:
[root@VM_0_10_centos ~]# date +"Today is %A"
Today is Tuesday
[root@VM_0_10_centos ~]# date +"DATE:%b.%e, %G"
DATE:Oct.22, 2019
[root@VM_0_10_centos ~]# date +"%x %X"
10/22/2019 10:35:27 AM
[root@VM_0_10_centos ~]# date +"%Y-%m-%d %H:%M:%S"
2019-10-22 10:37:58
[root@VM_0_10_centos ~]# date +"%Y-%m-%d %H:%M:%S %p"
2019-10-22 10:38:25 AM
[root@VM_0_10_centos ~]# date +"%Y-%m-%d %I:%M:%S %p"
2019-10-22 10:38:34 AM
常用时间格式:
#以“年-月-日 时:分:秒”或“年-月-日”格式查看当前系统时间
[root@VM_0_10_centos ~]# date +"%Y-%m-%d %H:%M:%S"
2019-10-22 10:39:34
[root@VM_0_10_centos ~]# date +"%Y-%m-%d"
2019-10-22
日期加减运算:
[root@VM_0_10_centos ~]# date
Tue Oct 22 10:59:37 CST 2019
# 日期减1或月份加1
[root@VM_0_10_centos ~]# date +"%b %e ,%G" -d "-1 day"
Oct 21 ,2019
[root@VM_0_10_centos ~]# date +"%b %e ,%G" -d "+1 month"
Nov 22 ,2019
三、reboot命令
reboot命令用于重启系统。会涉及硬件资源的管理权限,默认只有root管理员才可以关闭电脑。
reboot的工作过程差不多跟halt一样。不过它是引发主机重启。而halt是关机。它的参数与halt相差不多。
格式:
reboot [参数]
常用参数:
-n 在重开机前不做将记忆体资料写回硬盘的动作帮助(重启前不检查是否有未结束的程序)
-w 仅作测试。并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
-d 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
-f 强迫重开机,不呼叫 shutdown 这个指令
-i 在重开机之前先把所有网络相关的装置先停止
补充其他关机重启命令:
1)shutdown
#立即关闭系统且关闭电源
shutdown -h now
#10分钟之后关闭系统和电源
shutdown -h +10 "10 minute after shutdown"
#立即shutdown重启电脑。和reboot是一样的效果。
shutdown -r now
#还可以用shutdown命令实现自动定时关机的功能
shutdown -r now #关机后重启
shutdown -h now #关机后不重启
shutdown -r +10 #10分钟后重启
shutdown -r 10:00 #10点钟重启
shutdown -h +10 #10分钟后关机
shutdown -h 10:00 #10点钟关机
2)half命令
halt #立即停止系统,需要人工关闭电源
halt -p
3)init
init 0 #关机
init 6 #重启
四、poweroff命令
poweroff用于关闭系统,和reboot命令一样只有root管理员才能关闭电脑。
格式:
poweroff #立即停止系统,并且关闭电源
五、wget命令
wget命令用于在终端中下载网络文件。此命令需要配置好linux系统的管理,配置网络之后才能有效
使用之前如果没有该命令,使用yum安装:yum -y install wget
格式:
wget [参数] 下载地址
相关参数:
参数 | 作用 |
-b | 后台下载 |
-P | 下载到指定目录 |
-t, --tries=NUMBER | 最大尝试次数 |
-T | 超时等待时间 |
-c | 断点续传 |
-p | 下载页面内所有资源,包括图片、视频等 |
-r | 递归下载(慎用,会下载页面所有内容,包括网站中指向的所有地址)。如果要使用,与-l number一起,可以指定下载的层次 |
-O | 指定下载后保存的文件名 |
-o | 将软件下载的信息输出到某个日志文件 |
-Q,--limit-rate=RATE | 限速下载 |
-l,–level=number | 指定下载的层次(-l 2) |
-i | 批量下载,后接文件,在文件中填写需要下载的url,通过-i 文件名 |
-R,--reject=LIST | 拒绝接受的类型。如--reject=jpg。不接受jpg文件 |
-A,--accept=LIST | 可接受的类型。和--reject用法一样 |
-U, --user-agent=AGENT | 伪代理下载 |
实例:
1)下载单个文件(默认下载到当前目录)
wget http://cn.wordpress.org/wordpress-3.1-zh_CN.zip
下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。
2)下载时指定保存的文件名 -O(wget默认会以最后一个符合"/"的后面的字符来命令,对于动态链接的下载通常文件名会不正确。 )
wget -O wordpress.zip http://www.centos.bz/download.php?id=1080
PS:如果不加-O 文件名,默认保存为download.php?id=1080
3)限速下载文件 --limit-rate
wget --limit-rate=300k http://cn.wordpress.org/wordpress-3.1-zh_CN.zip
PS:执行wget的时候,它默认会占用全部可能的宽带下载。当你准备下载一个大文件,而你还需要下载其它文件时就可以使用限速下载
4)断点续传(重新启动下载终端的文件) -c
wget -c http://cn.wordpress.org/wordpress-3.1-zh_CN.zip
PS:在我下载一些比较打的文件时可能会突然由于网络等原因造成中断,这时就可以使用-c参数,可以继续接着下载而不是重新下载
5)后台下载(对于某些大文件时,下载,操作两不误) -b
wget -b http://cn.wordpress.org/wordpress-3.1-zh_CN.zip
可以使用tail -f wget-log查看下载情况
6)伪装代理名称下载 --user-agent
wget --user-agent=”Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16″ 下载链接
7)测试下载链接 --spider
wget --spider URL
PS:会返回一些信息,通过这些信息可判断是否能下载
8)批量下载
wget -i filelist.txt
PS:先在filelist.txt文件中写好需要下载的url
9)使用ftp下载
[root@VM_0_16_centos ~]# wge --ftp-user=ftp的用户名 --ftp-pass=ftp的密码 ftp://主机ip/ftp_hello.txt
100%[=================================================================================>] 30 --.-K/s in 0s
2019-10-22 15:48:36 (5.64 MB/s) - 'ftp_hello.txt' saved [30]
[root@VM_0_16_centos ~]# ls
ftp_hello.txt
10)利用代理服务器进行下载。如果用户的网络需要经过代理服务器,那么可以让wget通过代理服务器进行文件的下载
此时需要在当前用户的目录下创建一个.wgetrc文件。文件中可以设置代理服务器:
http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080
分别表示http的代理服务器和ftp的代理服务器。如果代理服务器需要密码则使用:
--proxy-user=USER设置代理用户
--proxy-passwd=PASS设置代理密码
这两个参数。
使用参数--proxy=on/off 使用或者关闭代理。
六、ps命令
ps命令用于查看系统中的进程状态。
格式:
# ps --help all | more
Usage:
ps [options] ==》ps [参数]
PS:ps允许参数不加(-),所以使用ps aux和ps -aux是同样的效果。短格式之间是可以合并使用,只需在前面加一个(-)即可
常用参数:
参数 | 作用 |
-a | 显示所有进程(vaok其他用户的进程) |
-u | 用户及其他详细信息 |
-x | 显示没有控制终端的进程 |
-A | 显示所有进程(等价于-e)(utility) |
-p pid | 进程使用的cpu时间 |
-u,U,--user |
选择有效的用户id或用户名 |
-U, --User |
真实的用户id信息 |
-G ,--group |
真实的用户组信息 |
-g, --group |
选择有效的组id |
-f | 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on. |
-l | 长格式(有F,wchan,C 等字段) |
h | 不显示第一行 |
-o | 用户自定义格式 |
-m | 显示所有线程 |
常见的5中运行状态:
- R运行:进程正在运行或在运行队列中等待
- S中断:进程处于休眠中,当某个条件形成后或收到信号时,则脱离该状态
- D不可中断:进程不影响系统异步信号,即便用kill命令也不能将其中断
- Z僵死:进程已终止,但进程描述符依然存在,直到父进程调用wait4()系统函数后将进程释放
- T停止:进程收到停止信号后停止运行
实例:
1)查询所有进程
ps -aux
ps -ef
- UID: 用户ID(User ID)
- PID: 进程ID(Process ID)
- PPID: 父进程的进程ID(Parent Process id)
- STIME: 启动时间
- TTY: 与进程关联的终端(tty)
- TIME: 进程使用的总cpu时间
- CMD: 正在执行的命令行命令
2)以长格式显示
ps -l
- F: 代表这个程序的旗标 (flag), 4 代表使用者为 super user
- S: 睡眠 Sleeping 休眠中, 受阻, 在等待某个条件的形成或接受到信号。
- UID: 用户ID(User ID)
- PID: 进程ID(Process ID)
- PPID: 父进程的进程ID(Parent Process id)
- C: CPU 使用的资源百分比
- PRI: 这个是 Priority (优先执行序) 的缩写,详细后面介绍
- NI: 这个是 Nice 值,在下一小节我们会持续介绍
- ADDR: 这个是 kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 "-"
- SZ: 使用掉的内存大小
- WCHAN: 目前这个程序是否正在运作当中,若为 - 表示正在运作
- TTY: 登入者的终端机位置
- TIME: 使用掉的 CPU 时间。
- CMD 所下达的指令为何
3)查看进程的启动时间、运行时间
ps -eo lstart
ps -eo etime
4)查看进程tomcat的pid、启动时间,运行时间
[root@VM_0_10_centos ~]# ps -aux | grep tomcat | grep -v grep
[root@VM_0_10_centos ~]# ps -eo pid,lstart,etime | grep 21820
21820 Sat Sep 28 17:58:03 2019 23-23:45:24
七、top命令
top命令用于动态地监视进程活动与系统负载等信息,相当于windows的任务管理器。
格式:
top
运行界面:
前面5行为系统整体的统计信息。其代表的含义如下:
- 第一行(任务队列信息):和uptime运行结果一样。分别为当前时间、系统运行时间(格式按时:分)、当前登录用户数(登录终端数)、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值。数值越小意味着负载越低)。
- 第二行(进程信息统计数据):进程总数、运行中、睡眠中、停止、僵死的进程数。
- 第三行(CPU信息统计):用户占用资源、系统内核占用资源、改变过优先级的进程资源、空闲的资源百分比、等待输入输出cpu时间、硬件cpu中断占用、软中断占用、虚拟机占用百分比。
- 第四行和第五行(内存信息):物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量;虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
内存剩余量:total=free+buff/cache(即内存总量=内存空闲总量+内核缓存量/缓存交换总量)
使用方式:
1)命令行加选项。其语法格式:top [选项]
选项:
-d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变。
-p 通过指定监控进程ID来仅仅监控某个进程的状态。 (可以指定多个,使用多个-p)
-q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
-S 指定累计模式
-s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
-i 使top不显示任何闲置或者僵死进程。
-c 显示整个命令行而不只是显示命令名
2)top工具的内置命令或交互命令的使用
f : 选择显示或隐藏对应的列的内容,进入后按a-z即可显示或隐藏
o: 可以改变列的显示顺序,进入后按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
F或O: 进入后按a-z可以将进程按照相应的列进行排序,选定排序列按回车键退出之后还可以按R对当前选定列进行排序倒转。
k : 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽
i: 忽略闲置和僵死进程。这是一个开关式命令
q: 退出程序
S: 切换到累计模式。
s : 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加
r: 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
l: 切换显示平均负载和启动时间信息。即显示影藏第一行
m: 切换显示内存信息。即显示影藏内存行
t : 切换显示进程和CPU状态信息。即显示影藏CPU行
c: 切换显示命令名称和完整命令行。 显示完整的命令。 这个功能很有用。
M : 根据驻留内存大小进行排序。
P: 根据CPU使用百分比大小进行排序。
T: 根据时间/累计时间进行排序。
W: 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法
h或者? 显示帮助画面,给出一些简短的命令总结说明
实例:
1)每隔2秒显式所有进程的资源占用情况(默认是5s)
top -d 2
2)每隔5秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
top -c
3)每隔5秒显示pid是123和pid是456的两个进程的资源占用情况
top -p 123 -p 456
4)每隔2秒显示pid是123的进程的资源使用情况,并显式该进程启动的命令行参数
top -d 2 -c -p 123
补充:
通常我们使用netstat和ps两个命令来补充top的不足。
1)监控java的线程
ps -eLf | grep java | wc -l
2)监控网络客户端连接数
netstat -n | grep tcp | grep 侦听端口 | wc -l
3)获取某进程中运行中的线程数量(PID指的是进程ID)
ls /proc/PID/task | wc -l
4)pmap命令输出进程内存的状况,可以用来分析线程堆栈
pmap PID
八、pidof命令
pidof命令查找指定名称的进程的进程号id号。每个进程的pid号是唯一的。可以通过pid来区分不同的进程
格式:
pidof [选项] [服务名称]
选项:
-s:仅返回一个进程号;
-c:仅显示具有相同“root”目录的进程;
-x:显示由脚本开启的进程;
-o:指定不显示的进程ID。
实例:
[root@VM_0_10_centos ~]# pidof nginx
12843 12842
九、kill命令
kill命令用来终止某个指定pid的服务进程。终止前台进程使用ctrl+c。kill命令是通过向进程发送指定的信号来结束相应进程的。默认情况下,采用编号为15的TERM信号。TERM信号将终止所有不能捕获该信号的进程。对于那些可以捕获该信号的进程就要用编号为9的kill信号,强行“杀掉”该进程。
格式:
kill [参数] [进程pid]
参数:
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号
-u 指定用户
常用的信号:
-HUP 1 终端断线
-INT 2 中断(同 Ctrl + C)
-QUIT 3 退出(同 Ctrl + \)
-TERM 15 终止
-KILL 9 强制终止
-CONT 18 继续(与STOP相反, fg/bg命令)
-STOP 19 暂停(同 Ctrl + Z)
实例:
1)列出所有信号名称
[root@VM_0_10_centos ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
2)查询指定某个信号的数值
kill -l [signal]
[root@VM_0_10_centos ~]# kill -l kill
9
3)杀死指定进程
[root@VM_0_10_centos ~]# ps -ef | grep tomcat | grep -v grep | awk '{print $2}' | xargs kill -9
PS:init是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 其它所有进程都是init进程的子孙。init进程是不可杀的!
十、killall命令
killall命令用于终止某个指定名称的服务所对应的全部进程。和kill不同,kill是杀死指定进程PID号,killall是杀死指定服务名的所有进程。
有些服务程序会有多个进程协同用户提供服务,如果逐个结束这个进程会比较麻烦,这时可以使用killall命令直接将这个服务名称的进程全部终止掉。
格式:
killall [参数] [服务名称]
参数:
-Z 只杀死拥有scontext 的进程
-e 要求匹配进程名称
-I 忽略小写
-g 杀死进程组而不是进程
-i 交互模式,杀死进程前先询问用户
-l 列出所有的已知信号名称
-q 不输出警告信息
-s 发送指定的信号
-v 报告信号是否成功发送
-w 等待进程死亡
--help 显示帮助信息
--version 显示版本显示
实例:
1)杀死所有同名进程
killall tomcat
2)想进程发送指定信号
killall -TERM ngixn 或者 killall -KILL nginx
十一、pkill命令
pkill命令和killall命令一样效果。killall是杀死所有进程,而pkill是按照进程名称杀死进程,可以达到杀死所有进程的目的,因为linux里面同名的进程是分主进程和子进程的。
格式:
pkill -9 进程名称
可以使用pstree命令查看进程树:
[root@VM_0_10_centos ~]# pstree -p | grep nginx
|-nginx(12842)---nginx(12843)
参数:
-t 终端号:按照终端号踢出用户
实例:
1)先使用w查看当前登录的终端用户再使用pkill -t指定踢出的终端用户。
[root@VM_0_10_centos ~]# w
15:17:06 up 63 days, 6:42, 1 user, load average: 0.04, 0.04, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 120.197.164.60 14:35 2.00s 7.26s 0.00s w
# 强制杀死从pts/0虚拟终端登录的用户
[root@VM_0_10_centos ~]# pkill -t -9 pts/0