一、系统管理命令

对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心。熟悉了Linux常用的文件处理命令以后,这一讲介绍对系统和用户进行管理的命令。

1.df

作用:df命令用来检查【文件系统的磁盘空间占用情况】,使用权限是所有用户。
df [options]

主要参数

-s:对每个Names参数只给出占用的数据块总数。
-a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数。
-k:以1024字节为单位列出磁盘空间使用情况。
-x:跳过在不同文件系统上的目录不予统计。
-l:计算所有的文件大小,对硬链接文件则计算多次。
-i:显示inode信息而非块使用量。
-h:以容易理解的格式印出文件系统大小,例如136KB、254MB、21GB。
-P:使用POSIX输出格式。
-T:显示文件系统类型。

说明

df命令被广泛地用来生成文件系统的使用统计数据,它能显示系统中所有的文件系统的信息,包括总容量、可用的空闲空间、目前的安装点等。超级权限用户使用df命令时会发现这样的情况:某个分区的容量超过了100%。这是因为Linux系统为超级用户保留了10%的空间,由其单独支配。也就是
说,对于超级用户而言,他所见到的硬盘容量将是110%。这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%时系统管理员还可以正常工作。

应用实例

Linux支持的文件系统非常多,包括JFS、ReiserFS、ext、ext2、ext3、ISO9660、XFS、Minx、vfat、MSDOS等。使用df -T命令查看磁盘空间时还可以得到文件系统的信息:

#df -T

文件系统 类型 容量 已用 可用 已用% 挂载点

/dev/hda7 reiserfs 5.2G 1.6G 3.7G 30% /
/dev/hda1 vfat 2.4G 1.6G 827M 66% /windows/C
/dev/hda5 vfat 3.0G 1.7G 1.3G 57% /windows/D
/dev/hda9 vfat 3.0G 2.4G 566M 82% /windows/E
/dev/hda10 NTFS 3.2G 573M 2.6G 18% /windows/F
/dev/hda11 vfat 1.6G 1.5G 23M 99% /windows/G

从上面除了可以看到磁盘空间的容量、使用情况外,分区的文件系统类型、挂载点等信息也一览无遗。

2.top

作用:用来显示执行中的程序进程,使用权限是所有用户。
top [-] [d delay] [q] [c] [S] [s] [n]

主要参数

d:指定更新的间隔,以秒计算。
q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。
c:显示进程完整的路径与名称。
S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。
s:安全模式。
i:不显示任何闲置(Idle)或无用(Zombie)的行程。
n:显示更新的次数,完成后将会退出top。

应用实例

使用top命令可以监视指定用户,缺省情况是监视所有用户的进程。如果想查看指定用户的情况,在终端中按“U”键,然后输入用户名,系统就会切换为指定用户的进程运行界面。

3.free

作用:用来显示【内存】的使用情况,使用权限是所有用户。
free [-b|-k|-m] [-o] [-s delay] [-t] [-V]

主要参数

-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。
-s delay:显示每隔多少秒数来显示一次内存使用情况。
-t:显示内存总和列。
-o:不显示缓冲区调节列。

应用实例

free命令是用来查看内存使用情况的主要命令。和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过**-S参数可以使用free命令不间断地监视有多少内存在使用**,这样可以把它当作一个方便实时监控器。

#free -b -s5

使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次

4.quota

作用:用来显示【磁盘】使用情况和限制情况,使用权限超级用户。
quota [-g][-u][-v][-p] 用户名 组名

参数

-g:显示用户所在组的磁盘使用限制。
-u:显示用户的磁盘使用限制。
-v:显示没有分配空间的文件系统的分配情况。
-p:显示简化信息。

应用实例

在企业应用中磁盘配额非常重要,普通用户要学会看懂自己的磁盘使用情况。要查询自己的磁盘配额可以使用下面命令(下例中用户账号是caojh):

#quota caojh
Disk quotas for user caojh(uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hda3 58 200000 400000 41 500 1000

以上显示ID号为502的caojh账号,文件个数设置为500~1000个,硬盘空间限制设置为200MB~400MB。一旦磁盘配额要用完时,就需要删除一些垃圾文件或向系统管理员请求追加配额。

5.at

作用:用来在指定时刻执行指定的命令序列
at [-V] [-q x] [-f file] [-m] time

主要参数

-V:显示标准错误输出。
-q:许多队列输出。
-f:从文件中读取作业。
-m:执行完作业后发送电子邮件到用户。
time:设定作业执行的时间。time格式有严格的要求,由小时、分钟、日期和时间的偏移量组成,其中日期的格式为MM.DD.YY,MM是分钟,DD是日期,YY是指年份。偏移量的格式为时间+偏移量,单位是minutes、hours和days。

应用实例

#at -f data 15:30 +2 days

上面命令表示让系统在两天后的17:30执行文件data中指明的作业

6.lp

作用:lp是打印文件的命令,使用权限是所有用户。
lp [-c][-d][-m][-number][-title][-p]

主要参数

-c:先拷贝文件再打印。
-d:打印队列文件。
-m:打印结束后发送电子邮件到用户。
-number:打印份数。
-title:打印标题。
-p:设定打印的优先级别,最高为100。

应用实例

(1)使用lp命令打印多个文件

#lp 2 3 4
request id is 11 (3 file(s))

其中2、3、4分别是文件名;“request id is 11 (3 file(s)) ”表示这是第11个打印命令,依次打印这三个文件。
(2)设定打印优先级别

#lp lp -d LaserJet -p 90 /etc/aliases

通过添加“-p 90”,规定了打印作业的优先级为90。它将在优先级低于90的打印作业之前打印,包括没有设置优先级的作业,缺省优先级是50。

7.useradd

作用:用来建立用户帐号和创建用户的起始目录,使用权限是超级用户。
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name

主要参数

-c:加上备注文字,备注文字保存在passwd的备注栏中。 
-d:指定用户登入时的启始目录。
-D:变更预设值。
-e:指定账号的有效期限,缺省表示永久有效。
-f:指定在密码过期后多少天即关闭该账号。
-g:指定用户所属的群组。
-G:指定用户所属的附加群组。
-m:自动建立用户的登入目录。
-M:不要自动建立用户的登入目录。
-n:取消建立以用户名称为名的群组。
-r:建立系统账号。
-s:指定用户登入后所使用的shell。
-u:指定用户ID号。

说明

useradd可用来建立用户账号,它和adduser命令是相同的。账号建好之后,再用passwd设定账号的密码。使用useradd命令所建立的账号,实际上是保存在**/etc/passwd文本文件**中。

应用实例

建立一个新用户账户,并设置ID:

#useradd caojh -u 544

需要说明的是,设定ID值时尽量要大于500,以免冲突。因为Linux安装后会建立一些特殊用户,一般0到499之间的值留给bin、mail这样的系统账号

8.groupadd

作用:用于将新组加入系统
groupadd [-g gid] [-o]] [-r] [-f] groupname

主要参数

-g gid:指定组ID号。
-o:允许组ID号,不必惟一。
-r:加入组ID号,低于499系统账号。
-f:加入已经有的组时,发展程序退出。

应用实例

建立一个新组,并设置组ID加入系统:

#groupadd -g 344 cjh

此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。

9.kill

作用:用来中止一个进程
kill [ -s signal | -p ] [ -a ] pid …
kill -l [ signal ]

参数

-s:指定发送的信号。
-p:模拟发送信号。
-l:指定信号的名称列表。
pid:要中止进程的ID号。
Signal:表示信号。

说明

进程是Linux系统中一个非常重要的概念。Linux是一个多任务的操作系统,系统上经常同时运行着多个进程。我们不关心这些进程究竟是如何分配的,或者是内核如何管理分配时间片的,所关心的是如何去控制这些进程,让它们能够很好地为用户服务。
Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。交互进程是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。
批处理进程和终端没有联系,是一个进程序列。监控进程(也称系统守护进程)时Linux系统启动时启动的进程,并在后台运行。例如,httpd是著名的Apache服务器的监控进程。
kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作。比如在top命令中,我们看到系统运行许多进程,有时就需要使用kill中止某些进程来提高系统资源。在讲解安装和登陆命令时,曾提到系统多个虚拟控制台的作用是当一个程序出错造成系统死锁时,可以切换到其它虚拟控制台工作关闭这个程序。此时使用的命令就是kill,因为kill是大多数Shell内部命令可以直接调用的。

应用实例

(1)强行中止(经常使用杀掉)一个进程标识号为324的进程

#kill -9 324

324为进程标识号
(2)解除Linux系统的死锁,在Linux中有时会发生这样一种情况:一个程序崩溃,并且处于死锁的状态。此时一般不用重新启动计算机,只需要中止(或者说是关闭)这个有问题的程序即可。当kill处于X-Window界面时,主要的程序(除了崩溃的程序之外)一般都已经正常启动了。此时打开一个终端,在那里中止有问题的程序。比如,如果Mozilla浏览器程序出现了锁死的情况,可以使用kill命令来中止所有包含有Mozolla浏览器的程序。首先用top命令查处该程序的PID,然后使用kill命令停止这个程序

#kill -SIGKILL XXX

其中,XXX是包含有Mozolla浏览器的程序的进程标识号。(top可显示执行中的程序进程)
(3)使用命令回收内存
我们知道内存对于系统是非常重要的,回收内存可以提高系统资源。kill命令可以及时地中止一些“越轨”的程序或很长时间没有相应的程序。例如,使用top命令发现一个无用 (Zombie) 的进程,此时可以使用下面命令:

#kill -9 XXX

其中,XXX是无用的进程标识号。然后使用下面命令:

#free

此时会发现可用内存容量增加了。
(4)killall命令
Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:

# killall -HUP inetd

10.crontab

作用:可以修改crontab配置文件,然后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户。
crontab [ -u user ] 文件
crontab [ -u user ] { -l | -r | -e }

主要参数

-e:执行文字编辑器来设定时程表,内定的文字编辑器是vi
-r:删除目前的时程表。
-l:列出目前的时程表。
crontab文件的格式为“M H D m d cmd”。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期天)。cmd表示要运行的程序,它被送入sh执行,这个Shell只有USER、HOME、SHELL三个环境变量。

说明

和at命令相比,crontab命令适合完成固定周期的任务

应用实例

设置一个定时、定期的系统提示:

[cao @www cao]#crontab -e

此时系统会打开一个vi编辑器。
如果输入以下内容:

35 17 * * 5 wall "Tomorrow is Saturday I will go CS"

然后存盘退出。这时在/var/spool/cron/目录下会生产一个cao的文件,内容如下:


# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.2707 installed on Thu Jan 1 22:01:51 2004)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
35 17 * * 5 wall "Tomorrow is Saturday I will play CS "

这样每个星期五17:35系统就会弹出一个终端,提醒星期六可以打打CS了!

at在指定时刻执行指定的命令序列

动手练习

1.联合使用kill和top命令观察系统性能的变化

首先启动一个终端运行top命令,然后再启动一个终端使用kill命令
这时利用上面介绍的kill命令来中止一些程序:

#kill SIGKILL XXX

XXX为进程的程序号
然后再看top命令终端的变化,包括内存容量、CPU使用率、系统负载等。注意,有些进程是不能中止的,不过学习Linux命令时可以试试,看看系统有什么反应

2.使用at和halt命令定时关机

首先设定关机时间是17:35,输入下面代码:

#at 17:35warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at>halt `-i -p at job 6 at 2004-01-01 17:35

此时实际上就已经进入Linux系统的Shell,并且编写一个最简单程序:

halt -i-p。

上面Shell中的文本结束符号表示按“Ctrl+D”组合键关闭命令,提交任务退出Shell。
**“Job 6 at 2004-01-01 17:35”**表示系统接受第6个at命令,在“2004-01-01 17:35”时执行命令:先把所有网络相关的装置停止,关闭系统后关闭电源。

3.用crontab命令实现每天定时的病毒扫描

前面已经介绍了一个简单的crontab命令操作,这里看一些更重要的操作。
(1)建立一个文件,文件名称自己设定,假设为caoproject:

#crontab -e

【执行文字编辑器来设定时程表】
(2)文件内容如下:

05 09 * * * antivir

vi编辑后存盘退出。antivir是一个查杀Linux病毒的软件,当然需要时先安装在系统中。
(3)使用crontab命令添加到任务列表中:

#crontab caoproject

这样系统内所有用户在每天的9点05分会自动进行病毒扫描。

4.用kill使修改的配置文件马上生效

Windows用户一般都知道,重要配置文件修改后往往都要重新启动计算机才能使修改生效。而Linux由于采用了模块化设计,可以自己根据需要实时设定服务。这里以网络服务inetd为例介绍一些操作技巧。

inetd是一个监听守护进程,监听与提供互联网服务进程(如rlogin、telnet、ftp、rsh)进行连接的要求,并扩展所需的服务进程。默认情况下,inetd监听的这些daemon均列于/etc/inetd.conf文件中。编辑/etc/inetd.conf文件,可以改变inetd启动服务器守护进程的选项,然后驱使inetd以SIGHUP(signal向当前的inetd进程发送信号,使inetd重读该文件。这一过程由kill命令来实现。

用vi或其它编辑器修改inetd.conf后,首先使用下面命令:

#ps -ef |grep inetd

上面代码表明查询inetd.conf的进程号(PID),这里假设是1426,然后使用下面命令:

# kill -1426 inetd

这样配置文件就生效了。

这一讲介绍的系统管理命令都是比较重要的,特别是crontab命令和quota命令使用起来会有一定难度,需要多做一些练习。另外,使用kill命令要注意“-9“这个参数,练习时最好不要运行一些重要的程序。

测试开发工程师成长日记011 - linux常用命令day03相关推荐

  1. 测试开发工程师成长日记014 - linux常用命令day06

    一.其他命令 1.tar 作用:tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户. tar [主选项+辅选项] 文件或目录 主要参数 使用该命 ...

  2. 测试开发工程师成长日记004 - linux常用命令day01

    Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用系统提供的命令.要想真正理解Linux系统, ...

  3. 测试开发工程师成长日记018 - 测试面试必备题记录(持续更新)

    技术模块 一.在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试? 建立测试计划,确定测试标准和测试范围 设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等 ...

  4. 测试开发工程师成长日记009 - 环境排排站:开发环境、测试环境、生产环境、UAT环境、仿真环境

    一.五种环境 项目部署环境一般可分为三种:开发环境,测试环境.生产环境,对应过程为:开发->测试->上线: 细分生成环境又分为生产环境和仿真环境,具体概念如下: 而UAT环境指的是用户接受 ...

  5. 测试开发工程师成长日记010 - Jenkins中的CI/CD/CT(持续集成构建/持续交付/持续测试)

    CI(Continuous integration,持续集成) CI(Continuous integration,中文意思是持续集成)是一种软件开发时间.持续集成强调开发人员提交了新代码之后,立刻进 ...

  6. 测试开发工程师成长日记016 - 关于提测的那些事

    1.提测预演 背景:前期存在提测质量低,提测后bug量较多,需求遗漏等情况,现增加并规范落实,提测预演环节,增加预演是否通过的相关标准. 目标:提高项目/迭代提测质量. 预演流程: 提测标准: 完成并 ...

  7. 测试开发工程师成长心路

    入行测开,马上就要4年了.创业公司待过,大公司也待过,工作这一路走来,一些心得,转变,职场体会,早就想写出来分享一下.这个历程包含了技术的提升,工程师的素养和对这个行业的点滴感悟. 自动化测试vs测试 ...

  8. 软件测试/测试开发丨Docker 容器技术与常用命令

    公众号搜索:TestingStudio 霍格沃兹测试开发的干货都很硬核 Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言开发,Docker 可以让开发者打包他们的应用以及依 ...

  9. 测试开发工程师mac电脑常用软件推荐

    选对工具可以提升一倍效率,节省时间. 下面推荐一些本人常用到的一些软件,希望对大家有所帮助. [效率管理] mindmaster 思维导图(推荐) xmind 思维导图 Evernote 印象笔记 O ...

最新文章

  1. Android 事件分发 简单学
  2. python大数据结课报告_2020知到大数据分析的PYTHON基础结课答案
  3. java获取当前日期时间代码
  4. XML解析的三种方式(dom,sax,dom4j)
  5. stm32编码器正反转计数程序_光电编码器接线图分析
  6. linux 下mysql等php的安装 lnmp
  7. vue.js嵌套路由
  8. python-索引1909
  9. blob数据类型_MySQL 8.0 基本操作步骤:3.字段和数据类型的选择
  10. Python中超类是如何知道自己被继承的
  11. 【每日算法Day 102】美团 AI 平台算法工程师面试编程题
  12. Windows下杀进程的命令
  13. ubuntu14.04安装显卡驱动(转载)
  14. 同义词抽取:从知识库中自动发现同义词的方法
  15. 【自动驾驶】MPC控制器 + 驾驶模型器
  16. cad插入块_CAD制图初学入门:CAD软件中属性定义的相关应用
  17. java 腾讯微博模拟登陆_腾讯微博模拟登录
  18. buu-[QCTF2018]Xman-babymips
  19. python函数——Bunch配置加载
  20. 攻防世界入门 web 十二题

热门文章

  1. 文墨绘学:大型“100元学英语”市场操作方案
  2. Windows 7使用宝典安装技巧篇之——如何在Win7桌面上显示“我的电脑”
  3. 自己的微信竟然延迟接收消息了,这是什么情况?
  4. STM32F103C8T6+ESP-01S+MQTT服务器实现数据上传和接收(一)
  5. SIM卡中的ef文件介绍
  6. 分布式计算——Daytime协议的实现(TCP版)
  7. 神奇的Python图片处理库exifread
  8. halcon calculate_lines_gauss_parameters算子详解
  9. html简单情侣对话
  10. 可编辑PDF使用pdfplumber无法抽取出文本和表格