OpenHarmony设备开发小型系统内核(LiteOS-A) 调测与工具系统命令

zh_ff
发布于 2023-3-27 16:29
浏览
0收藏

版本:V3.2Beta

kill

命令功能

kill命令用于发送特定信号给指定进程,让它去终结不正常的应用。

命令格式

kill [-l [signo] | -s signo | -signopid…

参数说明

表1 参数说明

参数

参数说明

取值范围

–help

查看kill命令支持的参数列表

N/A

-l

列出信号名称和编号。

N/A

-s

发送信号

N/A

signo

信号ID。

[1, 30]

pid

进程ID。

[1, MAX_INT]

须知:

 signo有效范围为[0, 64],建议取值范围为[1, 30],其余为保留内容。

使用指南

  • 必须指定发送的信号编号及进程号。
  • 进程编号取值范围根据系统配置变化,例如系统最大支持pid为256,则取值范围缩小为[1, 256]。

特殊说明

kill命令以及参数 shell端暂不支持。切换mksh版本可全支持,方法:cd bin; ./mksh。

使用实例

  • 查看当前进程列表,查看需要杀死的进程PID(42)。

OHOS:/$ ps
  allCpu(%):    4.67 sys,  195.33 idle
  PID  PPID PGID       UID  Status VirtualMem ShareMem PhysicalMem CPUUSE10s  PName
    1    -1    1         0 Pending   0x33b000  0xbb000     0x4db02      0.0   init
    2    -1    2         0 Pending   0xdabc08        0    0xdabc08      1.14  KProcess
    3     1    3         7 Pending   0x72e000 0x1a3000    0x1d24c2      0.0   foundation
    4     1    4         8 Pending   0x362000  0xbb000     0x5c6ff      0.0   bundle_daemon
    5     1    5         1 Pending   0xdfa000 0x2e7000    0x1484f0      0.0   appspawn
    6     1    6         0 Pending   0x688000 0x137000    0x11bca0      0.0   media_server
    7     1    7         0 Pending   0x9d2000 0x103000     0xa1cdf      0.88  wms_server
    8     1    8         2 Pending   0x1f5000  0x48000     0x47dc2      0.2   mksh
   10     5    5       101 Pending  0x11ec000 0x2f9000    0x206047      0.93  com.example.launcher
   12     1   12         0 Pending   0x4d4000 0x112000     0xe0882      0.0   deviceauth_service
   13     1   13         0 Pending   0x34f000  0xbd000     0x51799      0.0   sensor_service
   14     1   14         2 Pending   0x34e000  0xb3000     0x52184      0.0   ai_server
   15     1   15         0 Pending   0x61f000 0x13b000    0x168071      0.45  softbus_server
   42     8   42         2 Pending   0x1c1000  0x3a000     0x1106a      0.9   test_demo
   43     8   43         2 Running   0x1d7000  0x3a000     0x1e577      0.0   toybox
  • 发送信号9(SIGKILL默认行为为立即终止进程)给42号进程test_demo(用户态进程):kill -s 9 42(kill -9 42效果相同),并查看当前进程列表,42号进程已终止。

OHOS:/$ kill -s 9 42
OHOS:/$
[1] + Killed               ./nfs/test_demo
OHOS:/$ ps
  allCpu(%):    4.73 sys,  195.27 idle
  PID  PPID PGID       UID  Status VirtualMem ShareMem PhysicalMem CPUUSE10s  PName
    1    -1    1         0 Pending   0x33b000  0xbb000     0x4e01c      0.0   init
    2    -1    2         0 Pending   0xda5fa4        0    0xda5fa4      1.14  KProcess
    3     1    3         7 Pending   0x72e000 0x1a3000    0x1d29dc      0.0   foundation
    4     1    4         8 Pending   0x362000  0xbb000     0x5cc19      0.0   bundle_daemon
    5     1    5         1 Pending   0xdfa000 0x2e7000    0x148a0a      0.0   appspawn
    6     1    6         0 Pending   0x688000 0x137000    0x11c1ba      0.0   media_server
    7     1    7         0 Pending   0x9d2000 0x103000     0xa21f9      0.89  wms_server
    8     1    8         2 Pending   0x1f5000  0x48000     0x482dc      0.2   mksh
   10     5    5       101 Pending  0x11ec000 0x2f9000    0x206561      0.93  com.example.launcher
   12     1   12         0 Pending   0x4d4000 0x112000     0xe0d9c      0.0   deviceauth_service
   13     1   13         0 Pending   0x34f000  0xbd000     0x51cb3      0.0   sensor_service
   14     1   14         2 Pending   0x34e000  0xb3000     0x5269e      0.0   ai_server
   15     1   15         0 Pending   0x61f000 0x13b000    0x16858b      0.51  softbus_server
   45     8   45         2 Running   0x1d7000  0x3a000     0x1e9f5      0.0   toybox
  • 发送不存在的信号值 kill -100 31

输出说明

发送成功或失败输出结果如下。

示例1 发送信号给指定进程

OHOS:/$ kill -s 9 42
OHOS:/$
[1] + Killed               ./nfs/test_demo

信号发送成功会显示的提示进程已被杀死。

示例2 信号发送失败

OHOS:/$ kill -100 31
kill: Unknown signal '(null)'

信号发送失败,示例2所示原因为信号发送命令参数无效,请排查信号编号及进程编号是否有效。

log

命令功能

log命令用于修改&查询日志配置。

命令格式

log level [levelNum]

参数说明

表1 参数说明

参数

参数说明

取值范围

levelNum

配置日志打印等级。

[0, 5]

使用指南

  • 该命令依赖于LOSCFG_SHELL_LK,使用时通过menuconfig在配置项中开启"Enable Shell lk": Debug —> Enable a Debug Version —> Enable Shell —> Enable Shell lK。
  • log level命令用于配置日志的打印等级,包括6个等级 TRACE_EMG = 0,
    TRACE_COMMON = 1,
    TRACE_ERROR = 2,
    TRACE_WARN = 3,
    TRACE_INFO = 4,
    TRACE_DEBUG = 5
    若level不在有效范围内,会打印提示信息。
  • 若log level命令不加[levelNum]参数,则默认查看当前打印等级,并且提示使用方法。
  • 开源小型系统源码设置level 为4或者5会有超多打印。

使用实例

举例:输入log level 3

输出说明

示例 设置当前日志打印级别为3

OHOS # log level 3
Set current log level WARN

memcheck

命令功能

检查动态申请的内存块是否完整,是否存在内存越界造成节点损坏。

命令格式

memcheck

参数说明

使用指南

  • 当内存池所有节点完整时,输出"system memcheck over, all passed!"。
  • 当内存池存在节点不完整时,输出被损坏节点的内存块信息。

使用实例

举例:

  • 输入memcheck
  • 输入memcheck出现内存越界

输出说明

示例1 当前没有内存越界

OHOS # memcheck
system memcheck over, all passed!

示例2 出现内存越界

[L0S DLnkCheckMenl 349, memory check
stFreeNodeInfo.pstPrev:0x7e0d31f3 is out of legal mem range[0x80ba5f40, 0х83d00000]
cur node: 0x81f2ce0c
pre node: 0x81f28a98
pre node was allocated by task:sofia
uwEхcTуpe = 0х2
puмExcBuffAddr pc = 0x803ad7a4
puwExcBuffAddr lr = 0x803ad7a4
puwExcBuffAddr sp = 0х80cb7de0
puwExcBuffAddr fp = 0x80cb7dec
***backtrace begin***
traceback 0 -- lr = 0х8037cb84
traceback 0 -- fp = 0х80cb7e1c
traceback 1 -- lr = 0х8037033c
traceback 1 -- fp = 0х80cb7e24
traceback 2 -- lr = 0x8000d108
traceback 2 -- fp = 0х80cb7e94
traceback 3 -- lr = 0х8037c7ac
traceback 3 -- fp = 0х80cb7ea4
traceback 4 -- lr = 0x803ad9e8
traceback 4 -- fp = 9x11111111

oom

命令功能

查看和设置低内存阈值以及pagecache内存回收阈值。

命令格式

oom

oom -i [interval]

oom -m [mem byte]

oom -r [mem byte]

oom -h | --help

参数说明

表1 参数说明

参数

参数说明

取值范围

-i [interval]

设置oom线程任务检查的时间间隔。

[100, 10000] 单位: ms

-m [mem byte]

设置低内存阈值。

0MB ~ 1MB,0MB表示不做低内存阈值检查。

-r [mem byte]

设置pagecache内存回收阈值。

低内存阈值 ~ 系统可用最大内存,一个pagecache页一般为4KB,也有16 ~ 64KB的情况。

-h | --help

使用帮助。

N/A

使用指南

参数缺省时,显示oom功能当前配置信息。

说明:

 当系统内存不足时,会打印出内存不足的提示信息。

使用实例

举例:

  • oom
  • oom -i 100

输出说明

示例1 oom缺省打印配置信息

OHOS:/$ oom
[oom] oom loop task status: enabled
      oom low memory threshold: 0x80000(byte)
      oom reclaim memory threshold: 0x500000(byte)
      oom check interval: 100(microsecond)

系统内存不足时打印提示信息

T:20 Enter:IT MEM 00M 001
[oom] OS is in low memory state
total physical memory: 0x1bcf000(byte), used: 0x1b50000(byte) ,free: 0x7f000(byte), low memory threshold: 0x80000(byte)
[oom] candidate victim process init pid: 1, actual phy mem byte:82602
[oom] candidate victim process shell pid: 3, actual phy mem byte:14950e
[oom] candidate victim process testsuits app pid: 4, actual phy mem byte:1334598
[oom] candidate victim process UserProcess12 pid: 12, actual phy mem byte:25951558
[oom] max phy mem used process UserProcess12 pid: 12, actual phy mem 25951558
################excFrom: User!####################
data abort fsr:0x817, far:0x225af000
Abort caused by a write instruction. Translation fault, page
excType: data abort
processName    = UserProcess12
processID      = 12
process aspace = 0х01000000 -> 0х3f000000
taskName       = threado
taskID         = 22
task user stack = 0х20e17000 -> 0х20e21000
pc   = 0x93969dc in /usr/bin/testsuits app ---> 0x19f9dc
ulr  = 0x93969cc in /usr/bin/testsuits app ---> 0x19f9cc
usp  = 0х20e20c68fp = 0x20e20c8c
R0   = 0х20e35000
R1   = 0x225af000
R2   = 0x0
R3   = 0х28e35000
R4   = 0х0
R5   = 0х9500000
R6   = 0х14
R7   = 0х97822c4
R8   = 0x970cfa8
R9   = 0x9090909
R10  = 0xa0a0a0a
R11  = 0x20e20c8c
R12  = 0х0
CPSR = 0х80000010
***backtrace beain***
traceback 0 -- lr = 0x9242e1c fp = 0х20e20cc4 lr in /usr/bin/testsuits apr 0x4be1c
traceback 1 -- 1r = 0х92430cc fp = 0x20e20cdc lr in /usr/bin/testsuits app --> 0x4c0cc
traceback 2 -- 1r = 0x9396ab0 fp = 0x20e20cec lr in /usr/bin/testsuits app -> 0х19fab0
traceback 3 -- lr = 0x9393eb4 fp = 0x20e20cf4 lr in /usr/bin/testsuits ap --> 0x19ceb4
traceback 4 -- lr = 0x92427d4 fp = 0x20e20d44 lr in /usr/bin/testsuits app --> 0x4b7d4
traceback 5 -- 1r = 0x20c4df50 fp = 0хb0b0b0b 1r in /1ib/libc.so - -> 0x62f50

示例2 设置 oom 线程任务检查的时间间隔

OHOS:/$ oom -i 100
[oom] set oom check interval (100)ms successful

表2 输出说明

输出

说明

[oom] OS is in low memory state

total physical memory: 0x1bcf000(byte), used: 0x1b50000(byte), free: 0x7f000(byte), low memory threshold: 0x80000(byte)

操作系统处于低内存状态。

整个系统可用物理内存为0x1bcf000 byte,已经使用了 0x1b50000 byte, 还剩0x7f000 byte,当前设置的低内存阈值为0x80000 byte。

[oom] candidate victim process init pid: 1, actual phy mem byte: 82602

打印当前各个进程的内存使用情况,init进程实际占用物理内存82602byte。

[oom] candidate victim process UserProcess12 pid: 12, actual phy mem byte: 25951558

UserProcess12进程实际使用25951558byte内存。

[oom] max phy mem used process UserProcess12 pid: 12, actual phy mem: 25951558

当前使用内存最多的进程是UserProcess12。

excFrom: User!

pmm

命令功能

查看系统内存物理页及pagecache物理页使用情况。

命令格式

pmm

参数说明

使用指南

Debug版本才具备的命令。

使用实例

举例:输入pmm

输出说明

示例 查看物理页使用情况

OHOS # pmm
 phys_seg      base         size        free_pages
 --------      -------      ----------  ---------
 0x4065552c    0x809b0000   0x07550000      22344
order = 0, free_count = 16
order = 1, free_count = 12
order = 2, free_count = 8
order = 3, free_count = 6
order = 4, free_count = 13
order = 5, free_count = 16
order = 6, free_count = 12
order = 7, free_count = 4
order = 8, free_count = 79
active   anon   0
inactive anon   0
active   file   1385
inactice file   84
pmm pages: total = 30032, used = 7688, free = 22344
pathCache number = 325
pathCache memory size = 17621(B)
Vnode number = 67
Vnode memory size = 10720(B)

表1 输出说明

输出

说明

phys_seg

物理页控制块地址信息

base

第一个物理页地址,即物理页内存起始地址

size

物理页内存大小

free_pages

空闲物理页数量

active anon

pagecache中,活跃的匿名页数量

inactive anon

pagecache中,不活跃的匿名页数量

active file

pagecache中,活跃的文件页数量

inactive file

pagecache中,不活跃的文件页数量

pmm pages

total:总的物理页数,used:已使用的物理页数,free:空闲的物理页数

reset

命令功能

reset命令用于重启设备。

命令格式

reset

参数说明

使用指南

reset命令输入后,设备会立刻重启。

使用实例

reset

输出说明

sem

命令功能

sem命令用于查询系统内核信号量相关信息。

命令格式

sem [ID_ / fulldata_]

参数说明

表1 参数说明

参数

参数说明

取值范围

ID

信号量ID。

[0, 1023]或[0x0, 0x3FF]

fulldata

查询所有在用的信号量信息,打印信息包括如下:SemID, Count, Original Count, Creator TaskEntry, Last Access Time。

N/A

使用指南

  • 参数缺省时,显示所有的信号量的使用数及信号量总数。
  • sem后加ID,显示对应ID信号量的使用数。
  • 参数fulldata依赖于LOSCFG_DEBUG_SEMAPHORE,使用时通过menuconfig在配置项中开启"Enable Semaphore Debugging": Debug —> Enable a Debug Version —> Enable Debug LiteOS Kernel Resource —> Enable Semaphore Debugging

使用实例

  • 输入sem
  • 配置LOSCFG_DEBUG_SEMAPHORE标志,输入 sem fulldata

输出说明

示例1 查询所有在用的信号量信息

OHOS # sem
   SemID       Count
   ----------  -----
   0x00000000  1
   SemID       Count
   ----------  -----
   0x00000001  0
   SemID       Count
   ----------  -----
   0x00000002  0
   SemID       Count
   ----------  -----
   0x00000003  1
   SemID       Count
   ----------  -----
   0x00000004  0
   SemID       Count
   ----------  -----
   0x00000005  1
   SemID       Count
   ----------  -----
   0x00000006  0

表2 输出说明

输出

说明

SemID

信号量ID。

Count

信号量使用数。

说明:

 ● sem命令的ID参数输入形式以十进制形式表示或十六进制形式表示皆可。

● sem命令的ID参数在[0, 1023]范围内时,返回对应ID的信号量的状态(如果对应ID的信号量未被使用则进行提示);其他取值时返回参数错误的提示。

示例2 查询所有在用的信号量信息

OHOS # sem fulldata
Used Semaphore List:
   SemID    Count    OriginalCount   Creator(TaskEntry)    LastAccessTime
   ------   ------   -------------   ------------------    --------------
   0xb      0x0      0x0             0x404978fc            0xa1
   0xc      0x0      0x0             0x404978fc            0xa1
   0xd      0x0      0x0             0x404978fc            0x12c
   0x10     0x0      0x0             0x404978fc            0x195
   0xf      0x0      0x0             0x404978fc            0x195
   0x11     0x0      0x0             0x4041a998            0x1d5
   0x15     0x0      0x0             0x404978fc            0x273
   0x14     0x0      0x0             0x404978fc            0x273
   0x18     0x0      0x0             0x404978fc            0x352
   0x17     0x0      0x0             0x404978fc            0x352
   0x16     0x0      0x0             0x404978fc            0x352
   0x1d     0x1      0x1             0x404978fc            0x385
   0x1e     0x1      0x1             0x404978fc            0x388
   0x1f     0x1      0x1             0x404978fc            0x38d
   0x20     0x1      0x1             0x404978fc            0x38f
   0x21     0x1      0x1             0x404978fc            0x392
   0x3d     0x1      0x1             0x404978fc            0x395
   0x3b     0x1      0x1             0x404978fc            0x395
   0x3c     0x1      0x1             0x404978fc            0x395
   0x39     0x1      0x1             0x404978fc            0x395
   0x3a     0x1      0x1             0x404978fc            0x395
   0x33     0x1      0x1             0x404978fc            0x395
   0x35     0x1      0x1             0x404978fc            0x395
   0x34     0x1      0x1             0x404978fc            0x395
   0x38     0x1      0x1             0x404978fc            0x395

表3 输出说明

输出

说明

SemID

信号量ID。

Count

信号量使用数。

OriginalCount

信号量原始计数。

Creator

信号量的创建线程的入口函数地址。

LastAccessTime

上次访问时间。

文章转载自:​​https://docs.openharmony.cn/pages/v3.2Beta/zh-cn/device-dev/kernel/kernel-small-debug-shell-cmd-kill.md/​

分类
已于2023-3-27 16:29:25修改
收藏
回复
举报
回复
    相关推荐