zoukankan      html  css  js  c++  java
  • killall 中的 signal

    Flutter 开发时,会遇到另的任务挂起导致新的 Dart 服务无法启动的问题,提示如下:

    Waiting for another flutter command to release the startup lock...
     

    killall 命令

    此时可以通过以下命令,将所有当前运行的 Dart 服务先结束掉:

    $ killall -9 dart
     

    SIGNAL 参数

    这里的 -9 指定的是 killall -SIGNAL 中的 SIGNAL 参数,可用的 SIGNAL 参数可通过 killall -l 列出:

    $ killall -l
    HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM URG STOP
    TSTP CONT CHLD TTIN TTOU IO XCPU XFSZ VTALRM PROF WINCH INFO USR1 USR2
     

    可以看到这里列出的是各种信号的名称,每个名称根据其顺序对应了一个数字,所以指定 -SIGNAL 参数时,除了使用数字,也可以直接使用这里列出的名称。

    名称和数字的对应关系在这里不直观,可通过 man signal 来查看:

    $ man signal
    ...
         No    Name         Default Action       Description
         1     SIGHUP       terminate process    terminal line hangup
         2     SIGINT       terminate process    interrupt program
         3     SIGQUIT      create core image    quit program
         4     SIGILL       create core image    illegal instruction
         5     SIGTRAP      create core image    trace trap
         6     SIGABRT      create core image    abort program (formerly SIGIOT)
         7     SIGEMT       create core image    emulate instruction executed
         8     SIGFPE       create core image    floating-point exception
         9     SIGKILL      terminate process    kill program
         10    SIGBUS       create core image    bus error
         11    SIGSEGV      create core image    segmentation violation
         12    SIGSYS       create core image    non-existent system call invoked
         13    SIGPIPE      terminate process    write on a pipe with no reader
         14    SIGALRM      terminate process    real-time timer expired
         15    SIGTERM      terminate process    software termination signal
         16    SIGURG       discard signal       urgent condition present on socket
         17    SIGSTOP      stop process         stop (cannot be caught or ignored)
         18    SIGTSTP      stop process         stop signal generated from keyboard
         19    SIGCONT      discard signal       continue after stop
         20    SIGCHLD      discard signal       child status has changed
         21    SIGTTIN      stop process         background read attempted from con-
                                                 trol terminal
         22    SIGTTOU      stop process         background write attempted to con-
                                                 trol terminal
         23    SIGIO        discard signal       I/O is possible on a descriptor (see
                                                 fcntl(2))
         24    SIGXCPU      terminate process    cpu time limit exceeded (see
                                                 setrlimit(2))
         25    SIGXFSZ      terminate process    file size limit exceeded (see
                                                 setrlimit(2))
         26    SIGVTALRM    terminate process    virtual time alarm (see
                                                 setitimer(2))
         27    SIGPROF      terminate process    profiling timer alarm (see
                                                 setitimer(2))
         28    SIGWINCH     discard signal       Window size change
         29    SIGINFO      discard signal       status request from keyboard
         30    SIGUSR1      terminate process    User defined signal 1
         31    SIGUSR2      terminate process    User defined signal 2
    ...
     

    SIGNAL 的用途

    程序被终止时,是可以根据外部传来的信号判断出终止的原因,从而在业务上进行合理的善后工作。结束程序时,默认会发送 SIGTERM 信号,而 killall 时,通过手动指定相应的信号,可以让程序合理的响应。

    The text was updated successfully, but these errors were encountered:

    CC BY-NC-SA 署名-非商业性使用-相同方式共享
  • 相关阅读:
    .net开发微信公众号(2)-验证服务器地址
    [广度遍历和深度遍历]聊聊算法和设计模式
    DDD领域驱动设计之聚合、实体、值对象
    DDD领域驱动设计之运用层代码
    DDD领域驱动设计之领域服务
    DDD领域驱动设计之领域基础设施层
    DDD领域驱动设计实践篇之如何提取模型
    Docker最全教程——从理论到实战(七)
    Docker最全教程——从理论到实战(六)
    Docker最全教程——从理论到实战(五)
  • 原文地址:https://www.cnblogs.com/Wayou/p/14837065.html
Copyright © 2011-2022 走看看