Linux常用命令整理(2) - STEMHA's Blog

Linux常用命令整理(2)

统计与过滤

grep

用于过滤/搜索的特定字符,可用正则表达式能多种命令配合使用。

1
grep [-option] pattern file

Linux grep 命令

wc

统计指定文件中的行数、字数、字节数,并将统计结果显示输出。

1
wc [-option] 文件…

该命令统计指定文件中的行数、字数、字节数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数

1
2
$ wc testfile           # testfile文件的统计信息  
5 100 600 testfile # testfile文件的行数为5、单词数100、字节数600

Linux wc命令

进程相关

进程的挂起

1
kill -stop PID //将进程挂起(redhat)

需要重新执行当前被挂起的任务时,使用 bg %num 即可将挂起的 job 的状态由 stopped 改为 running,仍在后台执行。需要改为在前台执行时,执行fg %num 即可。
也可以使用[ctrl]+[z]

pstree

1
2
3
pstree -p    //可以显示进程树
pstree -apnh //显示进程间的关系
pstree -u //显示用户名称

Linux pstree命令

lsof (lists openfiles)

1
lsof [参数][文件]  //需要root执行(因为要访问核心内存和各种文件)

功能: 用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)。
找回/恢复删除的文件。

  • 好用的系统监视工具(神器)。
  • 有着最多开关的Linux/Unix命令之一

lsof打开的文件可以是:
1.普通文件
2.目录
3.网络文件系统的文件
4.字符或设备文件
5.(函数)共享库
6.管道,命名管道
7.符号链接
8.网络文件(例如:NFS file、网络socket,unix域名socket)
9.还有其它类型的文件,等等
lsof 菜鸟教程
Linux 命令神器:lsof

ps(process status)

1
ps [options] [--help]  //用来显示当前进程的状态

ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程。
如果想要动态的显示进程信息,就可以使用top命令。

1
2
3
4
root@ubuntu:~# ps
PID TTY TIME CMD
13777 pts/1 00:00:00 bash
14564 pts/1 00:00:00 ps

Linux ps命令

jobs

1
2
jobs[选项][参数] //用于显示Linux中的任务列表及任务状态,包括后台运行的任务。
//jobs 的状态可以是 running, stopped, Terminated

该命令可以显示任务号及其对应的进程号。其中,任务号是以普通用户的角度进行的,而进程号则是从系统管理员的角度来看的。一个任务可以对应于一个或者多个进程号。

1
2
3
4
5
6
7
8
9
10
root@ubuntu:~# jobs  
//后台没有进程,所以jobs命令的输出是空
root@ubuntu:~# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
^Z
[1]+ Stopped ping 192.168.0.1
root@ubuntu:~# jobs
[1]+ Stopped ping 192.168.0.1
root@ubuntu:~# jobs -l //-l:显示进程号;
[1]+ 14661 Stopped ping 192.168.0.1

jobs命令

fg、bg、jobs、&、ctrl + z都是与系统任务有关的常用命令

1
2
3
4
5
command& 或者 ctrl + z 让进程在后台运行 
jobs 查看后台运行的进程
fg %jobnumber 让后台的进程jobnumber到前台到前台
bg %jobnumber 让进程jobnumber到后台去
//%jobnumber 是通过 jobs 命令查到的后台正在执行的命令的序号 (不是 pid)

kill

1
kill[参数][进程号]

功能: 发送指定的信号到相应进程。不指定信号将发送SIGTERM(15)终止指定进程。如果无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。

1
2
3
4
//通过 jobs 命令查看 job 号(假设为 jobnumber)
kill %jobnumber
通过 ps 命令查看 job 的进程号(PID,假设为 pid)
//kill pid

killall

1
killall[参数][进程名] //用来结束同名的的所有进程(kill processes by name)

killall命令用于杀死指定名字的进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。

系统监测

top

1
top [参数]

显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等

free

1
free [参数]

功能: free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略

1
2
3
4
root@ubuntu:~# free
total used free shared buff/cache available
Mem: 1009176 136644 172116 628 700416 687996
Swap: 0 0 0

vmstat (virtual memory statistics)

功能: 用来显示虚拟内存的信息

1
2
3
4
root@ubuntu:~# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 172200 145008 555428 0 0 0 6 16 15 0 0 100 0 0

虚拟内存的原理:
在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。
在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。
分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。
当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。经管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作thrashing(颠簸)

iostat (I/O statistics)

1
iostat[参数][时间][次数]

功能: 通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。

Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iostat属于sysstat软件包。可以用yum install sysstat 直接安装。

命令执行

watch

1
watch[参数][命令]

可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令(也就是说定个具体时间或者隔一段时间执行一次)
watch命令

1
watch -n 1 -d 'pstree|grep http' # 每隔一秒高亮显示http链接数的变化情况。 后面接的命令若带有管道符,需要加''将命令区域归整。

at

1
at[参数][时间]

功能:在一个指定的时间执行一个指定任务,只能执行一次,且需要开启atd进程(ps -ef | grep atd查看, 开启用/etc/init.d/atd start or restart; 开机即启动则需要运行 chkconfig –level 2345 atd on)

crontab

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。

Linux crontab命令详解

##文件传输

rcp (remote file copy)

1
rcp [参数] [源文件] [目标文件]

功能:rcp命令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。

rcp(远程文件拷贝)命令用于在计算机之间拷贝文件。rcp命令有两种格式。第一种格式用于文件到文件的拷贝;第二种格式用于把文件或目录拷贝到另一个目录中。

scp (secure copy)

1
scp [参数] [源路径] [目标路径]

功能:

  • scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
  • linux的scp命令可以在linux服务器之间复制文件和目录。

wget

1
wget [参数] [URL地址]

用于从网络上下载资源,没有指定目录,下载资源回默认为当前目录。

  • 支持断点下传功能
  • 同时支持FTP和HTTP下载方式
  • 支持代理服务器

参考资料

Linux命令大全(手册)
Linux 命令大全(菜鸟教程)

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×