shell命令能够帮助你监测你的机器,包括当前机器上运行的程序(进程)、机器的磁盘使用情况等。熟悉这些监测可以在开发中避免一些如"存储打爆"之类的问题。
<进程监测>
进程是程序及其数据在计算机上的一次运行活动。进程会占用CPU、内存等资源,所以我们要根据资源情况启动进程,并及时杀掉不用的进程。
- ps
ps命令可以查看当前时刻运行的进程。无参数情况下,ps命令会显示运行在当前控制台下的属于当前用户的进程。如下图,我们运行了base shell(之前说过,shell也是一个程序)和ps命令本身。
ps命令曾经有两个版本,linux开发者整合后形成现在的ps命令,ps命令支持3种不同类型的命令行参数:
- Unix风格:参数前单破折线;
- BSD风格:参数前无破折线:
- GNU风格:参数前双破折线;
ps命令每种风格都有很多参数,记住所有参数不太现实且无意义,我们在实际使用往往只需要特定几个参数就可以搞定。个人推荐使用 ps -ef 来查看所有进程的拓展信息
可以看到输出了所有的进程及信息。其中各列的含义是:
UID启动进程的用户PID进程IDPPID父进程的进程号C进程声明周期的CPU利用率STIME进程启动时间TTY进程启动是的终端设备TIME运行进程需要的累积CPU时间CMD启动的程序名称
注:使用 -l 参数,可以进一步拓展展示信息。
通常配合grep命令,我们可以筛选我们想要找到的进程。比如找到test.sh这个脚本的运行信息。
2.结束进程
kill命令可通过进程ID(PID)给进程发信号,结束进程(前提是你为该进程的所属用户或root用户)。
具体参数截取书中表格做参考
kill PID
kill -9 PID
kill -s KILL PID #效果等同kill -KILL PID
默认kill命令像进程发送TERM信号,可以通过 -[信号名或信号值] 或 -s [信号名或信号值] 的方式发送不同信号。如默认TERM信号可能无法杀死一些"顽固"进程,这时候,kill -9 或 kill -s KILL令进程无条件终止。
killall ,该命令可以根据进程名结束进程,且支持通配符。
killall http*
<磁盘监测>
由上节知,Linux文件系统将所有的磁盘都并入一个虚拟目录下。我们在使用新的存储媒体之前,需要把它放到虚拟目录下。这项工作称为挂载(mounting)。
- mount 挂载
mount命令会输出当前系统上挂载的设备。
mount命令提供如下四部分信息:
- 媒体的设备文件
- 媒体挂载到虚拟目录的挂载点(on 后为挂载路径)
- 文件系统类型(type 后为文件系统类型)
- 已挂载媒体的访问状态
手动挂载命令
mount -t type device directory
type参数指定了磁盘被格式化的文件系统类型,Linux可识别很多文件系统类型。
媒体设备挂载到了虚拟目录后,root用户就有了对该设备的所有访问权限,而其他用户的访问则会被限制。可以通过设定目录权限指定用户对设备的访问权限。
- umount 卸载
从Linux系统上移除一个可移动设备时,不能直接从系统上移除,而应该先卸载。umount可以直接接挂载点(挂载路径)或挂载的设备名(如/dev/vdb)来卸载。
umount directory
umount device
注:如果在卸载设备时,系统提示设备繁忙,无法卸载设备,通常是有进程还在访问该设备或使用该设备上的文件。 这时可用lsof命令获得使用它的进程信息,然后在应用中停止使用该设备或停止该进程。lsof命令的用法很简 单:lsof /path/to/device/node,或者lsof /path/to/mount/point。
*3. *df 查看磁盘空间
df命令可以查看当前时刻所有已挂载磁盘的使用情况。
使用 -h 参数,可以更易读的显示。
- du 显示文件大小
du dir
du dir/*
du file
du命令可以显示指定目录/文件的大小。在显示中输出的最左边的数值是每个文件或目录占用的磁盘块数。使用 -h 可进行转换。通常还会用到 -s 参数显示总和。
-s:显示总计。
-h:按用户易读的格式输出大小,即用K替代千字节,用M替代兆字节,用G替代吉字
du命令默认显示目录/子目录,最左侧显示占用的磁盘块数。如果要显示文件,则需要指定文件。推荐使用下面命令,统计当前目录各文件大小。
du -sh .*
版权归原作者 fatfatmomo 所有, 如有侵权,请联系我们删除。