精华内容
下载资源
问答
  • 输出的信息是什么意思? top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。 top - 01:06:48 up 1:22, 1 user, load ...

     top命令是什么?输出的信息是什么意思?

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。

    top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
    Tasks: 29 total,   1 running, 28 sleeping,   0 stopped,   0 zombie
    Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
    Mem:    191272k total,   173656k used,    17616k free,    22052k buffers
    Swap:   192772k total,        0k used,   192772k free,   123988k cached

       PID USER      PR NI VIRT RES SHR S %CPU %MEM    TIME+ COMMAND
    1379 root      16   0 7976 2456 1980 S 0.7 1.3   0:11.03 sshd
    14704 root      16   0 2128 980 796 R 0.7 0.5   0:02.72 top
         1 root      16   0 1992 632 544 S 0.0 0.3   0:00.90 init
         2 root      34 19     0    0    0 S 0.0 0.0   0:00.00 ksoftirqd/0
         3 root      RT   0     0    0    0 S 0.0 0.0   0:00.00 watchdog/0

    统计信息区

    前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

    01:06:48 当前时间
    up 1:22 系统运行时间,格式为时:分
    1 user 当前登录用户数
    load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。
    三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

    第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

    Tasks: 29 total 进程总数
    1 running 正在运行的进程数
    28 sleeping 睡眠的进程数
    0 stopped 停止的进程数
    0 zombie 僵尸进程数
    Cpu(s): 0.3% us 用户空间占用CPU百分比
    1.0% sy 内核空间占用CPU百分比
    0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
    98.7% id 空闲CPU百分比
    0.0% wa 等待输入输出的CPU时间百分比
    0.0% hi  
    0.0% si  

    最后两行为内存信息。内容如下:

    Mem: 191272k total 物理内存总量
    173656k used 使用的物理内存总量
    17616k free 空闲内存总量
    22052k buffers 用作内核缓存的内存量
    Swap: 192772k total 交换区总量
    0k used 使用的交换区总量
    192772k free 空闲交换区总量
    123988k cached 缓冲的交换区总量。
    内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
    该数值即为这些内容已存在于内存中的交换区的大小。
    相应的内存再次被换出时可不必再对交换区写入。

    进程信息区

    统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

    序号 列名 含义
    a PID 进程id
    b PPID 父进程id
    c RUSER Real user name
    d UID 进程所有者的用户id
    e USER 进程所有者的用户名
    f GROUP 进程所有者的组名
    g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
    h PR 优先级
    i NI nice值。负值表示高优先级,正值表示低优先级
    j P 最后使用的CPU,仅在多CPU环境下有意义
    k %CPU 上次更新到现在的CPU时间占用百分比
    l TIME 进程使用的CPU时间总计,单位秒
    m TIME+ 进程使用的CPU时间总计,单位1/100秒
    n %MEM 进程使用的物理内存百分比
    o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
    q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    r CODE 可执行代码占用的物理内存大小,单位kb
    s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
    t SHR 共享内存大小,单位kb
    u nFLT 页面错误次数
    v nDRT 最后一次写入到现在,被修改过的页面数。
    w S 进程状态。
    D=不可中断的睡眠状态
    R=运行
    S=睡眠
    T=跟踪/停止
    Z=僵尸进程
    x COMMAND 命令名/命令行
    y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
    z Flags 任务标志,参考 sched.h

    默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。

    通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。

    o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。

    按大写的 FO 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

    命令使用

    1. 工具(命令)名称
    top
    2.工具(命令)作用
    显示系统当前的进程和其他状况; top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.
    3.环境设置
    在Linux下使用。
    4.使用方法
    4.1使用格式
    top [-] [d] [p] [q] [c] [C] [S] [s] [n]
    4.2参数说明
    d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
    p 通过指定监控进程ID来仅仅监控某个进程的状态。
    q该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
    S 指定累计模式
    s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
    i 使top不显示任何闲置或者僵死进程。
    c 显示整个命令行而不只是显示命令名
    4.3其他
      下面介绍在top命令执行过程中可以使用的一些交互命令。从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。
      Ctrl+L 擦除并且重写屏幕。
      h或者? 显示帮助画面,给出一些简短的命令总结说明。
      k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
      i 忽略闲置和僵死进程。这是一个开关式命令。
      q 退出程序。
      r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
      S 切换到累计模式。
      s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
      f或者F 从当前显示中添加或者删除项目
      o或者O 改变显示项目的顺序。
      l 切换显示平均负载和启动时间信息。
      m 切换显示内存信息。
      t 切换显示进程和CPU状态信息。
      c 切换显示命令名称和完整命令行。
      M 根据驻留内存大小进行排序。
      P 根据CPU使用百分比大小进行排序。
      T 根据时间/累计时间进行排序。
         W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。


     

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。

    top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
    Tasks: 29 total,   1 running, 28 sleeping,   0 stopped,   0 zombie
    Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
    Mem:    191272k total,   173656k used,    17616k free,    22052k buffers
    Swap:   192772k total,        0k used,   192772k free,   123988k cached

       PID USER      PR NI VIRT RES SHR S %CPU %MEM    TIME+ COMMAND
    1379 root      16   0 7976 2456 1980 S 0.7 1.3   0:11.03 sshd
    14704 root      16   0 2128 980 796 R 0.7 0.5   0:02.72 top
         1 root      16   0 1992 632 544 S 0.0 0.3   0:00.90 init
         2 root      34 19     0    0    0 S 0.0 0.0   0:00.00 ksoftirqd/0
         3 root      RT   0     0    0    0 S 0.0 0.0   0:00.00 watchdog/0

    统计信息区

    前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

    01:06:48 当前时间
    up 1:22 系统运行时间,格式为时:分
    1 user 当前登录用户数
    load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。
    三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

    第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

    Tasks: 29 total 进程总数
    1 running 正在运行的进程数
    28 sleeping 睡眠的进程数
    0 stopped 停止的进程数
    0 zombie 僵尸进程数
    Cpu(s): 0.3% us 用户空间占用CPU百分比
    1.0% sy 内核空间占用CPU百分比
    0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
    98.7% id 空闲CPU百分比
    0.0% wa 等待输入输出的CPU时间百分比
    0.0% hi  
    0.0% si  

    最后两行为内存信息。内容如下:

    Mem: 191272k total 物理内存总量
    173656k used 使用的物理内存总量
    17616k free 空闲内存总量
    22052k buffers 用作内核缓存的内存量
    Swap: 192772k total 交换区总量
    0k used 使用的交换区总量
    192772k free 空闲交换区总量
    123988k cached 缓冲的交换区总量。
    内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
    该数值即为这些内容已存在于内存中的交换区的大小。
    相应的内存再次被换出时可不必再对交换区写入。

    进程信息区

    统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。

    序号 列名 含义
    a PID 进程id
    b PPID 父进程id
    c RUSER Real user name
    d UID 进程所有者的用户id
    e USER 进程所有者的用户名
    f GROUP 进程所有者的组名
    g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
    h PR 优先级
    i NI nice值。负值表示高优先级,正值表示低优先级
    j P 最后使用的CPU,仅在多CPU环境下有意义
    k %CPU 上次更新到现在的CPU时间占用百分比
    l TIME 进程使用的CPU时间总计,单位秒
    m TIME+ 进程使用的CPU时间总计,单位1/100秒
    n %MEM 进程使用的物理内存百分比
    o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
    q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    r CODE 可执行代码占用的物理内存大小,单位kb
    s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
    t SHR 共享内存大小,单位kb
    u nFLT 页面错误次数
    v nDRT 最后一次写入到现在,被修改过的页面数。
    w S 进程状态。
    D=不可中断的睡眠状态
    R=运行
    S=睡眠
    T=跟踪/停止
    Z=僵尸进程
    x COMMAND 命令名/命令行
    y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
    z Flags 任务标志,参考 sched.h

    默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。

    通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。

    o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。

    按大写的 FO 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

    命令使用

    1. 工具(命令)名称
    top
    2.工具(命令)作用
    显示系统当前的进程和其他状况; top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止. 比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.
    3.环境设置
    在Linux下使用。
    4.使用方法
    4.1使用格式
    top [-] [d] [p] [q] [c] [C] [S] [s] [n]
    4.2参数说明
    d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
    p 通过指定监控进程ID来仅仅监控某个进程的状态。
    q该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
    S 指定累计模式
    s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
    i 使top不显示任何闲置或者僵死进程。
    c 显示整个命令行而不只是显示命令名
    4.3其他
      下面介绍在top命令执行过程中可以使用的一些交互命令。从使用角度来看,熟练的掌握这些命令比掌握选项还重要一些。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。
      Ctrl+L 擦除并且重写屏幕。
      h或者? 显示帮助画面,给出一些简短的命令总结说明。
      k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
      i 忽略闲置和僵死进程。这是一个开关式命令。
      q 退出程序。
      r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
      S 切换到累计模式。
      s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
      f或者F 从当前显示中添加或者删除项目
      o或者O 改变显示项目的顺序。
      l 切换显示平均负载和启动时间信息。
      m 切换显示内存信息。
      t 切换显示进程和CPU状态信息。
      c 切换显示命令名称和完整命令行。
      M 根据驻留内存大小进行排序。
      P 根据CPU使用百分比大小进行排序。
      T 根据时间/累计时间进行排序。
         W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。


    展开全文
  • 任务管理器中的PID是什么 怎么查看

    千次阅读 2019-04-20 15:55:06
    任务管理器中的PID是什么 怎么查看

    首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程

                    PID是Process ID的简称,这对WINDOWS开发人员来说是非常有用的信息,但对于普通用户来说则根本不必去理会。
     
    举个例子来说:
    在网站发布的时候,需要安装IIS,那么iis的tcp的80端口就不能被占用。但如果被占用了,我们怎么查看被什么程序占用了呢?
     
    1 在命令提示行中输入:netstat -an -p tcp -o,可以看到80端口被PID为1984的进程占用。
     
    那么我就要找:1984是哪位仁兄啊?
     

    2 在"任务管理器"中——>查看——>选择列。把PID勾选上,这样就可以在"任务管理器"看到这位仁兄了



    原来是apache这位仁兄啊。
     
    有几种解决办法:
    1. 卸载apache
    2. 直接更改IIS中TCP端口为其它端口如:81 82 等,但这样调试网站时需在网址后加上当前更改的端口
      (http://localhost:81/)。
    3. 还有其他的,大家上网搜搜吧!

               

    浏览人工智能教程

    展开全文
  • c#中任务Task

    万次阅读 2018-07-28 22:53:25
    1.通过任务开启线程 1.1 创建Task对象  首先创建任务对象,任务对象调用Start()方法开启任务线程。 class Program { static void DownLoad(object ...DownLoad Begin ID = " + Thread.CurrentThread.Man...

    1.通过任务开启线程

    1.1 创建Task对象

          首先创建任务对象,任务对象调用Start()方法开启任务线程。

    class Program
    {
        static void DownLoad(object str)
        {
            Console.WriteLine("DownLoad Begin ID = " + Thread.CurrentThread.ManagedThreadId + " " + str);
            Thread.Sleep(1000);
            Console.WriteLine("DownLoad End");
        }
        static void Main(string[] args)
        {
            //创建任务
            Task task = new Task(DownLoad, "人民日报");
            //启动任务
            task.Start();
            Console.WriteLine("Main");   
            Console.ReadKey();
        }
    }

    运行结果

    1.2 任务工厂TaskFactory

          首先创建任务工厂,然后调用StartNew()方法开启任务线程。

    class Program
    {
        static void DownLoad(object str)
        {
            Console.WriteLine("DownLoad Begin ID = " + Thread.CurrentThread.ManagedThreadId + " " + str);
            Thread.Sleep(1000);
            Console.WriteLine("DownLoad End");
        }
        static void Main(string[] args)
        {
            //创建任务工厂
            TaskFactory taskFactory = new TaskFactory();
            //开始新的任务
            taskFactory.StartNew(DownLoad, "纽约时报");
            Console.WriteLine("Main");
            Console.ReadKey();
        }
    }

    运行结果

    2.连续任务

         如果一个任务的执行依赖于另一个任务,即任务的执行有先后顺序。此时,我们可以使用连续任务。

        task.ContinueWith(ReadNews)表示一个任务task结束后,才开始执行另一个任务。

    class Program
    {
        static void DownLoad(object str)
        {
            Console.WriteLine("DownLoad Begin ID = " + Thread.CurrentThread.ManagedThreadId + " " + str);
            Thread.Sleep(1000);
            Console.WriteLine("DownLoad End");
        }
        static void ReadNews(Task obj)
        {
            Thread.Sleep(1000);
            Console.WriteLine("Read News");
        }
        static void Main(string[] args)
        {
            Task task = new Task(DownLoad, "人民日报");
            Task task2 = task.ContinueWith(ReadNews);
            task.Start();
            Console.ReadKey();
        }
    }

    执行结果

    3.任务的层次结构

       在一个任务中可以启动子任务,两个任务异步执行。默认情况下,子任务(即由外部任务创建的内部任务)将独立于其父任务执行。使用TaskCreationOptions.AttachedToParent显式指定将任务附加到任务层次结构中的某个父级。

       如果父任务执行完了但是子任务没有执行完,则父任务的状态会被设置为WaitingForChildrenToComplete,只有子任务也执行完了,父任务的状态才会变成RunToCompletion。

    class Program
    {
        static void DownLoad(object str)
        {
            Console.WriteLine("Parent Begin ID = " + Thread.CurrentThread.ManagedThreadId + " " + str);
    
            Task child = new Task(ChildWork, TaskCreationOptions.AttachedToParent);
            child.Start();
            Thread.Sleep(1000);
            Console.WriteLine("Parent End");
        }
    
        static void ChildWork()
        {
            Console.WriteLine("Child begin");
            Thread.Sleep(5000);
            Console.WriteLine("Child end");
        }
    
        static void Main(string[] args)
        {
            Task task = new Task(DownLoad, "人民日报");
            task.Start();
            Thread.Sleep(2000);
            Console.WriteLine(task.Status);
            Thread.Sleep(4000);
            Console.WriteLine(task.Status);
            Console.ReadKey();
        }
    }

      运行结果:

      

    4.任务的执行结果

        使用Task的泛型版本,可以返回任务的执行结果。

        下面例子中的TaskWithResult的输入为object类型,返回一个元组Tuple<int, int>。

         定义调用TaskWithResult的任务时,使用泛型类Task<Tuple<int, int>>,泛型的参数定义了返回类型。通过构造函数,传递TaskWithResult,构造函数的第二个参数定义了TaskWithResult的输入值。

         任务完成后,通过Result属性获取任务的结果。

    class Program
    {
        static Tuple<int, int> TaskWithResult(object obj)
        {
            Tuple<int, int> div = (Tuple<int, int>)obj;
            Thread.Sleep(1000);
            return Tuple.Create<int, int>(div.Item1 + div.Item2, div.Item1 - div.Item2);
        }
        static void Main(string[] args)
        {
            var task = new Task<Tuple<int, int>>(TaskWithResult, Tuple.Create<int, int>(8, 3));            
            task.Start();
            Console.WriteLine(task.Result);
            task.Wait();
            Console.WriteLine("Result: {0} {1}", task.Result.Item1, task.Result.Item2);
            Console.ReadLine();
        }
    }

        执行结果:

      

    展开全文
  • 一、简介 crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows... crond进程定期(每分钟)检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。用户在cron表 (也被称...

    一、简介

    crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,在CentOS Linux release 7.2.1511中默认是开机启动的,大家可以使用命令:systemctl status crond进行查看。 crond进程定期(每分钟)检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。用户在cron表
    (也被称为crontab文件)指定了定时任务,crontab也就是我们常见的定时任务设置命令。Linux下的任务调度分为两类,系统任务调度和用户任务调度。

    系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。/etc/crontab文件就是系统任务调度的配置文件。

    [root@GeekDevOps ~]# cat /etc/crontab 
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    # For details see man 4 crontabs
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed

    用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致,使用者权限文件如下:

    /etc/cron.deny 该文件中所列用户不允许使用crontab命令

    /etc/cron.allow 该文件中所列用户允许使用crontab命令,在CentOS7.2中不存在该文件(If the cron.allow file exists, a user must be listed in it to be allowed to use cron If the cron.allow file does not exist but the cron.deny file does exist, then a user must not be listed in the cron.deny file in order to use cron. If neither of these files exists, only the super user is allowed to use cron.)

    /var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名。

    二、通过官方渠道获取帮助资料

    • crond
    [root@GeekDevOps ~]# crond -h
    Usage:
     crond [options]
    Options:
     -h         print this message 
     -i         deamon runs without inotify support
     -m <comm>  off, or specify prefered client for sending mails
     -n         run in foreground
     -p         permit any crontab
     -P         use PATH="/usr/bin:/bin"
     -c         enable clustering support
     -s         log into syslog instead of sending mails
     -x <flag>  print debug information
    [root@GeekDevOps ~]# man crond
    CRON(8)                                                                           System Administration                                                                          CRON(8)
    NAME
           crond - daemon to execute scheduled commands
    
    SYNOPSIS
           crond [-c | -h | -i | -n | -p | -P | -s | -m<mailcommand>]
           crond -x [ext,sch,proc,pars,load,misc,test,bit]

    通过以上帮助信息,我们可以知道crond是执行任务计划的一个守护进程。在使用crontab之前我们可以根据帮助信息来设置相关选项,一般情况下我们都使用默认值。

    • crontab
    [root@GeekDevOps ~]# crontab --help
    crontab:无效选项 -- -
    crontab: usage error: unrecognized option
    Usage:
     crontab [options] file
     crontab [options]
     crontab -n [hostname]
    Options:
     -u <user>  define user
     -e         edit user's crontab
     -l         list user's crontab
     -r         delete user's crontab
     -i         prompt before deleting
     -n <host>  set host in cluster to run users' crontabs
     -c         get host in cluster to run users' crontabs
     -s         selinux context
     -x <mask>  enable debugging
     CRONTAB(1)                                                                            User Commands                                                                           CRONTAB(1)
    [root@GeekDevOps ~]# man crontab
    NAME
           crontab - maintains crontab files for individual users
    SYNOPSIS
           crontab [-u user] file
           crontab [-u user] [-l | -r | -e] [-i] [-s]
           crontab -n [ hostname ]
           crontab -c
    DESCRIPTION
           Crontab  is  the  program  used  to install a crontab table file, remove or list the existing tables used to serve the cron(8) daemon.  Each user can have their own crontab, and
           though these are files in /var/spool/, they are not intended to be edited directly.  For SELinux in MLS mode, you can define more crontabs for each range.  For more information,
           see selinux(8).
           In  this  version  of Cron it is possible to use a network-mounted shared /var/spool/cron across a cluster of hosts and specify that only one of the hosts should run the crontab
           jobs in the particular directory at any one time.  You may also use crontab(1) from any of these hosts to edit the same shared set of crontab files, and to set and  query  which
           host should run the crontab jobs.

    三、特别说明

    1.通过/etc/crontab文件,我们可以清楚地看到每个字段的含义及取值范围,此处不再进行赘述。
    2.特殊字符的用法

    特殊字符 含义
    *(星号) 代表所有可能的值,只要其他值满足都执行
    ,(逗号) 用逗号隔开表示该字段取值
    -(减号) 两个可取值的整数之前的取值范围
    /n(斜杠) 时间间隔频率

    3.系统任务调度我们可以通过/etc/crontab文件直接配置。用户任务调度我们一般通过crontab命令来进行配置,用户任务调度的配置保存/var/spool/cron/目录下,并以用户名称命名。系统任务调度可以通过直接修改/etc/crontab来配置。新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启crond则马上执行。
    4.当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。
    5.运行crontab -r需要特别谨慎。它从Crontab目录(/var/spool/cron)中删除用户的crontab文件。删除了该用户的所有crontab都没了。
    6.在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’。

    四、用法举例

    1.建立演示账号crontab。

    [root@GeekDevOps ~]# useradd -c "Crontab demo." crontab

    2.星号(*)使用举例。

    [root@GeekDevOps ~]# date
    20180318日 星期日 23:58:50 CST
    [root@GeekDevOps ~]# crontab -u crontab -e
    no crontab for crontab - using an empty one
    crontab: installing new crontab
    [root@GeekDevOps ~]# crontab -l -u crontab
    5 0 * * *  echo "GeekDevOps"
    [root@GeekDevOps ~]# su crontab
    [crontab@GeekDevOps ~]$ cat /var/spool/mail/crontab
    From crontab@GeekDevOps.localdomain  Mon Mar 19 00:05:01 2018
    Return-Path: <crontab@GeekDevOps.localdomain>
    X-Original-To: crontab
    Delivered-To: crontab@GeekDevOps.localdomain
    Received: by GeekDevOps.localdomain (Postfix, from userid 1000)
        id 4B1648D618; Mon, 19 Mar 2018 00:05:01 +0800 (CST)
    From: "(Cron Daemon)" <crontab@GeekDevOps.localdomain>
    To: crontab@GeekDevOps.localdomain
    Subject: Cron <crontab@GeekDevOps> echo "GeekDevOps"
    Content-Type: text/plain; charset=UTF-8
    Auto-Submitted: auto-generated
    Precedence: bulk
    X-Cron-Env: <XDG_SESSION_ID=52>
    X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/1000>
    X-Cron-Env: <LANG=zh_CN.UTF-8>
    X-Cron-Env: <SHELL=/bin/sh>
    X-Cron-Env: <HOME=/home/crontab>
    X-Cron-Env: <PATH=/usr/bin:/bin>
    X-Cron-Env: <LOGNAME=crontab>
    X-Cron-Env: <USER=crontab>
    Message-Id: <20180318160501.4B1648D618@GeekDevOps.localdomain>
    Date: Mon, 19 Mar 2018 00:05:01 +0800 (CST)
    GeekDevOps

    以上例子中完整演示了crontab从建立到执行的过程。“5 0 * * * echo “GeekDevOps””表示在每天00:05执行命令:echo “GeekDevOps”。后面的星号表示只要前面条件满足都执行。例子中的-u选项指定了用户:crontab,-l选项列举了相关用户的用户任务调度,不指定用户则默认为root。执行结果默认写入到用户mail目录下的相关文件中。

    3.逗号(,)的使用举例。

    [crontab@GeekDevOps ~]$ crontab -e
    crontab: installing new crontab
    [crontab@GeekDevOps ~]$ crontab -l
    5 0 * * *  echo "GeekDevOps"
    3 2,6,8 * * * ls /usr/local

    现在我们已经把用户切换到crontab下,因此无需额外指定-u选项相关内容。“3 2,6,8 * * *”表示每天的02:03:00、06:03:00、08:03:00分别执行一次命令:ls /usr/local。

    4.减号(-)的使用举例。

    [crontab@GeekDevOps ~]$ crontab -e
    crontab: installing new crontab
    [crontab@GeekDevOps ~]$ crontab -l
    5 0 * * *  echo "GeekDevOps"
    3 2,6,8 * * * ls /usr/local
    0 2-6 * * 6 df -h /

    例子中的“0 2-6 * * 6 df -h /”表示用户crontab在每周六的02:00、03:00、04:00、05:00、06:00执行命令:df -h / 。

    5.斜杠(/)的使用举例。

    [crontab@GeekDevOps ~]$ exit
    exit
    [root@GeekDevOps ~]# crontab -e 
    no crontab for root - using an empty one
    crontab: installing new crontab
    [root@GeekDevOps ~]# crontab -l
    */1 * * * * echo "GeekDevOps">>/root/GeekDevOps.txt
    [root@GeekDevOps ~]# cat /root/GeekDevOps.txt 
    GeekDevOps
    GeekDevOps

    例子中表示每隔1分钟执行一次命令:echo “GeekDevOps”>>/root/GeekDevOps.txt。

    6.crontab的使用非常简单,很容易理解,只要在取值范围内设置执行的值基本是没有问题的。现在我们要删除已经设置的这些定时任务。

    [root@GeekDevOps ~]# crontab -u crontab -r -i
    crontab: really delete crontab's crontab? y
    [root@GeekDevOps ~]# crontab -u crontab -l
    no crontab for crontab

    例子中,选项-r表示删除所有定时任务。选项-i表示在删除前进行再次确定,输入y或者Y才能真正删除。

    7.备份我们设置的用户任务调度配置文件。

    [root@GeekDevOps ~]# cat /var/spool/cron/root 
    */1 * * * * echo "GeekDevOps">>/root/GeekDevOps.txt
    [root@GeekDevOps ~]# cat /var/spool/cron/root >>contab.bak

    8.系统任务调度的使用举例。

    [root@GeekDevOps ~]# vi /etc/crontab 
    [root@GeekDevOps ~]# cat /etc/crontab 
    */1 * * * * crontab echo "GeekDevOps">>~/GeekDevOps.txt
    [root@GeekDevOps ~]# crontab -l
    no crontab for root
    [root@GeekDevOps ~]# ls -l /home/crontab/GeekDevOps.txt 
    -rw-r--r--. 1 crontab crontab 44 319 01:15 /home/crontab/GeekDevOps.txt
    [root@GeekDevOps ~]# cat /home/crontab/GeekDevOps.txt 
    GeekDevOps

    系统任务调度与用户任务调度不一样,需要直接在/etc/crontab里面配置,如果需要指定用户,还需要在执行命令前指定用户名。通过crontab -l 命令是查看不到系统任务调度任务的。

    展开全文
  • 在linux的top命令里的cpu信息是什么意思呢? Cpu(s): 62.1% us, 15.9% sy, 0.1% ni, 19.4% id, 2.0% wa, 0.1% hi, 0.4% si Mem: 8247956k total, 8232004k used, 15952k free, 205240k buffers Swap: ...
  • 运行了一个spark任务,然后,发现有一个Job特别的慢,其他的最多用了30分钟,但是这个任务却运行了 1.1个小时,数据量是100万的数据。 2.1 任务 点击进入 2.2 DAG 图 2.4 异常JOB 2.5 Job的DAG图 可以看到是从...
  • 分布式任务调度

    万次阅读 2018-10-01 22:31:50
    什么是定时任务? 指定时间去执行任务 Java实现定时任务方式 1.Thread public class Demo01 { static long count = 0; public static void main(String[] args) { Runnable runnable = new Runnable() { ...
  • 二、基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了。 三、基于注解设定多线程定时任务 一...
  • analytics.js 库通过 Client-ID 字段来完成此任务,Client-ID 是随机生成的独一无二的字符串,生成后的 ID 存储在浏览器的 Cookie 中,这样即可在用户和其访问过的相同网站之间建立关联。 默认情况下,analytics.js...
  • windows计划任务定时任务

    千次阅读 2019-04-15 09:55:38
    windows计划任务相关: C:\Users\Administrator> schtasks /? SCHTASKS /parameter [arguments] 描述: 允许管理员创建、删除、查询、更改、运行和中止本地或远程系统上的计划任 务。 参数列表: /Create 创建...
  • 任务学习

    万次阅读 多人点赞 2018-01-12 16:35:45
    任务学习(Multitask learning)是迁移学习算法的一种,迁移学习可理解为定义一个一个源领域source domain和一个目标领域(target domain),在source domain学习,并把学习到的知识迁移到target domain,提升...
  • 这篇文章主要介绍了python基于celery实现异步任务周期任务定时任务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 hello, 小伙伴们, 好久不更新了,这一次带来...
  • Task/线程管理篇 提示:本文基于开源鸿蒙内核分析,详细查看进入kernel_liteos_a源码。 本文作者:持续深入...什么是任务池?2.就绪队列是怎么回事3.任务栈是怎么回事3.任务栈初始化总结 前言 在鸿蒙内核中,一个T
  • ID和class有什么区别?

    千次阅读 2018-07-29 16:48:08
    今天给大家分享一下,修真院官网前端js任务1,深度思考中的知识点——ID和class有什么区别? 一,背景介绍 HTML页面中的元素实现一对一,一对多或者多对一的控制,这就需要用到CSS选择器。HTML页面中的 元素就是...
  • Spring 定时任务@Scheduled

    万次阅读 2018-03-12 19:34:53
    L是‘last’的省略写法可以表示day-of-month和day-of-week域,但在两个字段中的意思不同,例如day-of-month域中表示一个月的最后一天。如果在day-of-week域表示‘7’或者‘SAT’,如果在day-of-week域中前面加上数字...
  • 导入数据库失败,Error:Pollerror,导入数据任务id:373985)异常,错误信息:解析导入文件错误,请检查导入文件内容,仅支持导入json格式数据及excel文件,错误详情如下:JSONdecoderoutofsync-datachangingunderfoot...
  • Celery 立即执行任务 延迟执行任务

    千次阅读 2020-03-23 16:13:44
    使用步骤: ...绑定存放任务的仓库,绑定存放任务结构的仓库,绑定任务函数文件的路径 创建Celery对象 启动celery服务 celery服务启动指令: 1. 非windows celery worker -A celery_task -l info 2. wi...
  • 1.Azkaban实战Azkaba内置的任务类型支持command、javaCommand类型单一job示例1、创建job描述文件vi command.job #command.job type=command command=echo 'hello'2、将job资源文件打包成zip文件 zip
  • 多线程之Task(任务

    万次阅读 多人点赞 2018-11-12 15:44:30
    任务和线程的区别: 1、任务是架构在线程之上的,也就是说任务最终还是要抛给线程去执行。 2、任务跟线程不是一对一的关系,比如开10个任务并不是说会开10个线程,这一点任务有点类似线程池,但是任务相比线程池...
  • IP地址 子网掩码 网络号 主机号 网络地址 主机地址以及ip段/数字-如192 168 0 1/24是什么意思
  • 什么设计成JobDetail + Job,不直接使用Job?这是因为任务是有可能并发执行,如果Scheduler直接使用Job,就会存在对同一个Job实例并发访问的问题。而JobDetail & Job 方式,sheduler每次执行,都会根据JobDetail...
  • 本教程的重点是防止Quartz任务并行和在任务中获取Spring中Bean的方法,对应教程第三和第四部分。 一、Spring和Quartz相关官方文档地址 Spring: ...Quartz...
  • ucos 任务就绪表及任务调度

    千次阅读 2013-11-12 10:34:12
    1:任务就绪表
  • 使用 RxAndroid 处理异步任务

    千次阅读 2015-11-08 20:54:35
    博客: http://www.wangchenlong.org/ Rx是响应式编程的意思, 本质是观察者模式, 是以观察者(Observer)和订阅者(Subscriber)为基础的异步响应方式. 在Android编程时, 经常会使用后台线程, 那么就可以使用这种方式.
  • 甘特图父子任务级联关系

    千次阅读 2012-09-27 19:38:21
    由于甘特图的任务id必须是0-9的数字,所以这里的任务id为rid,id字段为数据库中的逐渐。 下面两个方法为核心方法。   //定义一个空有序集合 List resultList = new ArrayList();   //将获取的数据进行级联...
  • linux 执行计划任务

    千次阅读 2007-01-17 10:10:00
    计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思。在Linux中,我们经常用到 crond 服务器来完成这项工作。cron服务器可以根据配置文件约定的时间来执行特定的作务。比如我们可以在配置文件中约定...
  • 任务签收

    千次阅读 2015-05-07 16:21:06
    一、 taskList.jsp中有签收入口 签收 办理 ...然后具体签收做了什么事情呢?在控制层中有 @Controller @RequestMapping(value = "/oa/leave") public class Le
  • UCOS2系统内核讲述(四)_创建任务

    千次阅读 2016-09-06 18:18:02
    Ⅰ、写在前面 学习本文之前可以参看我前面的文章: UCOS2_STM32移植详细过程...上一篇文章讲述了关于TCB(Task Control Block)任务控制块数据结构体的内容。本文学习与应用、也与系统内核紧密相关的一个函数“OSTa
  • Java/Android中的优先级任务队列的实践

    万次阅读 多人点赞 2017-05-12 22:18:32
    .id = id; } @Override public void run () { // 为了尽量模拟窗口办事的速度,我们这里停顿两秒。 try { Thread.sleep( 2000 ); } catch (InterruptedException ignored) { } System.out....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 115,580
精华内容 46,232
关键字:

任务id是什么意思