精华内容
下载资源
问答
  • process
    千次阅读
    2019-12-20 20:53:23

    之前使用的是linux,对于进程管理特别方便,相较之下,windows的命令行管理进程就不是那么如意,随研究了一番wmic,记录如下,基本就是根据帮助文档来试验的。

    wmic命令总览

    C:\Users\Administrator>wmic /?
    
    WMIC 已弃用。
    
    [全局开关] <命令>
    
    可以使用以下全局开关:
    /NAMESPACE           别名在其上操作的命名空间的路径。
    /ROLE                包含别名定义的角色的路径。
    /NODE                别名在其上操作的服务器。
    /IMPLEVEL            客户端模拟级别。
    /AUTHLEVEL           客户端身份验证级别。
    /LOCALE              客户端应使用的语言 ID。
    /PRIVILEGES          启用或禁用所有权限。
    /TRACE               将调试信息输出到 stderr。
    /RECORD              记录所有输入命令和输出内容。
    /INTERACTIVE         设置或重置交互模式。
    /FAILFAST            设置或重置 FailFast 模式。
    /USER                会话期间要使用的用户。
    /PASSWORD            登录会话时要使用的密码。
    /OUTPUT              指定输出重定向模式。
    /APPEND              指定输出重定向模式。
    /AGGREGATE           设置或重置聚合模式。
    /AUTHORITY           指定连接的 <授权类型>。
    /?[:<BRIEF|FULL>]    用法信息。
    
    有关特定全局开关的详细信息,请键入: switch-name /?
    
    
    当前角色中可以使用以下别名:
    ALIAS                    - 对本地系统上可用别名的访问
    BASEBOARD                - 基板(也称为主板或系统板)管理。
    BIOS                     - 基本输入/输出服务(BIOS)管理。
    BOOTCONFIG               - 启动配置管理。
    CDROM                    - CD-ROM 管理。
    COMPUTERSYSTEM           - 计算机系统管理。
    CPU                      - CPU 管理。
    CSPRODUCT                - SMBIOS 中的计算机系统产品信息。
    DATAFILE                 - 数据文件管理。
    DCOMAPP                  - DCOM 应用程序管理。
    DESKTOP                  - 用户的桌面管理。
    DESKTOPMONITOR           - 桌面监视器管理。
    DEVICEMEMORYADDRESS      - 设备内存地址管理。
    DISKDRIVE                - 物理磁盘驱动器管理。
    DISKQUOTA                - 用于 NTFS 卷的磁盘空间使用量。
    DMACHANNEL               - 直接内存访问(DMA)通道管理。
    ENVIRONMENT              - 系统环境设置管理。
    FSDIR                    - 文件系统目录项管理。
    GROUP                    - 组帐户管理。
    IDECONTROLLER            - IDE 控制器管理。
    IRQ                      - 中断请求线路(IRQ)管理。
    JOB                      - 提供对使用计划服务安排的作业的访问。
    LOADORDER                - 定义执行依赖关系的系统服务的管理。
    LOGICALDISK              - 本地存储设备管理。
    LOGON                    - 登录会话。
    MEMCACHE                 - 缓存内存管理。
    MEMORYCHIP               - 内存芯片信息。
    MEMPHYSICAL              - 计算机系统的物理内存管理。
    NETCLIENT                - 网络客户端管理。
    NETLOGIN                 - 网络登录信息(属于特定用户)管理。
    NETPROTOCOL              - 协议(及其网络特征)管理。
    NETUSE                   - 活动网络连接管理。
    NIC                      - 网络接口控制器(NIC)管理。
    NICCONFIG                - 网络适配器管理。
    NTDOMAIN                 - NT 域管理。
    NTEVENT                  - NT 事件日志中的项目。
    NTEVENTLOG               - NT 事件日志文件管理。
    ONBOARDDEVICE            - 主板(系统板)中内置的通用适配器设备的管理。
    OS                       - 已安装操作系统的管理。
    PAGEFILE                 - 虚拟内存文件交换管理。
    PAGEFILESET              - 页面文件设置管理。
    PARTITION                - 物理磁盘的已分区区域的管理。
    PORT                     - I/O 端口管理。
    PORTCONNECTOR            - 物理连接端口管理。
    PRINTER                  - 打印机设备管理。
    PRINTERCONFIG            - 打印机设备配置管理。
    PRINTJOB                 - 打印作业管理。
    PROCESS                  - 进程管理。
    PRODUCT                  - 安装程序包任务管理。
    QFE                      - 快速修复工程。
    QUOTASETTING             - 卷上的磁盘配额设置信息。
    RDACCOUNT                - 远程桌面连接权限管理。
    RDNIC                    - 对特定网络适配器的远程桌面连接管理。
    RDPERMISSIONS            - 特定远程桌面连接的权限。
    RDTOGGLE                 - 远程打开或关闭远程桌面侦听程序。
    RECOVEROS                - 操作系统出现故障时将从内存收集的信息。
    REGISTRY                 - 计算机系统注册表管理。
    SCSICONTROLLER           - SCSI 控制器管理。
    SERVER                   - 服务器信息管理。
    SERVICE                  - 服务应用程序管理。
    SHADOWCOPY               - 卷影副本管理。
    SHADOWSTORAGE            - 卷影副本存储区域管理。
    SHARE                    - 共享资源管理。
    SOFTWAREELEMENT          - 系统上安装的软件产品元素的管理。
    SOFTWAREFEATURE          - SoftwareElement 的软件产品子集的管理。
    SOUNDDEV                 - 声音设备管理。
    STARTUP                  - 当用户登录到计算机系统时自动运行的命令的管理。
    SYSACCOUNT               - 系统帐户管理。
    SYSDRIVER                - 基本服务的系统驱动程序管理。
    SYSTEMENCLOSURE          - 物理系统外壳管理。
    SYSTEMSLOT               - 物理连接点(包括端口、插槽和外设以及专用连接点)的管理。
    TAPEDRIVE                - 磁带驱动器管理。
    TEMPERATURE              - 温度传感器(电子温度计)数据管理。
    TIMEZONE                 - 时区数据管理。
    UPS                      - 不间断电源(UPS)管理。
    USERACCOUNT              - 用户帐户管理。
    VOLTAGE                  - 电压传感器(电子电压表)数据管理。
    VOLUME                   - 本地存储卷管理。
    VOLUMEQUOTASETTING       - 将磁盘配额设置与特定磁盘卷相关联。
    VOLUMEUSERQUOTA          - 每用户存储卷配额管理。
    WMISET                   - WMI 服务操作参数管理。
    
    有关特定别名的详细信息,请键入: alias /?
    
    CLASS     - 按 Esc 键可获取完整 WMI 架构。
    PATH      - 按 Esc 键可获取完整 WMI 对象路径。
    CONTEXT   - 显示所有全局开关的状态。
    QUIT/EXIT - 退出程序。
    
    有关 CLASS/PATH/CONTEXT 的详细信息,请键入: (CLASS | PATH | CONTEXT) /?

    1.wmic process

    本文主要介绍 wmic process 命令的使用

    C:\Users\Administrator>wmic process  /?
    
    PROCESS - 进程管理。
    
    提示: BNF 的别名用法。
    (<别名> [WMI 对象] | <别名> [<路径 where>] | [<别名>] <路径 where>) [<谓词子句>]。
    
    用法:
    
    PROCESS ASSOC [<格式说明符>]
    PROCESS CALL <方法名称> [<实际参数列表>]
    PROCESS CREATE <分配列表>
    PROCESS DELETE
    PROCESS GET [<属性列表>] [<获取开关>]
    PROCESS LIST [<列表格式>] [<列表开关>]

    wmic process 不加参数显示所有的进程和所有信息,从Caption列到WriteTransferCount列,共计45列。

    这里只选取了两个进程来展示,当然不是所有的进程都有每列对应的信息。

    C:\Users\Administrator>wmic process
    Caption        CommandLine                                        CreationClassName  CreationDate               CSCreationClassName   CSName  Description       ExecutablePath                                   ExecutionState  Handle  HandleCount  InstallDate  KernelModeTime  MaximumWorkingSetSize  MinimumWorkingSetSize  Name           OSCreationClassName    OSName                                                               OtherOperationCount  OtherTransferCount  PageFaults  PageFileUsage  ParentProcessId  PeakPageFileUsage  PeakVirtualSize  PeakWorkingSetSize  Priority  PrivatePageCount  ProcessId  QuotaNonPagedPoolUsage  QuotaPagedPoolUsage  QuotaPeakNonPagedPoolUsage  QuotaPeakPagedPoolUsage  ReadOperationCount  ReadTransferCount  SessionId  Status  TerminationDate  ThreadCount  UserModeTime  VirtualSize    WindowsVersion  WorkingSetSize  WriteOperationCount  WriteTransferCount 
    notepad.exe    "C:\WINDOWS\system32\notepad.exe"                  Win32_Process      20191219174841.511662+480  Win32_ComputerSystem  ABERT   notepad.exe       C:\WINDOWS\system32\notepad.exe                                  1168    269                       1718750         1380                   200                    notepad.exe    Win32_OperatingSystem  Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  1167                 11874               5509        5172           10120            5520               2203497086976    18428               8         5296128           1168       20                      250                  21                          262                      2                   18539              1                                   4            468750        2203489005568  10.0.18362      18817024        0                    0                  
    notepad++.exe  "C:\Program Files (x86)\Notepad++\notepad++.exe"   Win32_Process      20191219175123.741545+480  Win32_ComputerSystem  ABERT   notepad++.exe     C:\Program Files (x86)\Notepad++\notepad++.exe                   8764    438                       74531250        1380                   200                    notepad++.exe  Win32_OperatingSystem  Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  3818                 42922               12980       22048          10120            23724              215113728        38316               8         22577152          8764       36                      350                  37                          362                      170                 2242184            1                                   6            52812500      208207872      10.0.18362      38113280        0                    0                  
    ...

    我们可以使用where关键字来过滤某个特定的进程,如我们知道进程名为notepad.exe

    C:\Users\Administrator>wmic process where Caption='notepad.exe'
    Caption      CommandLine                        CreationClassName  CreationDate               CSCreationClassName   CSName  Description  ExecutablePath                   ExecutionState  Handle  HandleCount  InstallDate  KernelModeTime  MaximumWorkingSetSize  MinimumWorkingSetSize  Name         OSCreationClassName    OSName                                                               OtherOperationCount  OtherTransferCount  PageFaults  PageFileUsage  ParentProcessId  PeakPageFileUsage  PeakVirtualSize  PeakWorkingSetSize  Priority  PrivatePageCount  ProcessId  QuotaNonPagedPoolUsage  QuotaPagedPoolUsage  QuotaPeakNonPagedPoolUsage  QuotaPeakPagedPoolUsage  ReadOperationCount  ReadTransferCount  SessionId  Status  TerminationDate  ThreadCount  UserModeTime  VirtualSize    WindowsVersion  WorkingSetSize  WriteOperationCount  WriteTransferCount
    notepad.exe  "C:\WINDOWS\system32\notepad.exe"  Win32_Process      20191219174841.511662+480  Win32_ComputerSystem  ABERT   notepad.exe  C:\WINDOWS\system32\notepad.exe                  1168    269                       1718750         1380                   200                    notepad.exe  Win32_OperatingSystem  Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  1167                 11874               5510        5172           10120            5520               2203497086976    18428               8         5296128           1168       20                      250                  21                          262                      2                   18539              1                                   4            468750        2203489005568  10.0.18362      18812928        0                    0
    

    转换成纵向更好观看

    Caption                    notepad.exe
    CommandLine                "C:\WINDOWS\system32\notepad.exe"
    CreationClassName          Win32_Process
    CreationDate               20191219162607.799514+480
    CSCreationClassName        Win32_ComputerSystem
    CSName                     ABERT
    Description                notepad.exe
    ExecutablePath             C:\WINDOWS\system32\notepad.exe
    ExecutionState             
    Handle                     13132
    HandleCount                279
    InstallDate                
    KernelModeTime             1718750
    MaximumWorkingSetSize      1380
    MinimumWorkingSetSize      200
    Name                       notepad.exe
    OSCreationClassName        Win32_OperatingSystem
    OSName                     Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1
    OtherOperationCount        1139
    OtherTransferCount         11842
    PageFaults                 5461
    PageFileUsage              6000
    ParentProcessId            10524
    PeakPageFileUsage          6000
    PeakVirtualSize            2203497086976
    PeakWorkingSetSize         18728
    Priority                   8
    PrivatePageCount           6144000
    ProcessId                  13132
    QuotaNonPagedPoolUsage     21
    QuotaPagedPoolUsage        250
    QuotaPeakNonPagedPoolUsage 21
    QuotaPeakPagedPoolUsage    262
    ReadOperationCount         2
    ReadTransferCount          17864
    SessionId                  1
    Status                     
    TerminationDate            
    ThreadCount                8
    UserModeTime               781250
    VirtualSize                2203491102720
    WindowsVersion             10.0.18362
    WorkingSetSize             19156992
    WriteOperationCount        0
    WriteTransferCount         0

    2.wmic process list

    我们以process list(属性列表操作) 命令为例进行讲解

    wmic process list 不加参数,默认打印所有的CommandLine列到WriteTransferCount列,共计40列。与前面直接使用wmic process 展示的45列相比,少了如下5列。

    Caption
    CreationClassName
    CreationDate
    CSCreationClassName
    OSCreationClassName

    C:\Users\Administrator>wmic process list
    CommandLine                                                       CSName  Description      ExecutablePath                        ExecutionState  Handle  HandleCount  InstallDate  KernelModeTime  MaximumWorkingSetSize  MinimumWorkingSetSize  Name              OSName                                                               OtherOperationCount  OtherTransferCount  PageFaults  PageFileUsage  ParentProcessId  PeakPageFileUsage  PeakVirtualSize  PeakWorkingSetSize  Priority  PrivatePageCount  ProcessId  QuotaNonPagedPoolUsage  QuotaPagedPoolUsage  QuotaPeakNonPagedPoolUsage  QuotaPeakPagedPoolUsage  ReadOperationCount  ReadTransferCount  SessionId  Status  TerminationDate  ThreadCount  UserModeTime  VirtualSize    WindowsVersion  WorkingSetSize  WriteOperationCount  WriteTransferCount
                                                                      ABERT   services.exe                                                           884     851                       70781250                                                      services.exe      Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  17942                194666              24419       6100           812              8108               2203437035520    21524               9         6246400           884        12                      180                  19                          215                      2795                908712             0                                   8            18593750      2203385245696  10.0.18362      11182080        1                    160
    C:\WINDOWS\system32\lsass.exe                                     ABERT   lsass.exe        C:\WINDOWS\system32\lsass.exe                         904     1594                      39843750        1380                   200                    lsass.exe         Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  26557                1795723             11315       8276           812              8736               2203419828224    20004               9         8474624           904        29                      152                  33                          157                      4264                2932158            0                                   8            25781250      2203417669632  10.0.18362      20156416        1162                 447449
    winlogon.exe                                                      ABERT   winlogon.exe     C:\WINDOWS\system32\winlogon.exe                      952     282                       1562500         1380                   200                    winlogon.exe      Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  579                  200918              6128        3232           804              4484               2203429298176    18324               13        3309568           952        18                      148                  19                          159                      65                  209250             1                                   7            625000        2203422507008  10.0.18362      12677120        0                    0
    C:\WINDOWS\system32\svchost.exe -k DcomLaunch -p -s PlugPlay      ABERT   svchost.exe      C:\WINDOWS\system32\svchost.exe                       652     113                       312500          1380                   200                    svchost.exe       Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  64                   430                 2030        1648           884              2832               2203391688704    6028                8         1687552           652        12                      60                   12                          66                       0                   0                  0                                   2            0             2203388182528  10.0.18362      5910528         0                    0
    C:\WINDOWS\system32\svchost.exe -k DcomLaunch -p                  ABERT   svchost.exe      C:\WINDOWS\system32\svchost.exe                       664     1234                      40937500        1380                   200                    svchost.exe       Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  13913                384159              26780       13628          884              14504              2203492900864    38172               8         13955072          664        29                      662                  33                          669                      1194                75026              0                                   21           8593750       2203474505728  10.0.18362      33574912        3                    97832
    "fontdrvhost.exe"                                                 ABERT   fontdrvhost.exe  C:\WINDOWS\system32\fontdrvhost.exe                   892     33                        8906250         1380                   200                    fontdrvhost.exe   Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  8303                 1292684             1339        2300           812              4460               2203428683776    4512                8         2355200           892        6                       108                  7                           108                      1                   66082              0                                   5            156250        2203425009664  10.0.18362      4419584         0                    0
    "fontdrvhost.exe"                                                 ABERT   fontdrvhost.exe  C:\WINDOWS\system32\fontdrvhost.exe                   824     33                        15468750        1380                   200                    fontdrvhost.exe   Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  8328                 1295812             5264        4908           952              4952               2203533037568    15992               8         5025792           824        9                       270                  10                          309                      1                   66082              1                                   5            13906250      2203512152064  10.0.18362      16359424        0                    0
    C:\WINDOWS\system32\svchost.exe -k RPCSS -p                       ABERT   svchost.exe      C:\WINDOWS\system32\svchost.exe                       1052    1402                      75781250        1380                   200                    svchost.exe       Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  4109                 255745              29082       10096          884              10668              2203464146944    18092               8         10338304          1052       24                      183                  30                          225                      17                  8704               0                                   15           66562500      2203423059968  10.0.18362      17932288        0                    0
    C:\WINDOWS\system32\svchost.exe -k DcomLaunch -p -s LSM           ABERT   svchost.exe      C:\WINDOWS\system32\svchost.exe                       1108    389                       15000000        1380                   200                    svchost.exe       Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  205                  968                 4249        3796           884              4120               2203414343680    12024               8         3887104           1108       17                      126                  19                          127                      0                   0                  0                                   8            7343750       2203406204928  10.0.18362      11943936        0                    0
    "dwm.exe"                                                         ABERT   dwm.exe          C:\WINDOWS\system32\dwm.exe                           1176    1034                      132500000       1380                   200                    dwm.exe           Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  1762                 41986               200751      71276          952              109816             2203878887424    142720              13        72986624          1176       50                      754                  59                          794                      37                  30992              1                                   18           165312500     2203828015104  10.0.18362      106606592       37                   652
    C:\WINDOWS\System32\svchost.exe -k NetworkService -s TermService  ABERT   svchost.exe      C:\WINDOWS\System32\svchost.exe                       1256    495                       6718750         1380                   200                    svchost.exe       Microsoft Windows 10 专业版|C:\WINDOWS|\Device\Harddisk0\Partition1  598                  5620                6883        4932           884              6096               2203455123456    13712               8         5050368           1256       23                      142                  24                          174                      0                   0                  0                                   26           1875000       2203435368448  10.0.18362      13484032        0                    0
    ...

    wmic process list 也可以使用 where关键字来限定条件,但是需要将where句子放在process和list之间

    C:\Users\Administrator>wmic process  where Name='notepad.exe' list
    CommandLine                        CSName  Description  ExecutablePath                   ExecutionState  Handle  HandleCount  InstallDate  KernelModeTime  MaximumWorkingSetSize  MinimumWorkingSetSize  Name         OSName                                                               OtherOperationCount  OtherTransferCount  PageFaults  PageFileUsage  ParentProcessId  PeakPageFileUsage  PeakVirtualSize  PeakWorkingSetSize  Priority  PrivatePageCount  ProcessId  QuotaNonPagedPoolUsage  QuotaPagedPoolUsage  QuotaPeakNonPagedPoolUsage  QuotaPeakPagedPoolUsage  ReadOperationCount  ReadTransferCount  SessionId  Status  TerminationDate  ThreadCount  UserModeTime  VirtualSize    WindowsVersion  WorkingSetSize  WriteOperationCount  WriteTransferCount
    "C:\WINDOWS\system32\notepad.exe"  ABERT   notepad.exe  C:\WINDOWS\system32\notepad.exe                  1168    269                       1718750         1380                   200                    notepad.exe  Microsoft Windows 10 专业 版|C:\WINDOWS|\Device\Harddisk0\Partition1  1167                 11874               5511        5172           10120            5520               2203497086976    18428               8         5296128           1168       20                      250                  21                          262                      2                   18539              1                                   4            468750        2203489005568  10.0.18362      15728640        0                    0
    

    wmic process list 的帮助文档如下:

    C:\Users\Administrator>wmic process  list /?
    
    属性列表操作。
    用法:
    
    LIST [<列表格式>] [<列表开关>]
    
    可以使用以下 LIST 格式:
    
    BRIEF -      ThreadCount,
                 HandleCount,
                 Name,
                 Priority,
                 ProcessId
    
    FULL -       CommandLine,
                 CSName,
                 Description,
                 ExecutablePath,
                 ExecutionState,
                 Handle,
                 HandleCount,
                 InstallDate,
                 KernelModeTime,
                 MaximumWorkingSetSize,
                 MinimumWorkingSetSize,
                 Name,
                 OSName,
                 OtherOperationCount,
                 OtherTransferCount,
                 PageFaults,
                 PageFileUsage,
                 ParentProcessId,
                 PeakPageFileUsage,
                 PeakVirtualSize,
                 PeakWorkingSetSize,
                 Priority,
                 PrivatePageCount,
                 ProcessId,
                 QuotaNonPagedPoolUsage,
                 QuotaPagedPoolUsage,
                 QuotaPeakNonPagedPoolUsage,
                 QuotaPeakPagedPoolUsage,
                 ReadOperationCount,
                 ReadTransferCount,
                 SessionId,
                 Status,
                 TerminationDate,
                 ThreadCount,
                 UserModeTime,
                 VirtualSize,
                 WindowsVersion,
                 WorkingSetSize,
                 WriteOperationCount,
                 WriteTransferCount
    
    INSTANCE -   __PATH
    
    IO -         Name,
                 ProcessId,
                 ReadOperationCount,
                 ReadTransferCount,
                 WriteOperationCount,
                 WriteTransferCount
    
    MEMORY -     Handle,
                 MaximumWorkingSetSize,
                 MinimumWorkingSetSize,
                 Name,
                 PageFaults,
                 PageFileUsage,
                 PeakPageFileUsage,
                 PeakVirtualSize,
                 PeakWorkingSetSize,
                 PrivatePageCount,
                 QuotaNonPagedPoolUsage,
                 QuotaPagedPoolUsage,
                 QuotaPeakNonPagedPoolUsage,
                 QuotaPeakPagedPoolUsage,
                 VirtualSize,
                 WorkingSetSize
    
    STATISTICS - HandleCount,
                 Name,
                 KernelModeTime,
                 MaximumWorkingSetSize,
                 MinimumWorkingSetSize,
                 OtherOperationCount,
                 OtherTransferCount,
                 PageFaults,
                 PageFileUsage,
                 PeakPageFileUsage,
                 PeakVirtualSize,
                 PeakWorkingSetSize,
                 PrivatePageCount,
                 ProcessId,
                 QuotaNonPagedPoolUsage,
                 QuotaPagedPoolUsage,
                 QuotaPeakNonPagedPoolUsage,
                 QuotaPeakPagedPoolUsage,
                 ReadOperationCount,
                 ReadTransferCount,
                 ThreadCount,
                 UserModeTime,
                 VirtualSize,
                 WorkingSetSize,
                 WriteOperationCount,
                 WriteTransferCount
    
    STATUS -     Status,
                 Name,
                 ProcessId
    
    SYSTEM -     __CLASS,
                 __DERIVATION,
                 __DYNASTY,
                 __GENUS,
                 __NAMESPACE,
                 __PATH,
                 __PROPERTY_COUNT,
                 __RELPATH,
                 __SERVER,
                 __SUPERCLASS
    
    可以使用以下 LIST 开关:
    
    /TRANSLATE:<table name>      - Translate output via values from <table name>.
    /EVERY:<间隔> [/REPEAT:<重复计数>] - 如果 /REPEAT 已指定命令执行 <重复计数> 次,则每(X 间隔)秒返回值。
    /FORMAT:<格式说明符>   - 处理 XML 结果的关键字/XSL 文件名。
    
    注意: /TRANSLATE 和 /FORMAT 开关的顺序会影响输出外观。
    第一种情况: 如果 /TRANSLATE 位于 /FORMAT 之前,则编排格式会跟在结果转换之后。
    第二种情况: 如果 /TRANSLATE 位于 /FORMAT 之后,则转换已编排了格式的结果。

    可以看到,wmic process list   [ brief | full | instance | io | memory | statistics | status | system  ] 

    list 后面可以如上方括号终端内容,他们分别是将list的40列做了一个分类,以及一些额外的属性。

    通过进程名查看父进程ID,如查看notepad.exe进程,打印brief。

    C:\Users\Administrator>wmic process  where Name='notepad.exe' list BRIEF
    HandleCount  Name         Priority  ProcessId  ThreadCount  WorkingSetSize
    269          notepad.exe  8         1168       4            15577088

    3.wmic process get

    查看get的帮助文档,可以看到get可以使用的属性有如下40个,其实他就是对应了前面wmic process list打印的40列。

    C:\Users\Administrator>wmic process get /?
    
    属性获取操作。
    用法:
    
    GET [<属性列表>] [<获取开关>]
    注意: <属性列表> ::= <属性名称> | <属性名称>,  <属性列表>
    
    可以使用以下属性:
    属性                            类型                    操作
    ========                                ====                    =========
    CSName                                  N/A                     N/A
    CommandLine                             N/A                     N/A
    Description                             N/A                     N/A
    ExecutablePath                          N/A                     N/A
    ExecutionState                          N/A                     N/A
    Handle                                  N/A                     N/A
    HandleCount                             N/A                     N/A
    InstallDate                             N/A                     N/A
    KernelModeTime                          N/A                     N/A
    MaximumWorkingSetSize                   N/A                     N/A
    MinimumWorkingSetSize                   N/A                     N/A
    Name                                    N/A                     N/A
    OSName                                  N/A                     N/A
    OtherOperationCount                     N/A                     N/A
    OtherTransferCount                      N/A                     N/A
    PageFaults                              N/A                     N/A
    PageFileUsage                           N/A                     N/A
    ParentProcessId                         N/A                     N/A
    PeakPageFileUsage                       N/A                     N/A
    PeakVirtualSize                         N/A                     N/A
    PeakWorkingSetSize                      N/A                     N/A
    Priority                                N/A                     N/A
    PrivatePageCount                        N/A                     N/A
    ProcessId                               N/A                     N/A
    QuotaNonPagedPoolUsage                  N/A                     N/A
    QuotaPagedPoolUsage                     N/A                     N/A
    QuotaPeakNonPagedPoolUsage              N/A                     N/A
    QuotaPeakPagedPoolUsage                 N/A                     N/A
    ReadOperationCount                      N/A                     N/A
    ReadTransferCount                       N/A                     N/A
    SessionId                               N/A                     N/A
    Status                                  N/A                     N/A
    TerminationDate                         N/A                     N/A
    ThreadCount                             N/A                     N/A
    UserModeTime                            N/A                     N/A
    VirtualSize                             N/A                     N/A
    WindowsVersion                          N/A                     N/A
    WorkingSetSize                          N/A                     N/A
    WriteOperationCount                     N/A                     N/A
    WriteTransferCount                      N/A                     N/A
    
    可以使用以下 GET 开关:
    
    /VALUE                       - 返回值。
    /ALL(默认)                - 返回属性的数据和元数据。
    /TRANSLATE:<table name>      - Translate output via values from <table name>.
    /EVERY:<间隔> [/REPEAT:<重复计数>] - 如果 /REPEAT 已指定命令执行 <重复计数> 次,则每(X 间隔)秒返回值。
    /FORMAT:<格式说明符>   - 处理 XML 结果的关键字/XSL 文件名。
    
    注意: /TRANSLATE 和 /FORMAT 开关的顺序会影响输出外观。
    第一种情况: 如果 /TRANSLATE 位于 /FORMAT 之前,则编排格式会跟在结果转换之后。
    第二种情况: 如果 /TRANSLATE 位于 /FORMAT 之后,则转换已编排了格式的结果。
    

    如,我们利用get获取某个进程的父进程ID   ParentProcessId:

    C:\Users\Administrator>wmic process where Name="notepad.exe" get ParentProcessId
    ParentProcessId
    10120

     如,获取某个进程的命令行全路径CommandLine:

    C:\Users\Administrator>wmic process where Name="notepad.exe" get CommandLine
    CommandLine
    "C:\WINDOWS\system32\notepad.exe"

    我们还可以同时获取多个属性,使用逗号“,”分隔开(列的先后顺序是按ASCII排序的):

    C:\Users\Administrator>wmic process  where Name='notepad.exe'  get ProcessId,ParentProcessId,SessionId,Name
    Name         ParentProcessId  ProcessId  SessionId
    notepad.exe  10120            1168       1

    其他命令ASSOC,CALL,CREATE,DELETE,就暂时不介绍了,因为一般也没用到。

     

     

     

     

    更多相关内容
  • process插件

    2016-10-05 00:37:53
    SPSS的hayes process插件,能够实现Bootstrap方法进行中介效应检验
  • Labview 中Process Monitor

    热门讨论 2014-04-02 10:47:25
    Labview中的第一个小实验,使用Process Monitor控件实现温度、压力以及容积的变化
  • 在nodejs中创建child process

    千次阅读 2021-01-25 20:12:43
    nodejs的main event loop是单线程的,nodejs本身也维护着Worker Pool用来处理一些耗时的操作,我们还可以通过使用nodejs提供的worker_threads来手动创建...本文将会介绍一种新的执行nodejs任务的方式,child process

    简介

    nodejs的main event loop是单线程的,nodejs本身也维护着Worker Pool用来处理一些耗时的操作,我们还可以通过使用nodejs提供的worker_threads来手动创建新的线程来执行自己的任务。

    本文将会介绍一种新的执行nodejs任务的方式,child process。

    child process

    lib/child_process.js提供了child_process模块,通过child_process我们可以创建子进程。

    注意,worker_threads创建的是子线程,而child_process创建的是子进程。

    在child_process模块中,可以同步创建进程也可以异步创建进程。同步创建方式只是在异步创建的方法后面加上Sync。

    创建出来的进程用ChildProcess类来表示。

    我们看下ChildProcess的定义:

    interface ChildProcess extends events.EventEmitter {
            stdin: Writable | null;
            stdout: Readable | null;
            stderr: Readable | null;
            readonly channel?: Pipe | null;
            readonly stdio: [
                Writable | null, // stdin
                Readable | null, // stdout
                Readable | null, // stderr
                Readable | Writable | null | undefined, // extra
                Readable | Writable | null | undefined // extra
            ];
            readonly killed: boolean;
            readonly pid: number;
            readonly connected: boolean;
            readonly exitCode: number | null;
            readonly signalCode: NodeJS.Signals | null;
            readonly spawnargs: string[];
            readonly spawnfile: string;
            kill(signal?: NodeJS.Signals | number): boolean;
            send(message: Serializable, callback?: (error: Error | null) => void): boolean;
            send(message: Serializable, sendHandle?: SendHandle, callback?: (error: Error | null) => void): boolean;
            send(message: Serializable, sendHandle?: SendHandle, options?: MessageOptions, callback?: (error: Error | null) => void): boolean;
            disconnect(): void;
            unref(): void;
            ref(): void;
    
            /**
             * events.EventEmitter
             * 1. close
             * 2. disconnect
             * 3. error
             * 4. exit
             * 5. message
             */
            ...
        }
    

    可以看到ChildProcess也是一个EventEmitter,所以它可以发送和接受event。

    ChildProcess可以接收到event有5种,分别是close,disconnect,error,exit和message。

    当调用父进程中的 subprocess.disconnect() 或子进程中的 process.disconnect() 后会触发 disconnect 事件。

    当出现无法创建进程,无法kill进程和向子进程发送消息失败的时候都会触发error事件。

    当子进程结束后时会触发exit事件。

    当子进程的 stdio 流被关闭时会触发 close 事件。 注意,close事件和exit事件是不同的,因为多个进程可能共享同一个stdio,所以发送exit事件并不一定会触发close事件。

    看一个close和exit的例子:

    const { spawn } = require('child_process');
    const ls = spawn('ls', ['-lh', '/usr']);
    
    ls.stdout.on('data', (data) => {
      console.log(`stdout: ${data}`);
    });
    
    ls.on('close', (code) => {
      console.log(`子进程使用代码 ${code} 关闭所有 stdio`);
    });
    
    ls.on('exit', (code) => {
      console.log(`子进程使用代码 ${code} 退出`);
    });
    

    最后是message事件,当子进程使用process.send() 发送消息的时候就会被触发。

    ChildProcess中有几个标准流属性,分别是stderr,stdout,stdin和stdio。

    stderr,stdout,stdin很好理解,分别是标准错误,标准输出和标准输入。

    我们看一个stdout的使用:

    const { spawn } = require('child_process');
    
    const subprocess = spawn('ls');
    
    subprocess.stdout.on('data', (data) => {
      console.log(`接收到数据块 ${data}`);
    });
    

    stdio实际上是stderr,stdout,stdin的集合:

    readonly stdio: [
                Writable | null, // stdin
                Readable | null, // stdout
                Readable | null, // stderr
                Readable | Writable | null | undefined, // extra
                Readable | Writable | null | undefined // extra
            ];
    

    其中stdio[0]表示的是stdin,stdio[1]表示的是stdout,stdio[2]表示的是stderr。

    如果在通过stdio创建子进程的时候,这三个标准流被设置为除pipe之外的其他值,那么stdin,stdout和stderr将为null。

    我们看一个使用stdio的例子:

    const assert = require('assert');
    const fs = require('fs');
    const child_process = require('child_process');
    
    const subprocess = child_process.spawn('ls', {
      stdio: [
        0, // 使用父进程的 stdin 用于子进程。
        'pipe', // 把子进程的 stdout 通过管道传到父进程 。
        fs.openSync('err.out', 'w') // 把子进程的 stderr 定向到一个文件。
      ]
    });
    
    assert.strictEqual(subprocess.stdio[0], null);
    assert.strictEqual(subprocess.stdio[0], subprocess.stdin);
    
    assert(subprocess.stdout);
    assert.strictEqual(subprocess.stdio[1], subprocess.stdout);
    
    assert.strictEqual(subprocess.stdio[2], null);
    assert.strictEqual(subprocess.stdio[2], subprocess.stderr);
    

    通常情况下父进程中维护了一个对子进程的引用计数,只有在当子进程退出之后父进程才会退出。

    这个引用就是ref,如果调用了unref方法,则允许父进程独立于子进程退出。

    const { spawn } = require('child_process');
    
    const subprocess = spawn(process.argv[0], ['child_program.js'], {
      detached: true,
      stdio: 'ignore'
    });
    
    subprocess.unref();
    

    最后,我们看一下如何通过ChildProcess来发送消息:

    subprocess.send(message[, sendHandle[, options]][, callback])
    

    其中message就是要发送的消息,callback是发送消息之后的回调。

    sendHandle比较特殊,它可以是一个TCP服务器或socket对象,通过将这些handle传递给子进程。子进程将会在message事件中,将该handle传递给Callback函数,从而可以在子进程中进行处理。

    我们看一个传递TCP server的例子,首先看主进程:

    const subprocess = require('child_process').fork('subprocess.js');
    
    // 打开 server 对象,并发送该句柄。
    const server = require('net').createServer();
    server.on('connection', (socket) => {
      socket.end('由父进程处理');
    });
    server.listen(1337, () => {
      subprocess.send('server', server);
    });
    

    再看子进程:

    process.on('message', (m, server) => {
      if (m === 'server') {
        server.on('connection', (socket) => {
          socket.end('由子进程处理');
        });
      }
    });
    

    可以看到子进程接收到了server handle,并且在子进程中监听connection事件。

    下面我们看一个传递socket对象的例子:

    onst { fork } = require('child_process');
    const normal = fork('subprocess.js', ['normal']);
    const special = fork('subprocess.js', ['special']);
    
    // 开启 server,并发送 socket 给子进程。
    // 使用 `pauseOnConnect` 防止 socket 在被发送到子进程之前被读取。
    const server = require('net').createServer({ pauseOnConnect: true });
    server.on('connection', (socket) => {
    
      // 特殊优先级。
      if (socket.remoteAddress === '74.125.127.100') {
        special.send('socket', socket);
        return;
      }
      // 普通优先级。
      normal.send('socket', socket);
    });
    server.listen(1337);
    

    subprocess.js的内容:

    process.on('message', (m, socket) => {
      if (m === 'socket') {
        if (socket) {
          // 检查客户端 socket 是否存在。
          // socket 在被发送与被子进程接收这段时间内可被关闭。
          socket.end(`请求使用 ${process.argv[2]} 优先级处理`);
        }
      }
    });
    

    主进程创建了两个subprocess,一个处理特殊的优先级, 一个处理普通的优先级。

    异步创建进程

    child_process模块有4种方式可以异步创建进程,分别是child_process.spawn()、child_process.fork()、child_process.exec() 和 child_process.execFile()。

    先看一个各个方法的定义:

    child_process.spawn(command[, args][, options])
    
    child_process.fork(modulePath[, args][, options])
    
    child_process.exec(command[, options][, callback])
    
    child_process.execFile(file[, args][, options][, callback])
    

    其中child_process.spawn是基础,他会异步的生成一个新的进程,其他的fork,exec和execFile都是基于spawn来生成的。

    fork会生成新的Node.js 进程。

    exec和execFile是以新的进程执行新的命令,并且带有callback。他们的区别就在于在windows的环境中,如果要执行.bat或者.cmd文件,没有shell终端是执行不了的。这个时候就只能以exec来启动。execFile是无法执行的。

    或者也可以使用spawn。

    我们看一个在windows中使用spawn和exec的例子:

    // 仅在 Windows 上。
    const { spawn } = require('child_process');
    const bat = spawn('cmd.exe', ['/c', 'my.bat']);
    
    bat.stdout.on('data', (data) => {
      console.log(data.toString());
    });
    
    bat.stderr.on('data', (data) => {
      console.error(data.toString());
    });
    
    bat.on('exit', (code) => {
      console.log(`子进程退出,退出码 ${code}`);
    });
    
    const { exec, spawn } = require('child_process');
    exec('my.bat', (err, stdout, stderr) => {
      if (err) {
        console.error(err);
        return;
      }
      console.log(stdout);
    });
    
    // 文件名中包含空格的脚本:
    const bat = spawn('"my script.cmd"', ['a', 'b'], { shell: true });
    // 或:
    exec('"my script.cmd" a b', (err, stdout, stderr) => {
      // ...
    });
    

    同步创建进程

    同步创建进程可以使用child_process.spawnSync()、child_process.execSync() 和 child_process.execFileSync() ,同步的方法会阻塞 Node.js 事件循环、暂停任何其他代码的执行,直到子进程退出。

    通常对于一些脚本任务来说,使用同步创建进程会比较常用。

    本文作者:flydean程序那些事

    本文链接:http://www.flydean.com/nodejs-childprocess/

    本文来源:flydean的博客

    欢迎关注我的公众号:「程序那些事」最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!

    展开全文
  • 程序员进阶神器,ProcessOn绘制时序图

    万次阅读 多人点赞 2022-06-15 21:10:27
    ProcessOn支持思维导图、流程图、原型图、时序图、架构图等十多种图形绘制。ProcessOn九周年活动【不忘初心,历9弥新】。

    在这里插入图片描述

    Java程序员越来越卷,如何才能摆脱CRUD,在茫茫人海中脱颖而出,一方面,大家要有过硬的编程基础,另一方面,对UML图的掌握也很重要。如果编程基础是本手,那么高阶的UML图就是妙手。

    今天,我们就来说一说其中一种重要的UML图:时序图。

    时序图的使用场景非常广泛,几乎各行各业都可以使用,可以用于梳理业务流程,使业务看起来非常清晰,也可以梳理开源软件,梳理各个组件之间的关系,层次非常清楚,便于记忆,也可以使用在更多场景。

    一、什么是时序图?

    时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作,包括发送消息、接收消息、处理消息、返回消息等。

    时序图重在展示对象之间的交互顺序,尤其强调交互的时间顺序,它可以直观的描述并发进程。

    二、时序图的组成元素

    时序图的组成元素主要有5种:

    1、角色(Actor)

    系统角色,可以是人或者其他系统和子系统,以一个小人图标表示。

    2、对象(Object)

    对象位于时序图的顶部,以一个矩形表示。对象的命名方式一般有三种:

    1. 象名和类名。例如:华为手机:手机。
    2. 只显示类名,不显示对象,即为一个匿名对象。例如::手机,在时序图中,用“:类”表示。
    3. 只显示对象名,不显示类名。例如:华为手机:,在时序图中,用“对象:”表示。

    3、生命线(LifeLine)

    时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线(对象的时间线),以一条垂直的虚线表示。对象间的消息存在于两条虚线间。

    4、激活期(Activation)

    又叫控制焦点,它代表时序图中在对象时间线上某段时期执行的操作,以一个很窄的矩形表示。

    5、消息(Message)

    表示对象之间发送的信息。消息分为三种类型。

    1. 同步消息(Synchronous Message)。消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义,以一条实线和实心箭头表示。
    2. 异步消息(Asynchronous Message)。消息发送者通过消息把信号传递给消息的接收者,然后继续自己的活动,不等待接受者返回消息或者控制。异步消息的接收者和发送者是并发工作的,以一条实线和大于号表示。
    3. 返回消息(Return Message)。返回消息表示从过程调用返回,以小于号和虚线表示。

    三、时序图优质模板

    1、微信支付时序图

    在这里插入图片描述

    2、时序图-登录

    在这里插入图片描述

    3、验证码注册时序图

    在这里插入图片描述

    4、店员-时序图

    在这里插入图片描述

    5、sso登录时序图

    在这里插入图片描述

    6、打印电子发票时序图

    在这里插入图片描述

    以上是在不同场景下程序员绘制时序图的案例,以上模板可以直接克隆使用,但授之以鱼不如授之以渔,接下来就为你分享时序图的绘制方法和绘制工具。

    四、时序图的画法

    时序图的绘制方法简单总结为以下3步:

    1、划清边界,识别交互语境

    即界定好自己所要画的时序图的范围,了解所要画的时序图的前提和背景。

    比如“学生信息管理”就是所要绘制的时序图的交互内容,就不需要往上延伸到学生注册并认证身份,不需要用户登录,也不需要往下延伸到查询课表、资料下载等无关的内容上。

    在这里插入图片描述

    2、梳理角色和对象

    在“学生信息管理时序图”中,角色有学生/教务用户,对象有教务主界面、学生信息界面、管理学生信息界面、数据库。
    注意:角色和对象都是名词,动词不可以作为角色和对象。

    3、添加消息

    从触发整个交互的某个消息开始,在生命线之间从上到下依次画出所有消息,并注明每个消息的特性,如参数等。

    如何绘制时序图?

    ProcessOn——一款专业在线作图工具和知识分享社区,支持流程图、思维导图、原型图、网络拓扑图、UML等专业图形的绘制,无需下载安装,即可使用。

    以下是使用ProcessOn绘制时序图的操作方法:

    Step1:注册登录ProcessOn

    在这里插入图片描述

    Step2:进入个人文件页,新建流程图,添加UML图形到图形区

    在这里插入图片描述

    Step3:拖拽使用UML相关图形到编辑区

    在这里插入图片描述

    Step4:标注内容,添加消息即可

    如果你想让自己的时序图更美观一些,可以把标题、矩形框等填充不同颜色、相同的图标尽可能大小相同(复用功能很好用哦)、上下图形保持对齐等哦。

    五、ProcessOn优点总结

    1.支持思维导图、流程图、原型图、时序图、架构图等十多种图形绘制。
    2.无需下载安装,支持多端使用。
    3.支持多人在线协作、修改文件。
    4.可轻松实现资源共享和团队管理。
    5.各行各业的海量优质模板可供使用。

    ProcessOn:不忘初心,历9弥新

    展开全文
  • Vue中process.env.NODE_ENV详解

    千次阅读 多人点赞 2021-09-03 10:11:36
    一文弄懂如何在 Vue 中配置 process.env.NODE_ENV 最近在研习vue.config.js文件,发现一行,甚是费解。 process.env.NODE_ENV 查阅资料后,发现武林众功法中对process.env.NODE_ENV没有解释的太清楚,遂决定以...

    一文弄懂如何在 Vue 中配置 process.env.NODE_ENV

    最近在研习 vue.config.js 文件,发现一行,甚是费解。

    process.env.NODE_ENV

    查阅资料后,发现武林众功法中对 process.env.NODE_ENV 没有解释的太清楚,遂决定以一功法记录。

    process.env 为何物

    言归正传。 process.env 是 Node.js 中的一个环境对象。其中保存着系统的环境的变量信息。可使用 Node.js 命令行工具直接进行查看。

     

    而 NODE_ENV 就是其中的一个环境变量。这个变量主要用于标识当前的环境(生产环境,开发环境)。默认是没有这个环境变量的,需要自己手动配置。不同系统有不同的环境变量配置方式,在这里就不多加赘述。

    NODE_ENV 与 Vue

    NODE_ENV 变量只能在系统中配置吗?其实不然。在 Vue 项目中, Vue 提供了自己的配置方式。这就要涉及到 Vue CLI 中模式的概念了。 Vue CLI 文档说明了这个问题。

     

    也就是说,在 Vue 中, NODE_ENV 可以通过 .env 文件或者 .env.[mode] 文件配置。配置过后,运行 Vue CLI 指令( npm run dev(serve) ,npm run build )时,就会将该模式下的NODE_ENV载入其中了。而这些命令,都有自己的默认模式:

    • npm run dev(serve) ,其实是运行了 vue-cli service serve ,默认模式为 development 。可以在 .env.development 文件下修改该模式的 NODE_ENV 。
    • npm run build ,其实运行了 vue-cli service build ,默认模式为 production 。可以在 .env.production 文件下修改该模式的 NODE_ENV 。

    修改方式如下,以键值对的方式:

     

    除了以上的修改方式外,也可以在命令后直接使用 --mode 参数手动指定模式。当然,每个模式配置的变量也不只有 NODE_ENV , 也可以通过配置其他的变量简化工作流程。

    模式的应用

    有了模式的概念,就可以根据不同的环境配置模式,就不用每次打包时都去更改 vue.config.js 文件了。比如在测试环境和生产环境, publicPath参数 (部署应用包时的基本 URL) 可能不同。遇到这种情况就可以在 vue.config.js 文件中,将 publicPath 参数设置为:

    publicPath: process.env.BASE_URL

    设置之后,再在各个 .env.[mode] 文件下对 BASE_URL 进行配置就行了,这样就避免了每次修改配置文件的尴尬。其他的配置也是同理。

    Tips: 即使不是生产环境,也可以将模式设置为 production ,这样可以获得 webpack 默认的打包优化。

    process.env.NODE_ENV详解 

    一、 process.env.NODE_ENV是什么?

    在node中,有全局变量process表示的是当前的node进程。
    process.env包含着关于系统环境的信息,但是process.env中并不存在NODE_ENV这个东西。

    NODE_ENV是一个用户自定义的变量,在webpack中它的用途是判断生产环境或开发环境

    为了查看 process的基本信息,我们可以在文件夹中 新建一个process.js文件,在里面加一句代码console.log(process);然后进入该文件夹,执行node process.js可以在命令行中打印如下信息:

    $ node process.js
    process {
      title: 'node',
      version: 'v4.4.4',
      moduleLoadList: 
       [....],
      versions: 
       { http_parser: '2.5.2',
         node: '4.4.4',
         v8: '4.5.103.35',
         uv: '1.8.0',
         zlib: '1.2.8',
         ares: '1.10.1-DEV',
         icu: '56.1',
         modules: '46',
         openssl: '1.0.2h' },
      arch: 'x64',
      platform: 'darwin',
      release: 
       { name: 'node',
         lts: 'Argon',
         sourceUrl: 'https://nodejs.org/download/release/v4.4.4/node-v4.4.4.tar.gz',
         headersUrl: 'https://nodejs.org/download/release/v4.4.4/node-v4.4.4-headers.tar.gz' },
      argv: 
       [ '/Users/tugenhua/.nvm/versions/node/v4.4.4/bin/node',
         '/Users/tugenhua/个人demo/process.js' ],
      execArgv: [],
      env: 
       { TERM_PROGRAM: 'Apple_Terminal',
         SHELL: '/bin/zsh',
         TERM: 'xterm-256color',
         TMPDIR: '/var/folders/l7/zndlx1qs05v29pjhvkgpmhjm0000gn/T/',
         Apple_PubSub_Socket_Render: '/private/tmp/com.apple.launchd.7Ax4C1EWMx/Render',
         TERM_PROGRAM_VERSION: '404',
         TERM_SESSION_ID: '82E05668-442D-4180-ADA3-8CF64D85E5A9',
         USER: 'tugenhua',
         SSH_AUTH_SOCK: '/private/tmp/com.apple.launchd.MYOMheYcL3/Listeners',
         PATH: '/Users/tugenhua/.nvm/versions/node/v4.4.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
         PWD: '/Users/tugenhua/个人demo',
         LANG: 'zh_CN.UTF-8',
         XPC_FLAGS: '0x0',
         XPC_SERVICE_NAME: '0',
         SHLVL: '1',
         HOME: '/Users/tugenhua',
         LOGNAME: 'tugenhua',
         SECURITYSESSIONID: '186a8',
         OLDPWD: '/Users/tugenhua/工作文档/sns_pc',
         ZSH: '/Users/tugenhua/.oh-my-zsh',
         PAGER: 'less',
         LESS: '-R',
         LC_CTYPE: 'zh_CN.UTF-8',
         LSCOLORS: 'Gxfxcxdxbxegedabagacad',
         NVM_DIR: '/Users/tugenhua/.nvm',
         NVM_NODEJS_ORG_MIRROR: 'https://nodejs.org/dist',
         NVM_IOJS_ORG_MIRROR: 'https://iojs.org/dist',
         NVM_RC_VERSION: '',
         MANPATH: '/Users/tugenhua/.nvm/versions/node/v4.4.4/share/man:/usr/local/share/man:/usr/share/man:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/share/man:/Applications/Xcode.app/Contents/Developer/usr/share/man:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man',
         NVM_PATH: '/Users/tugenhua/.nvm/versions/node/v4.4.4/lib/node',
         NVM_BIN: '/Users/tugenhua/.nvm/versions/node/v4.4.4/bin',
         _: '/Users/tugenhua/.nvm/versions/node/v4.4.4/bin/node',
         __CF_USER_TEXT_ENCODING: '0x1F5:0x19:0x34' },
      pid: 14034,
      features: 
       { debug: false,
         uv: true,
         ipv6: true,
         tls_npn: true,
         tls_sni: true,
         tls_ocsp: true,
         tls: true },
      _needImmediateCallback: false,
      config: {},
      nextTick: [Function: nextTick],
      _tickCallback: [Function: _tickCallback],
      _tickDomainCallback: [Function: _tickDomainCallback],
      stdout: [Getter],
      stderr: [Getter],
      stdin: [Getter],
      openStdin: [Function],
      exit: [Function],
      kill: [Function],
      mainModule: 
       Module {
         id: '.',
         exports: {},
         parent: null,
         filename: '/Users/tugenhua/个人demo/process.js',
         loaded: false,
         children: [],
         paths: 
          [ '/Users/tugenhua/个人demo/node_modules',
            '/Users/tugenhua/node_modules',
            '/Users/node_modules',
            '/node_modules' ] } }
    

    如上就可以看到 process是node的全局变量,并且process有env这个属性,但是没有NODE_ENV这个属性。

    二、process.env.NODE_ENV该如何配置?

    process.env属性返回的是一个包含用户环境信息的对象,它可以区分开发环境或正式环境的依据,那么我们如何配置它呢?

    方法1:配置环境变量

    • windows环境配置如下:

    #node中常用的到的环境变量是NODE_ENV,首先查看是否存在 
    set NODE_ENV 
    
    #如果不存在则添加环境变量 
    set NODE_ENV=production 
    
    #环境变量追加值 set 变量名=%变量名%;变量内容 
    set path=%path%;C:\web;C:\Tools 
    
    #某些时候需要删除环境变量 
    set NODE_ENV=
    
    • Linux配置(mac系统环境也属于这个)如下:

    #node中常用的到的环境变量是NODE_ENV,首先查看是否存在
    echo $NODE_ENV
    
    #如果不存在则添加环境变量
    export NODE_ENV=production
    
    #环境变量追加值
    export path=$path:/home/download:/usr/local/
    
    #某些时候需要删除环境变量
    unset NODE_ENV
    
    #某些时候需要显示所有的环境变量
    env
    

    注意:如果NODE_ENV设置为production后,所有的项目都会处于正式环境中。
    此时使用命令npm install下载依赖包时,只会把package.json中的dependencies依赖项下载下来,对于devDependencies中的依赖包是下载不下来的。因此需要使用上面的命令unset NODE_ENV删除刚刚设置的环境变量。

    方法2:使用DefinePlugin

    DefinePlugin官网的解释是:DefinePlugin允许我们创建全局变量,可以在编译时进行设置。

    因此可以使用该属性来设置全局变量来区分开发环境和正式环境,这就是DefinePlugin的基本功能。

    我们可以在webpack.config.js中添加如下代码配置全局变量信息,因为当webpack进行编译的时候会全局设置变量,如下代码:

    module.exports = {
      plugins: [
        // 设置环境变量信息
        new webpack.DefinePlugin({
          PRODUCTION: JSON.stringify(true),
          VERSION: JSON.stringify('5fa3b9'),
          BROWSER_SUPPORTS_HTML5: true,
          TWO: '1+1',
          'typeof window': JSON.stringify('object'),
          'process.env': {
            NODE_ENV: JSON.stringify(process.env.NODE_ENV)
          }
        })
      ]
    }
    

    package.json中的打包配置如下:

    "scripts": {
      "dev": "NODE_ENV=development webpack-dev-server --progress --colors --devtool cheap-module-eval-source-map --hot --inline",
      "build": "NODE_ENV=production webpack --progress --colors --devtool cheap-module-source-map",
      "build:dll": "webpack --config webpack.dll.config.js"
    },
    

    这样配置完成后,为了验证一下是否是全局变量,运行npm run dev打包后,在我们项目入口js文件中打印下即可:

    console.log(process.env.NODE_ENV); // 打印结果为 'development' 
    

    发现process.env.NODE_ENV已经被作为全局变量打印出来了,因此在项目打包中为了区分开发环境和正式环境我们可以使用这种方法。

    关于cross-env

    • 什么是cross-env呢?
      它是运行跨平台设置和使用环境变量的脚本。

    • 它的作用是啥?
      当我们使用DefinePlugin这种方法设置NODE_ENV时,大多数windows命令会提示将会阻塞或者异常,或者windows不支持NODE_ENV=development的这样的设置方式,会报错。因此cross-env出现了。我们可以使用cross-env命令来实现全开发平台的兼容。
      要使用该命令的话,我们首先需要在我们的项目中安装该命令:

    npm install --save-dev cross-env
    

    在package.json中的scripts命令如下:

    "scripts": {
      "dev": "cross-env NODE_ENV=development webpack-dev-server --progress --colors --devtool cheap-module-eval-source-map --hot --inline",
      "build": "cross-env NODE_ENV=production webpack --progress --colors --devtool cheap-module-source-map",
      "build:dll": "webpack --config webpack.dll.config.js"
    }
    

    三、vue-cli3.0中的process.env.NODE_ENV

    使用vue-cli3构建的项目就简单多了,因为vue-cli3使用上述的DefinePlugin方式帮你把process.env.NODE_ENV配置好了,我们不需要再自己去配置。
    它自带了三种模式:

    development:在vue-cli-service serve下,即开发环境使用
    production:在vue-cli-service build和vue-cli-service test:e2e下,即正式环境使用
    test: 在vue-cli-service test:unit下使用

    在package.json中的scripts命令如下

    {
      "name": "",
      "version": "0.1.0",
      "private": true,
      "scripts": {
        "dev": "vue-cli-service serve", //本地开发运行,会把process.env.NODE_ENV设置为'development'
        "build": "vue-cli-service build", //默认打包模式,会把process.env.NODE_ENV设置为'production'
      },
      "dependencies": {
      }
    }
    

    参考自:https://www.cnblogs.com/tugenhua0707/p/9780621.html



    作者:西瓜鱼仔
    链接:https://www.jianshu.com/p/f4638f5df1c7
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

     转载于:https://www.pianshen.com/article/18571709067/

    展开全文
  • process.env.NODE_ENV详解

    万次阅读 多人点赞 2021-04-26 17:42:00
    一、 process.env.NODE_ENV是什么? 在node中,有全局变量process表示的是当前的node进程。 process.env包含着关于系统环境的信息,但是process.env中并不存在NODE_ENV这个东西。 NODE_ENV是一个用户自定义的变量...
  • NodeJS之process对象

    千次阅读 2019-10-26 16:23:45
    文章目录1 process简介1.1 进程信息1.2 退出码2 属性2.1 stdout,stdin,stderr2.1.1 stdout2.1.2 stdin2.1.3 stderr2.2 argv,execPath,execArgv2.3 process.env3 方法3.1 process.cwd(),process.chdir()3.2 ...
  • 在用processon进行画图时,我们有时候需要画出双箭头,表示两者之间的相互联系 解决方法 1.建立起连接 直接拖动点,建立起连接 2.设置样式(直线) 点击刚才创建出来的线段,在右上角点击连线类型 选择直线即可 3...
  • [知识小节]Process Monitor介绍

    千次阅读 2021-03-05 13:53:47
    Process Monitor1、工具基本介绍2、使用场景3、常见用法4、实例分析 1、工具基本介绍 Process Monitor是微软推荐的一款系统监视攻击,能供实时显示文件系统、注册表、网络连接于进程活动的攻击工具。它整合了一些...
  • C# Process.Start()方法详解

    万次阅读 2019-06-14 23:42:55
    System.Diagnostics.Process.Start(); 能做什么呢?它主要有以下几个功能: 1、打开某个链接网址(弹窗)。 2、定位打开某个文件目录。 3、打开系统特殊文件夹,如“控制面板”等。 那么它是怎么实现这几个功能...
  • PROCESS插件安装及使用

    千次阅读 2020-12-23 03:12:55
    Hayes基于SPSS和SAS的中介和调节效应分析程序,开发了用于进行中介和调节效应分析的插件PROCESS,下面将从PROCESS插件的安装,使用和优缺点三个方面对这一插件进行简单介绍。 一、PROCESS插件的安装 有三种方式安装...
  • Python使用进程Process模块管理资源

    千次阅读 2020-12-11 10:36:45
    进程Process是对各种资源管理的集合,包含对各种资源的调用、内存的管理、网络接口的调用;一个进程Process可以包含多个子进程,启动一个进程的时候会自动创建一个线程,进程里的第一个线程就是主线程(即python name...
  • Process terminated

    万次阅读 2021-03-05 11:29:14
    idea点击maven下的... 解决方法:更换maven进行重新配置 1、环境变量中找到MAVEN_HOME,修改新Maven的存放路径 2、修改maven相关配置 方法一:如下图 方法二:File --》 settings (快捷键:Ctrl +Alt+S) ......
  • Process.myPid()、Process.myTid()和Process.myUid()这几个方法分别表示什么含义? PID全称为:Process Identifier,亦即进程ID。一个app中可以有多个进程,有个默认进程,称为主进程。 TID全称为:Thread ...
  • java的process

    千次阅读 2022-01-29 11:01:31
    Process类是一个抽象类,Runtime.exec()方法可以创建一个本地进程,并返回Process子类的一个实例。 Process p = Runtime.getRuntime().exec(cmd); cmd 是字符串类型 也可以是字符串类型的数组 内容就是命令行。例如...
  • 一、process.env 为何物? 言归正传。 process.env 是 Node.js 中的一个环境变量。其中保存着系统的环境的变量信息。可使用 Node.js 命令行工具直接进行查看: 1.安装nodejs 2.通过终端(cmd),输入node,进入...
  • process exporter 监控进程并告警

    千次阅读 热门讨论 2021-02-02 18:44:44
    process-exporter介绍: 在 prometheus 中,process-exporter 可以用来检测所选进程的存活状态。 用法: process-exporter [options] -config.path filename.yml 如果选择监控的进程并将其分组,可以提供命令行...
  • ProcessOn画斜箭头、写公式方法记录

    千次阅读 多人点赞 2021-06-19 20:45:30
    画图工具ProcessOn的箭头类型切换 ;使用ProcessOn编辑简单公式
  • 本文详细介绍了如何使用Process Monitor工具监测进程对注册表和文件的操作活动,并给出了对应的监测范例。
  • child_process 子进程

    千次阅读 2020-08-17 11:33:25
    child_process 子进程 在node中,child_process这个模块非常重要。掌握了它,等于在node的世界开启了一扇新的大门。熟悉shell脚本的同学,可以用它来完成很多有意思的事情,比如文件压缩、增量部署等,nodejs创建子...
  • Process Simulate

    千次阅读 2021-03-07 21:36:42
    Process Simulate 中线仿真下无法保存文件 当我们在用西门子Process Simulate软件时,发现在线仿真状态下虚拟调试吼后,无法保存项目,如下图所示: 看看操作树(Operation Tree)中是否有一下情况:即出现已有操作...
  • Render process gone

    千次阅读 2021-01-14 08:59:44
    js报错Render process gone Render process gone 处理:可能由于代码死循环啥的,使用任务管理器先杀掉运行的该程序,再检查代码是否死循环。
  • Process Monitor的基本使用方法

    千次阅读 2022-05-19 10:42:01
    Process Monitor的基本使用方法
  • 准备开发一个flutter的项目,在环境搭建完成,新建后第一次执行时,问题来了,这里做个记录分享解决...Finished with error: ProcessException: Process "F:\zy\httpd\flutter_app\android\gradlew.bat" exited abno...
  • SPSS的Process插件下载和安装

    千次阅读 2020-12-23 03:12:56
    SPSS的Process插件由 Andrew F. Hayes, Ph.D 开发, 大家可以免费使用。Process的主要用途就是进行一些路径分析, 比如中介效应/调节效应的检验, 不过, 其实没有这个插件, 我们也能进行这些分析, 有了Process插件的...
  • java关闭Process

    千次阅读 2021-03-12 22:43:53
    java1.8之后,Process有了destroy和destroyForcibly方法,用来结束进程,一般结束进程的流程为:terminate process with destroy()allow process to exit gracefully with reasonable timeoutkill it with ...
  • 进程资源管理器 特性 Process Explorer 是 Sysinternals 出品的工具,其在功能方面的独特之处有以下几点: 显示进程安全令牌(比如安全组列表、特权,以及虚拟化状态)。 加亮显示进程和线程列表中的变化。 列出服务...
  • SPSS-PROCESS插件的使用

    千次阅读 2022-01-05 20:57:10
    AMOS系列文章更新完以后,好多朋友联系我们,想让我们出一个PROCESS使用系列文章,经过一段时间准备,从今天开始不定期更新PROCESS文章。 SPSS软件对于中介、调节模型的使用,独立的SPSS需要的步骤较为繁琐,且对于...
  • IDEA 报错:Process terminated 解决方法

    千次阅读 2022-06-01 09:38:50
    在使用Maven创建项目和编译时报错:Process terminated 报错原因:由于远程下载Maven环境失败造成 解决方案: 1、选择“File->Settings->Building , Execution , Deployment->Build Tools->Maven”...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,758,179
精华内容 703,271
关键字:

process