linux命令行发送邮件,linux使用at命令指定每天

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: