linux命令行发送邮件,linux使用at命令指定每天
Linux at命令定时发送邮件的具体用法-51CTO。计算机输出缩微胶片
Linux at命令定时发送邮件的具体用法是2010-06-22 12:58。我想评论一下匿名的Linux公社(
0)字号:T T有时候你需要在某个时刻通知别人或者自己做某件事。对于一些每天看邮件的人来说,发邮件是最安全的。在Linux操作系统下,使用带有邮件的Linux at命令很容易做到这一点。广告:
51CTO云计算架构师峰会正在进行中!
有时候在某些时候需要通知别人或者自己做一些事情。对于一些每天看邮件的人来说,发邮件是最安全的。在Linux操作系统下,使用带有邮件的Linux at命令很容易做到这一点。
Linux at command可以在某个时间运行某个程序,而mail可以通过命令行发送以文本形式存储的消息体副本。
Linux at命令定时发送邮件的具体用法:
1.准备好邮件文本,例如,写在email.txt中
2.然后编写一个脚本,比如run.sh
#!/usr/bin/bash
mail -s 此处为标题-c Address _ CC Address _ To email . txt
3.在命令行上执行
1月24日早上8点15分
在。/run.sh
在^D
Run.sh可以在1月24日上午8:15执行。
但是有些服务器限制使用at命令,所以还有一个笨办法。
在run.sh的开头加上‘speedtime’,然后直接运行run.sh,再到后台。
这里的时间是一个整数,指的是多少秒。
但是在一些服务器中,当终端一段时间没有输入时,用户会自动注销,一些动作如pwd、ls等。可以在脚本中不时地防止这种情况。
以上是在Linux操作系统中用Linux at命令定时发送邮件的方法。
Linux at命令定时发送邮件的具体用法-51CTO。计算机输出缩微胶片
Linux at命令定时发送邮件的具体用法是2010-06-22 12:58。我想评论一下匿名的Linux公社(
0)字号:T T有时候你需要在某个时刻通知别人或者自己做某件事。对于一些每天看邮件的人来说,发邮件是最安全的。在Linux操作系统下,使用带有邮件的Linux at命令很容易做到这一点。广告:
51CTO云计算架构师峰会正在进行中!
有时候在某些时候需要通知别人或者自己做一些事情。对于一些每天看邮件的人来说,发邮件是最安全的。在Linux操作系统下,使用带有邮件的Linux at命令很容易做到这一点。
Linux at command可以在某个时间运行某个程序,而mail可以通过命令行发送一个保存在文本中的消息体的副本。
Linux at命令定时发送邮件的具体用法:
1.准备好邮件文本,例如,写在email.txt中
2.然后编写一个脚本,比如run.sh
#!/usr/bin/bash
mail -s 此处为标题-c Address _ CC Address _ To email . txt
3.在命令行上执行
1月24日早上8点15分
在。/run.sh
在^D
Run.sh可以在1月24日上午8:15执行。
但是有些服务器限制使用at命令,所以还有一个笨办法。
在run.sh的开头加上‘speedtime’,然后直接运行run.sh,再到后台。
这里的时间是一个整数,指的是多少秒。
但是在一些服务器中,当终端一段时间没有输入时,用户会自动注销,一些动作如pwd、ls等。可以在脚本中不时地防止这种情况。
以上是在Linux操作系统中用Linux at命令定时发送邮件的方法。
命令at,batch,cron,BG,fg,who,PS,top,kill,nohup-中国UNIX操作系统频道
命令at,batch,cron,BG,fg,who,PS,top,kill,nohup 2006年09月03日03:32来源:ChinaUnix Blogger作者:郭纯编辑:周荣茂过程管理和作业控制(1)
Linux是一个多任务操作系统,其中多个进程同时运行,并且正在执行一个或多个阶段。
一个过程称为一个作业。通过作业控制,用户可以同时运行多个作业,并且在需要时,他们可以在
在之间切换。本章详细介绍了进程管理和作业控制的命令,包括启动进程、查看进程,
调度作业的命令。
过程和作业的概念
Linux是一个多用户多任务的操作系统。多用户意味着多个用户可以同时使用计算机。
系统;多任务是指Linux可以同时执行几个任务,一个任务还没完成就可以执行一个。
另一项任务。
操作系统管理多个用户的请求和任务。大多数系统只有一个CPU和一个主存,但是有一个
一个系统可以有多个辅助存储磁盘和多个输入/输出设备。操作系统管理这些资源,并以多种方式管理它们
用户共享资源。当你提出一个请求时,它给你一种系统被你一个人占据的错觉。事实上,操作系统监视等待执行的任务队列,包括用户作业和操作系统。
系统、邮件和打印作业等。操作系统根据任务的优先级为每个任务分配适当的时间。
每个时间片大约有十分之几秒。虽然看起来很短,但实际上足够一台电脑完成。
成千上万的指令集。每个任务将由系统运行一段时间,然后暂停,系统将处理其他任务。
任务;过一段时间再回来处理这个任务,直到某个任务完成并从任务队列中移除。
Linux系统上运行的一切都可以称为进程。每个用户任务,每个系统管理监护人
过程可以称为过程。采用Linux分时管理方法,使所有任务共享系统资源。我们
在讨论进程时,我们不关心这些进程是如何分配的,也不关心内核是如何管理分配的。
然而,我们关心的是如何控制这些过程,使它们能够很好地服务于用户。
进程的正式定义是在它自己的虚拟地址空间中运行的独立程序。流程和
程序之间是有区别的。进程不是程序,虽然它是由程序生成的。程序只是一组静态的指令,
不占用系统运行资源;而且流程是一个动态的过程,可以随时变化,利用系统运行信息。
源的程序。一个程序可以启动多个进程。
Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。
交互进程——由外壳启动的进程。进程可以在前台或后台运行。
批处理——该进程与终端无关,是一个进程序列。
监控进程(也称为守护进程)3354该进程在Linux系统启动时启动,并在后台运行。
以上三种流程各有其作用,应用场合也有所不同。
流程和作业的概念也有区别。正在执行的进程称为作业,作业可以包含一个
或者多个进程,尤其是在使用管道和重定向命令时。例如“nroff -man ps.1grep kil”
Lmore "该作业同时启动三个进程。
作业控制是指控制正在运行的进程的行为。例如,用户可以暂停一个进程并等待一段时间。
然后继续这个过程。shell将记录所有已启动的进程,在每个进程中,用户可以拥有任何
暂停或重新启动进程。作业控制是许多shell特性,包括bash和tcsh,
使用户能够在多个独立作业之间切换。
一般来说,当一个进程与作业控制相关联时,它被称为作业。
在大多数情况下,用户一次只运行一个作业,即他们在shell中键入的最后一个命令。但是
通过作业控制,用户可以同时运行多个作业,并在必要时在它们之间切换。这
有什么用?例如,当用户编辑一个文本文件并需要停止编辑以做其他事情时,李
使用作业控制,用户可以暂时挂起编辑器,返回到shell提示符并开始做其他事情。其他事情
这种情况结束后,用户可以重新启动暂停的编辑器,并返回到它刚刚停止的地方,就像用户从来没有
不离开编辑器。这只是一个例子。作业控制还有许多其他实际用途。
开始流程
键入需要运行的程序的程序名,执行一个程序实际上就启动了一个进程。在Linux系统中
系统中的每个进程都有一个进程号,系统用它来识别和安排进程。启动流程有两种主要方式。
方式:手动启动和定时启动,后者是预先设置好的,根据用户要求自行启动。
手动启动
当用户输入命令时,直接启动进程就是手动启动进程。但是手动启动过程可以分为非常
很多,根据启动的流程类型和属性不同,实际结果也不同,下面介绍。
1.从前台开始
这可能是手动启动进程最常见的方式。通常,用户键入命令“lsl”,
这已经启动了一个进程,并且是一个前台进程。此时,该系统已经处于高级阶段。
程州。有些用户可能会想:我只启动了一个进程。但是很多其实都是在后台运行的。
系统启动时自动启动的进程正在安静地运行。其他用户正在键入“lsl”
以后我会用“PSX”来检查命令,但是没有看到ls进程。我也觉得很奇怪。实际上,这是因为
ls进程结束的太快,ps查看的时候已经结束了。如果你开始一个耗时的
流程:
找到/-说出fox.jpg的名字
然后挂起进程,用ps查看,里面会看到一个find进程。
2.在后台开始
它很少用于直接从后台手动启动一个进程,除非该进程非常耗时,并且用户不着急。
当你需要结果时。假设用户想要开始一个格式化文本文件的长时间运行的过程。为
为了在格式化过程中不使整个shell瘫痪,明智的做法是从后台开始这个过程。
选择。
[示例1]
$ troff我的笔记note_form
[1] 4513
$
从上面的例子可以看出,从后台启动一个进程,实际上就是在命令的末尾加一个数字。键入命令后,会出现一个
Number,这个数字就是进程的编号,也叫PID,然后出现提示。用户可以继续。
其他工作。
前台和后台启动两种情况如上所述。其实这两种启动方式都有一个共同的特点,就是新。
进程都是由当前shell进程生成的。也就是说,外壳创建了新进程,所以叫这个。
一种关系是进程之间的父子关系。这里shell是父进程,而新进程是子进程。父进程可以
有多个子进程。通常,父进程不能继续,直到子进程结束。当然,如果是从后台开始,那么
不要等待子流程结束。
一种特殊情况是使用管道符号。例如:
nroff-man PS . 1 grep kill 更多
此时,实际上同时启动了三个进程。请注意,管道两侧的所有进程是同时启动的。
所有都将同时启动,它们是当前shell的子程序,可以称为兄弟进程。
以上是手动启动流程的部分内容。作为一个系统管理员,经常需要把东西
安排一下,让它自动运行。因为管理员不是机器,有时候离开了,有些事情是要做的。
工作,只是管理员不能亲自操作,那么就需要使用调度来启动流程。
开始计划
有时候需要对系统进行一些耗时耗力的维护工作,适合深夜。
行,此时用户可以提前调度,指定任务运行的时间或场合,然后系统
会自动完成这一切工作。
要使用自动启动进程的功能,您需要掌握以下启动命令。
at命令
使用user at命令在指定时间执行指定的命令序列。也就是说,该命令需要指定至少一个
命令,执行一次就可以正常运行。at命令只能指定时间,也可以与日期结合使用。
详细说明。需要注意的是,在指定时间存在系统判别问题。例如,用户现在指定一个执行
时间:凌晨3点20分,而at命令是前一天晚上20点发出的,那么是哪天执行的呢?
订单在哪里?如果用户在3:20之前还在工作,那么这个命令将在此时完成;如果用户3:
20,命令要到第二天早上才会执行。以下是at命令的语言
方法格式:
在[-V] [-q v] [-q队列] [-f文件名] [-ml dbv]时间
At -c作业[作业.]
At允许一种相当复杂的指定时间的方法,这实际上扩展了POSIX.2标准。它能回答。
它由一天中的hh:mm(小时:分钟)时间指定。如果时间过去了,那就把它放在第二位。
日执行。当然,你也可以利用午夜,中午,下午茶时间(下午茶时间,一般)
现在是下午4点)等含糊不清的词语来指定时间。用户也可以使用12小时计时系统,即在时间之后
加上AM(上午)或PM(下午)表示是上午还是下午。
还可以指定命令执行的具体日期,指定的格式为月日或月/日/年
/年)或dd.mm.yy(日、月、年)。指定的日期必须在指定的时间之后。
以上都是绝对计时法。其实也可以用相对计时法,马上就要实现了。
订单非常有益。指定的格式是:现在计数时间单位,现在是当前时间,时间
-units是时间单位,可以是分钟、小时、天和星期。
Ks(周)。Count是时间的量,是天还是小时等等。
另一种计时方法是直接用today(今天)和tomorrow(明天)来指定命令完成的时间。
介于。下面举几个例子来说明具体用法。
[例2]指定今天下午5:30执行一个命令。假设时间是1999年2月24日中午12:30。
,命令格式如下:
下午五点半
17时30分
今天17:30
现在5个小时
现在300分钟
1999年2月24日17时30分
1999年2月24日17时30分
2月24日17:30
这些命令表达的意思是完全一样的,你可以根据个人喜好来安排时间。
和具体情况。一般绝对时间的24小时计数方式可以避免用户自身的疏忽。
导致定时误差的情况发生了。例如,上面的例子可以写成:
1999年2月24日17时30分
这个很清楚,别人也能理解。
对于at命令,需要定期执行的命令是从标准输入或用-f选项指定的文件中读取的。
并被处决。如果从使用su命令切换到用户的shell中执行at命令,则当前用户是
认为是执行用户,所有错误和输出结果都会发送给这个用户。但是如果有邮件发出去。
邮件将由原始用户接收,即登录时shell的所有者。
[示例3]
$ at -f工作3天下午4点
三天后下午4: 00执行文件工作中的作业。
7月31日上午10点下班
7月31日上午10: 00执行文件工作中的作业。
在任何情况下,超级用户都可以使用该命令。对于其他用户,能用就拿吧。
依赖于两个文件:/etc/at.allow和/etc/at.deny。如果/etc/at.allow文件存在,那么
只有其中列出的用户可以使用at命令;如果文件不存在,将检查/etc/at。
无论拒绝文件是否存在,该文件中列出的用户都不能使用该命令。如果两个文件都没有保存
在中,只有超级用户可以使用该命令;空的/etc/at.deny文件意味着所有用户都可以
使用此命令,这也是默认状态。
命令中的参数描述如下。
-V将标准版本号打印到标准错误中。
-q队列使用指定的队列。队列名称由单个字母组成,合法的队列名称可以是a-z或
从a到Z .队列是at命令的默认队列。
-m在作业完成后,向执行at命令的用户发送电子邮件。
使用该选项的-f文件将使命令从指定文件中读取而不是标准输入。
-l atq命令的别名。该命令用于查看计划的作业序列,它将列出用户的
作业,如果是超级用户,列出队列中的所有作业。
该命令的语法格式如下:
Atq [-V] [-q v] [-q队列] [-v]
-d atrm命令的别名。该命令用于删除要执行的指定命令序列。语法格式如下:
任务,工作.]
-c将命令行中列出的作业发送到标准输出。
【例4】找出系统中所有带txt后缀的文件并打印出来。打印后给用户fox。
y发送电子邮件通知收件。约定时间是12月25日凌晨2点。
第一种类型:
1999年12月25日下午2点
然后系统出现提示,等待用户输入进一步的信息,即要执行的命令序列:
位于find/-name "*。txt"lpr
在echo“foxy:所有文本都已打印。你可以带他们过去。日安
!River" mail -s "任务完成" foxy
输入每行说明,然后按Enter键。输入所有指令序列后,使用组合键结束at生命周期。
进行输入。此时,屏幕上将出现以下信息:
警告:将使用/bin/sh执行命令。
作业1在1999-12-25 02:00
提醒用户将使用哪个shell来执行命令序列。
事实上,如果命令序列很长或频繁执行,它通常用于将序列写入文件。
,然后将该文件作为at命令的输入进行处理。这样不容易出错。
[示例5]上述示例可以修改如下:
使用以下语句将命令序列写入文件/tmp/printjob:
1999年12月25日下午2:00
这样,at命令将使用文件中的命令序列,屏幕显示如下:
警告:将使用/bin/sh执行命令。
工作2在1999-12-25 02:00
当然,你也可以使用下面的命令:
$ at find/-name *。txtlpr
在echo“foxy:所有文本都已打印。你可以带他们过去。日安
!River" mail -s "任务完成" foxy
现在这个命令会在合适的时间执行,完成后会发回一条消息。
仍然使用组合键来结束命令输入。此外,batch和at命令都会自动进入后台,所以
启动时不需要添加符号。
Cron命令
前面两个命令会在一定时间内完成一定的任务,但是要注意只能执行一次。也就是说,当指定运行命令时,系统在指定时间完成任务,一切结束。但是在
很多时候需要重复一些命令,比如某公司每周一自动向员工汇报公司第一周的工作。
情况,此时你需要使用cron命令来完成任务。
实际上,cron命令不应该手动启动。cron命令是在系统启动时由shell脚本自动执行的。
开始,进入背景(这样就不需要用符号了)。普通用户没有运行该命令的权限,尽管超级
级别用户可以手动启动cron,但建议放在shell脚本中,由系统自己启动。
首先,cron命令将搜索/var/spool/cron目录,以找到以/etc/passwd文件中的用户名命名的目录。
Crontab文件,找到的文件将被加载到内存中。例如,一个名为foxy的用户,对应于
crontab文件应该是/var/spool/cron/foxy。即以用户命名的crontab文本。
它们存储在/var/spool/cron目录中。cron命令还将搜索/etc/crontab文件,该文件是
用不同的格式写的。
cron启动后,首先会检查是否有用户设置了crontab文件,如果没有,就会进入睡眠状态。
状态,释放系统资源。因此,后台进程占用的资源非常少。它每分钟都会“醒来”检查
当前是否有任何需要运行的命令。命令执行后,任何输出都将作为邮件发送到crontab。
Owner,或者在/etc/crontab文件的MAILTO环境变量中指定的用户。
以上简单介绍了一些cron的工作原理,但是cron命令的执行不需要用户干预;需要用户
修改的是crontab中要执行的命令序列,所以下面描述crontab命令。
Crontab命令
crontab命令用于安装、删除或列出用于驱动cron后台进程的表。也就是说,用户将
所需的命令序列被放入crontab文件中执行。每个用户都可以拥有自己的crontab。
文件。让我们看看如何创建一个crontab文件。
不能直接创建或修改/var/spool/cron下的Crontab文件。Crontab文件是由
克朗塔布订购的。现在假设您有一个用户名foxy,需要创建自己的crontab文件。
首先,您可以用任何文本编辑器创建一个新文件,然后将需要运行的命令和键写入其中。
执行的时间。
然后保存并退出。假设文件是/tmp/test.cron。
使其成为该用户的crontab文件。类型:
crontab测试
因此建立了一个crontab文件。你可以去/var/spool/cron目录查看,你会发现更多。
一个狡猾的文件。这个文件是必需的crontab文件。使用more命令查看该文件的内容
文件头中有三行信息:
#不要编辑此文件-编辑母版并重新安装。
#(test.cron安装于1999年2月22日14:20:20)
#(cron版本- $Id:crontab.c,v 2.13 1994/01/17 03:20:37 vivie Exp $)
大概意思是:
#请勿编辑此文件——如果需要更改,请编辑源文件并重新安装。
#test.cron文件安装于1999年2月22日14:20:20
如果需要更改命令内容,仍然需要再次编辑原始文件,然后使用crontab。
进行安装。
可以使用crontab命令的用户是有限的。如果/etc/cron.allow文件存在,那么只有它的
只有中列出的用户可以使用此命令;如果该文件不存在,但cron.deny文件存在,那么只列出
只有该文件中的用户可以使用crontab命令;如果两个文件都不存在,则取决于一些参数。
设置,可能是只允许超级用户使用该命令,或者所有用户都可以使用该命令。
crontab命令的语法格式如下:
crontab [-u用户]文件
crontab [-u用户]{-l-r-e}
第一种格式用于安装新的crontab文件,安装源是file引用的文件。如果你使用
“-”符号用作文件名,这意味着使用标准输入作为安装源。
-u如果使用此选项,它指定将修改哪个特定用户的crontab文件。如果你不是指
设置该选项时,crontab默认为操作员自己的crontab,即执行crontab命令。
用户的Crontab文件将被修改。但是,请注意,如果您使用su命令,那么您可以使用crontab命令。
会有混乱。所以如果使用su命令,最好使用-u选项来指定它是哪一个。
用户的Crontab文件。
-l在标准输出上显示当前crontab。
-r删除当前的crontab文件。
-e使用VISUAL或EDITOR环境变量指向的编辑器编辑当前crontab文件。完成编辑时
当您离开时,编辑过的文件将自动安装。
[示例7]
# crontab -l #列出用户当前的crontab。
10月6日* * *日期
0 */2 * * *日期
0 23-7/2,8 * * *日期
#
如何在crontab文件中输入要执行的命令和时间?文件中的每一行包括六个字段,其中第一个
这五个字段是执行指定命令的时间,最后一个字段是要执行的命令。在每个域之间使用空格。
或者用制表符分隔。格式如下:
分钟小时月日年月日星期命令
第一个是分钟,第二个是小时,第三个是一个月中的一天,第四个是一年中的一个月。
第五项是星期几,第六项是要执行的命令。这些项目都不能为空,必须填写。如果
用户不需要指定其中的几个,可以用*代替。因为*是通配符,所以它可以替换任何字符。
,所以可以认为是任意时间,即该项已经被忽略。表4-1给出了每个项目的法律范围。
表4-1法定时间范围
时间
法定价值
分钟
00-59
小时
00-23,这里00点是晚上12点。
一月中的某一天
01-31
一年中的月份
01-12
星期几
0-6,其中星期日为0。
这样,用户可以向crontab文件中写入无限的行来完成无限的命令。您可以在命令域中
写所有能写在命令行上的命令和符号,其他时间域都支持枚举,也就是域可以
写很多时间值,只要满足这些时间值中的任何一个,就执行命令。在每两个时间值中
使用逗号分隔它们。
[例8]
5,15,25,35,45,55 16,17,18 * * *命令
这意味着任何一天,任何一个月,实际上就是每天下午4点,5点,6点的5分钟,15分钟,25分钟。
在第1分钟、第35分钟、第45分钟和第55分钟执行命令。
【例9】每周一、三、五下午3: 00,系统进入维护状态,重启系统。所以在cro
以下字段应写入ntab文件:
00 15 * * 1,3,5关机-r 5
然后将文件另存为foxy.cron,再键入crontab foxy.cron安装文件。
[示例10]每小时10: 00和40: 00,在用户目录中执行命令innd/bbslin:
10,40 * * * * innd/bbslink
[示例11]每小时1分钟在用户目录中执行命令bin/account:
1个* * * *箱/账户
【例12】每天凌晨3: 20,在用户目录下执行以下两条指令(每条指令以;不同的
):
20 3 * * *(/bin/RM-f expire . ls logins . bad;bin/expire expire.1st)
[例13] /bin/rm -f expire.1在每年1月和4月的4日至9日的3: 12和3: 55执行。
St这个指令,并将结果添加到文件mm.txt之后(文件mm.txt位于用户自己的目录中
).
12,55 3 4-9 1,4 * /bin/rm -f expire.1st mm.txt
[例14]让我们来看一个超级用户的crontab文件:
#每分钟运行一次“atrun”程序
#这将运行任何应该从“at”运行的内容。参见man“at”或“atrun”。
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/lib/atrun
40 7 * * *更新数据库
8,10,22,30,39,46,54,58 * * * * /bin/sync
暂停和恢复进程的命令bg和fg
作业控制允许进程暂停,必要时可以恢复。暂停的作业恢复后,它将
检查开始继续运行。只需按键盘上的暂停当前的前台工作。
[实施例15]
$ cat text.file
[1]停止卡特彼勒文本文件
$乔布斯
[1]停止卡特彼勒文本文件
在键盘上按下后,当前执行的命令cat将被挂起。使用jobs命令显示shell的工作。
作业列表,包括特定作业、作业编号和作业的当前状态。
当进程恢复执行时,有两种选择:使用fg命令将挂起的作业放回前台执行;使用bg命令挂起
作业在后台执行。
【例16】用户正在使用Emacs,突然需要检查系统进程。先用组合。
关键的Emacs进程挂起,然后用bg命令在后台启动,从而获得前台的操作控制权。
,然后键入“PSX”查看进度。查看后,使用fg命令将Emacs带回到前台运行
酪命令格式是:
$ bg emacs
$ PSx
$ fg emacs
默认情况下,fg和bg命令对最近停止的作业进行操作。如果你想恢复其他工作,
您可以在还原作业的命令中指定要还原的作业的作业号。例如:
1英镑
卡特彼勒文本文件
灵活使用以上命令会给你带来很大的方便。
流程视图
在这一节中,我们将不仅介绍进程查看的内容,有时还会介绍,因为Linux是一个多用户系统。
了解其他用户现在在做什么,所以在这一节,我们也会涉及到多用户方面。同时,Linux是一个
多流程系统,通常需要对这些流程进行一些部署和管理;为了管理,我们必须首先知道
当前进展:有哪些进展?最近怎么样?等一下。因此,我们需要检查进度。
去吧。
谁指挥
该命令主要用于查看当前在线用户。这个命令非常有用。如果用户想要与其他用户通信
建立即时通讯,比如使用talk命令,那么首先要确定的是用户是否在线,否则
无法建立通话过程。另一个例子是,系统管理员希望监控每个登录用户此时正在做什么。
对于,也要使用who命令。
who命令的常见语法格式如下:
谁[imqsuwHT] [ -计数] [ -空闲] [ -标题] [ -帮助] [ -消息
][-mesg][-version][-writable][file][am I]
的所有选项都是可选的,这意味着您可以单独使用who命令。没有任何选择,世卫组织命令
将显示以下三个项目:
登录名:登录用户名;
终端线路:使用终端设备;
登录时间:登录系统的时间。
如果给定了两个非可选参数,who命令将只显示who程序的用户名和登录终端。
和登录时间。一般这两个参数是“我是不是”,也就是命令格式是“我是谁”。
who命令的通用参数描述如下。
-m与“我是谁”功能相同,显示程序的用户名。
-q,- count仅显示用户的登录帐户和已登录用户的数量。此选项优先于任何其他选项。
项目。
-s忽略。它主要用于与其他版本的who命令兼容。
-i、-u、- idle显示自登录时间后用户最后一次操作系统以来的时间,即
常被称为“发呆”时间。“在哪里”符号表示用户在第一个1秒钟内仍处于活动状态;“旧”
这意味着用户已经空闲超过24小时。
-H,- heading显示一行标题。常见标题如表4-2所示。
表4-2世卫组织命令输出的常见标题
标题描述
用户登录帐户
线路用户登录终端。
登录时用户登录时间
空闲用户的空闲时间,即没有操作的时间。
用户登录shell的PID进程ID
来自用户网络地址
-w,-t-mesg,- message,- writable,与-s选项一样,在登录帐户后显示一个字符。
要指示用户的信息状态:
:允许写入信息;
-:不允许写入信息;
?找不到终端设备。
- help在标准输出上显示帮助信息。
- version在标准输出上显示版本信息。
以下是who命令的一些基本用法。
如果需要检查系统上有哪些用户,可以直接使用who命令。
[例17]检查用户登录系统的情况
谁
根tty1月17日13时49分
foxy tty2月17日13时49分
根tty3月17日13时49分
bbs ttyp0月17日13时49分(river.net)
如您所见,现在系统中有四个用户。第一列是登录用户的账号;第二列用于登录。
终端;第三列是登录时间;第四列是用户登录的网络地址。这是域名。
一般来说,可以知道登录用户的大致情况。但是有时候上面的显示不是那么直观,
因为没有说明文字,不太好理解。此时,您需要使用-H选项。
[示例18]要查看已登录用户的详细信息,请键入:
谁啊
显示如下:
用户线路登录-空闲时间从
根tty1月17日13时49分。
foxy tty2月17日13:49 00:01
root tty3 Mar 17 13:49 00:01
bbs ttyp0月17日13:49 00:01(river.net)
这个一目了然。其中-u选项指定显示用户的空闲时间,所以可以看到多了一个空闲项。第一
根用户的空闲条目是一个“.”,这意味着该用户在第一个1秒钟内仍然是活动的,而其他用户
背后有一个时间,叫自由时间。
最后,让我们看看使用“我是谁”格式命令的结果:
233.river.net!根tty1月17日13时49分
可以看到,只显示了运行who命令的用户,当然此时没有空闲时间。
who命令应用起来非常简单,能够准确掌握用户的情况,所以应用广泛。
w命令
这个命令也用于显示登录到系统的用户的情况,但是与世卫组织不同,w命令更加强大。
它不仅可以显示谁登录了系统,还可以显示这些用户当前的工作,并统一
与世卫组织的命令相比,数据更加详细和科学。可以认为W命令是who命令的加强版。
w命令的显示项目按以下顺序排列:当前时间、自系统启动以来的时间以及登录用户的数量。
,系统在最近1秒、5秒和15秒的平均负载。然后,就是每个用户的数据,以及物品的显示顺序。
如下:登录帐户,终端名称,远程主机名,登录时间,空闲时间,JCPU,PCPU,当前状态
在运行进程的命令行中。
JCPU time是指连接到终端的所有进程所占用的时间(tty)。这个时间不包括
过去的后台作业时间,但包括当前正在运行的后台作业所占用的时间。而PCPU时间
指当前进程所占用的时间(即显示在WHAT项中的进程)。下面描述了该命令的具体用法。
和参数。
语法如下:
w-[husfV][用户]
解释了以下参数:
-h不显示标题。
-u在列出当前进程和CPU时间时忽略用户名。这主要用于执行su命令后的情况。
-s使用短模式。不显示登录时间、JCPU和PCPU时间。
-f切换FROM项目(远程主机名项目)的显示。缺省值是不显示远程主机名,当然是系统管理。
您可以对源文件进行一些修改,以便显示项成为默认值。
-V显示版本信息。
用户仅显示指定用户的相关信息。
[示例19]显示当前登录到系统的用户的详细信息。
美元w
下午2:50开始2分钟,4个用户,平均负载:0.22,0.16,0.06
登录@ IDLE JCPU PCPU WHAT的用户TTY
根tty1 2:49pm 0:00s 0.56s 0.10s w
狐狸tty2下午2点49分1点09分0.42秒0.42秒狂欢
root tty 3 2:49pm 46.00s 0.67s 0.25s telnet BBS 3
river.net论坛下午2点49分45.00秒0.49秒0.49秒river.net论坛
Ps命令
1.PS简介
前两个命令用于查看当前系统用户。让我们来看看这个过程
这也是本章的主题。为了监视和控制过程,我们必须首先知道当前的过程,也就是
你需要检查当前的进程,ps命令是最基本最强大的进程检查命令。用这一生
可以确定哪些进程正在运行及其运行状态,这些进程是否已完成,这些进程是否已死亡,以及
进程占用资源太多等等。简而言之,大部分信息都可以通过执行这个命令获得。
2.ps命令及其参数
Ps命令最常用于监控后台进程的工作,因为后台进程不同于屏幕键盘。
标准输入/输出设备相互通信,因此如果需要检查情况,可以使用ps命令。
命令语法格式如下:
PS[选项]
描述了以下命令选项:
-e显示所有进程。
-f完整格式。
-h不显示标题。
-l长格式。
-w宽输出。
在终端上显示所有进程,包括其他用户的进程。
r只显示正在运行的进程。
x表示没有控制终端的过程。
O [-] k1 [,[-] k2 [,…]]根据快捷键k1,k2中的快捷键指定。
级别排序顺序显示流程列表。不同格式的ps都有默认的订单分配。这些默认序列
可以被用户的指定覆盖。“”字符是可选的,而“-”字符将反转指定键的方向。
Pids只列出指定过程的情况。用逗号分隔进程id。必须在命令行上引用进程列表。
数字的最后一个选项紧随其后给出,中间不能插入空格。比如:ps -f1,4,5。
引入了以下长命令行选项,它们都以“-”开头:
-sort x [-] key [,[-] key [,…]]从排序关键字段中选择一个多字母关键字。“”字符是可选的,因为默认方向是数字升序或字典顺序。比如:ps -ja
x -sort=uid,-ppid,pid .
- help显示帮助信息。
- version显示该命令的版本信息。
在前面的选项描述中,提到了排序键。接下来,进一步解释分类关键字。需要注意的是排序。
中使用的值是ps使用的内部值,而不是仅用于某些输出格式的伪值。按键列表见表4-3。
表4-3排序键列表
短格式和长格式
Cmd可执行文件简单名称
完整的命令行
f标志长模式标志
pgrp流程的组ID
Tpg ID控制tty进程组ID。
jtime的累计用户时间
累积系统时间
用户时间
K stime系统时间
min _ flt二级页面错误的数量
主页面错误的数量
Cmin _ FLT累积二级页面错误
累积主页错误
o会话对话ID
P pID进程ID
P ppID父进程ID
rss驻留大小
常驻页面
内存大小(千字节)
共享页面的数量
Ttttttty次要设备号
T start_time 进程启动的时间
U uid UID
u user 用户名
v vsize 总的虚拟内存数量(字节)
y priority 内核调度优先级
3. 常用ps命令参数
前面两节介绍的参数可能让读者觉得有些可怕,实际上这是一个非常容易使用的命令,
一般的用户只需掌握一些最常用的命令参数就可以了。
最常用的三个参数是u、a、x,下面将通过例子来说明其具体用法。
[例20] 以root身份登录系统,查看当前进程状况
$ ps
PID TTY TIME COMMAND
5800 ttyp0 00:00:00 bash
5835 ttyp0 00:00:00 ps
可以看到,显示的项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(
进程执行时间)、COMMAND(该进程的命令行输入)。
可以使用u选项来查看进程所有者及其他一些详细信息,如下所示:
$ ps u
USER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMAND
test 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bash
test 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 ps u
在bash进程前面有条横线,意味着该进程便是用户的登录shell,所以对于一个登录用户
来说带短横线的进程只有一个。还可以看到%CPU、%MEM两个选项,前者指该进程占用的
CPU时间和总时间的百分比;后者指该进程占用的内存和总内存的百分比。
在这种情况下看到了所有控制终端的进程;但是对于其他那些没有控制终端的进程还是
没有观察到,所以这时就需要使用x选项。使用x选项可以观察到所有的进程情况。
[例21] 下面是使用x选项的例子:
$ ps x
PID TTY STAT TIME COMMAND
5800 ttyp0 S 0:00 -bash
5813 ttyp1 S 0:00 -bash
5921 ttyp0 S 0:00 man ps
5922 ttyp0 S 0:00 sh -c /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz /
5923 ttyp0 S 0:00 /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz
5924 ttyp0 S 0:00 /usr/bin/less -is
5941 ttyp1 R 0:00 ps x
可以发现突然一下子就多出了那么多的进程。这些多出来的进程就是没有控制终端的进
程。
前面看到的所有进程都是test用户自己的。其实还有许多其他用户在使用着系统,自然
也就对应着其他的很多进程。如果想对这些进程有所了解,可以使用a选项来查看当前系
统所有用户的所有进程。经常使用的是aux组合选项,这可以显示最详细的进程情况。
[例22]
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1136 64 ? S Nov25 0:02 init [3]
root 2 0.0 0.0 0 0 ? SW Nov25 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Nov25 0:03 [kupdate]
root 4 0.0 0.0 0 0 ? SW Nov25 0:00 [kpiod]
root 5 0.0 0.0 0 0 ? SW Nov25 0:00 [kswapd]
root 163 0.0 0.1 1628 332 ? S Nov25 0:02 sshd
root 173 0.0 0.0 1324 200 ? S Nov25 0:00 syslogd
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。