常用 Shell 命令说明

更新时间:
2024-05-13
下载文档

常用 Shell 命令说明

本节将简要介绍部分常用的 ttinyShell 内建命令,分为系统命令、文件命令、网络命令、时间命令、动态装载命令和其他命令。由于内核版本与裁剪配置不同,所以 ttinyShell 内建的命令在不同版本和不同配置的 SylixOS 上会有所不同。
详细的 Shell 命令使用方法可参考《SylixOS Shell 用户手册》。

系统命令

命令名简要说明
help显示 ttinyShell 所有内建命令列表
free显示系统当前内存信息
echo回显用户输入的参数
ts查看系统中线程信息
tp查看系统中被阻塞的线程信息
ss查看系统中所有线程与中断系统栈使用情况
ps查看系统所有进程的信息
touch创建一个普通文件
ints查看系统中断向量表信息
mems查看操作系统内核内存堆与系统内存堆内存使用情况
zones查看操作系统物理页面分区使用情况
env查看操作系统全局环境变量表
varsave保存当前的操作系统环境变量表,默认保存路径为/etc/profile
varload从指定参数的文件中提取装载环境变量表,默认从/etc/profile 中提取
vardel删除一个指定的系统环境变量
cpuus查看 CPU 利用率
top查看 CPU 利用率
kill向指定的线程或进程发送信号,默认发送 SIGKILL 信号
drvlics显示系统中所有安装的驱动程序表信息
devs显示系统中挂载的所有设备
buss显示系统中挂载的所有总线信息
tty显示当前 Shell 终端对应的 tty 文件
clear清除当前屏幕
aborts显示当前操作系统异常处理统计信息
sprio设置指定线程的优先级
renice设置指定进程的优先级
hostname显示或设置当前 SylixOS 镜像主机名
login切换用户,重新登录
who查看当前登录用户身份
shutdown关闭或重启系统
monitor启动、关闭或设置内核跟踪器
pcis打印系统 PCI 总线与 PCI 设备相关信息
lsusb打印系统 USB 总线与 USB 设备相关信息(依赖 USB 库)
which检查参数指定的文件位置
exit退出当前 Shell 终端
args显示所有参数
sleep睡眠指定时间
shell使用[tty设备]作为标准文件
vars显示当前环境变量查看操作系统全局环境变量表
msqq显示指定的消息队列信息
eventset显示指定事件集的相关信息
part显示指定的内存分区信息
sem显示指定的信号量信息
wjs显示已经删除但未被 join 的线程信息
sigqueue为线程设置Sigqueue或向线程发送信号
times显示系统当前时间
tzsync从环境变量 TZ 中同步时区
date设置系统当前时间
drvs显示所有驱动
files显示所有文件
fdentrys显示所有文件描述符
open打开文件
close关闭文件
sync清空所有系统缓冲区
color根据 LS_COLORS 环境变量重新初始化配色方案.
zones显示 vmm 物理存储器信息
virtuals显示 vmm 虚拟存储器信息
pagefaultlimit设置(MByts)或显示系统vmm页面故障限制
restart线程重新启动
logfileadd向日志文件集中添加一个文件。
logfileclear从日志文件集中清除一个文件
logfiles显示日志文件集中的所有文件
loglevel显示或设置printk()日志级别。
hwclock设置/获取硬件 RTC 时钟。
shstack显示或设置堆栈大小。
crypt密码加密
logout注销登录
reboot重启板卡
affinity设置/清除进程或线程的 CPU 亲和性。
cpuaffinity设置/清除 CPU 亲和性调度。
cdump显示或保存崩溃消息
crashtrap设置或者获取进程调试选项
hetrcc设置或者获取 CPU 算力簇参数
wield设置调度器弱亲和度粘滞系数
numago启动一个进程,并将该进程强关联到指定的 NUMA 集群
numas显示 NUMA 内存和 NUMA 任务的当前信息

help 命令

help 命令可以查看显示 ttinyShell 所有内建命令列表,命令格式如下:

help [keyword]
keyword:命令名

下面是 help 命令的使用方法:

[root@sylixos:/root]# help
ps
lsmod
modulegcov           [kernel module handle]
modules              [module name]
modulestat           [program file]
......

ts 命令

ts 命令可以查看 SylixOS 当前运行的线程信息,命令格式如下:

ts [pid]
pid :进程ID号

下面是 ts 命令的使用方法:

# ts
thread show >>
      NAME         TID    PID  PRI STAT LOCK SAFE    DELAY   PAGEFAILS FPU CPU
---------------- ------- ----- --- ---- ---- ---- ---------- --------- --- ---
t_idle           4010000     0 255 RDY     0 YES           0         0       0
……
thread : 16

输出的各项含义如下:

输出项说明
NAME线程名字,如 t_idle 代表 SylixOS 的 IDLE 线程
TID线程 ID(句柄),用 16 进制表示,如 4010001
PID线程所属进程的 ID,用 10 进制表示与 UNIX 系统表示方法相同,(0 表示操作系统内核线程)
PRI线程的优先级用 10 进制表示(数值越小优先级越高),如 255
STAT线程当前状态,RDY 代表就绪态
LOCK代表目标线程是否被锁定,0 表示没有被锁
SAFE代表目标线程是否处在安全模式,YES 表示在安全模式
DELAY是线程的延时大小
PAGEFAILS是缺页中断计数
FPU代表是否使用了硬件浮点运算器(fpu)
CPU代表此线程运行在哪一个 CPU 上(多核系统上可能有其他数值)
thread代表当前正在运行的线程总数

tp 命令

tp 命令可以查看 SylixOS 当前运行线程的阻塞信息,命令格式如下:

tp [pid]
pid :进程ID号

下面是 ts 命令的使用方法:

# tp
thread pending show >>
      NAME         TID    PID  STAT    DELAY          PEND EVENT        OWNER
---------------- ------- ----- ---- ---------- ----------------------- -------
t_except         4010002     0 SEM           0  10010003:job_sync
……
pending thread : 14

输出的各项含义如下:

输出项说明
NAME线程名
TID线程 ID
PID进程 ID
STAT线程当前状态
DELAY线程延时
PEND EVENT当前线程因什么事件阻塞,如信号量、消息队列等
OWNER当线程发生阻塞时,占有阻塞对象的线程 ID(如发生死锁,此域将包含占有锁的线程 ID)
pending thread当前正在运行的线程中有 14 个线程阻塞在某事件

ps 命令

ps 命令可以查看 SylixOS 当前运行的进程信息,命令格式如下:

ps

下面是 ps 命令的使用方法:

# ps
      NAME                 FATHER      STAT  PID   GRP    MEMORY    UID   GID   USER
---------------- ---------------- ---- ----- ----- ---------- ----- ----- ------
kernel            <orphan>           R         0     0        56KB      0         0 root
app                <orphan>           R         2     2       196KB      0        0 root
total vprocess: 2

输出的各项含义如下:

输出项说明
NAME进程名
FATHER父进程,orphan 代表是一个孤儿进程,即没有父进程
STAT进程的状态
PID进程 ID
GRP进程组 ID
MEMORY进程消耗的总内存(单位:字节)
UID进程用户 ID
GID进程用户组 ID
USER进程所属用户名,如 root

进程的状态,如下表所示:

状态标识说明
I进程初始态,进程还没有开始运行
R进程运行态,进程正在运行
T进程停止态,进程由于某种原因停止运行
Z进程僵尸态,进程已经退出,等待资源被回收

ints 命令

ints 命令可以显示 SylixOS 的中断向量信息,命令格式如下:

ints [cpuid start] [cpuid end]
cpuid start :起始CPU ID号
cpuid end :结束CPU ID

下面是 ints 命令输出信息的详细含义:

# ints
interrupt vector show >>
 IRQ      NAME        ENTRY    CLEAR   PARAM   ENABLE RND PREEMPT     CPU 0   
---- -------------- -------- -------- -------- ------ --- ------- -------------
  7  dm9000_isr     20013978        0 2c62fbe8   true                      4068
……
interrupt nesting show >>
 CPU   MAX NESTING      IPI
----- ------------- -------------
    0             1             0
interrupt vector base : 0x2c7a96a8

输出的各项含义如下:

输出项说明
IRQ中断号
NAME注册的中断名字
ENTRY中断服务函数地址,用 16 进制表示,如 20013978
CLEAR中断清理函数地址
PARAM中断服务函数参数地址
ENABLE代表中断是否使能
RND代表是否可用作系统随机数种子
PREEMPT代表是否允许抢占
CPU 0(0 代表 CPU 的编号)代表在 CPU0 上产生的中断数,如 dm9000_isr 在 CPU0 上产生了 4068 次中断

文件命令

命令名简要说明
ls列出指定目录下的文件,默认为当前目录
ll列出指定目录下的文件详细信息,默认为当前目录
files列出系统内核中打开的文件信息(不包含进程打开的文件)
fdentrys列出操作系统所有正在操作的文件信息(包含进程打开的文件)
sync将所有系统缓存的文件、设备、磁盘信息全部写入到相应的物理设备中
logfileadd向内核日志打印函数加入指定的内核文件描述符
logfileclear从内核日志打印文件表中清除指定的内核文件描述符
logfiles显示内核日志打印文件列表
loglevel显示或设置当前内核日志打印等级
cd切换当前目录
pwd查看当前工作目录
df查看指定目录的文件系统信息
tmpname获得一个可以创建的临时文件名
mkdir创建一个目录
mkfifo创建一个命名管道,注意:只能在根文件系统设备下创建
rmdir删除一个目录
rm删除一个文件
mv移动或重命名一个文件
cat查看一个文件的内容
cp拷贝一个文件
cmp比较两个文件内容
dsize计算一个指定的目录包含的所有文件信息
chmod设置文件或目录的权限位
mkfs格式化指定的磁盘
shfile执行指定的 Shell 脚本
mount挂载一个卷
umount卸载一个卷
showmount查看系统中所有已经挂载的卷
ln创建符号链接文件
dosfslabel查看 fat 文件系统卷标
fatugid设置 fat 文件系统用户与组 id
mmaps显示系统 mmap 信息
fdisk磁盘分区

fdisk 命令

fdisk 命令可以显示磁盘分区或为磁盘设备创建分区表,命令格式如下:

fdisk [-f] [block I/O device]
-f:指定磁盘设备
block I/O device:块设备,如/dev/blk/sdcard0

下面是 fdisk 命令的使用方法:

  • 显示 udisk0 分区表。
# fdisk /dev/blk/udisk0
  • 创建分区表。
fdisk –f /dev/blk/udisk0

fdisk 最多可创建 4 个分区(分区数:1~4),每个分区的大小需指出其百分比值(如 40%),可选择指定的分区是否为活动分区(包括活动和非活动),目前包括的文件系统类型包括:

  • FAT
  • TpsFS(SylixOS 掉电安全文件系统)
  • LINUX(暂时不支持)

说明:
详细的分区方法见《RealEvo-IDE 使用手册》。

网络命令

命令名简要说明
route添加、删除、修改或查看系统路由表,详细见 "网络通信" 章节
netstat查看网络状态
ifconfig配置网络接口信息
ifup启用一个网络接口
ifdown禁用一个网络接口
arp添加、删除或查看 ARP 表
pingping 命令
ping6IPv6 ping 命令
tftpdpath查看或设置 tftp 服务器本地路径
tftp使用 tftp 命令接收或者发送一个文件
ftpds显示 ftp 服务器信息
ftpdpath查看或设置 ftp 服务器初始化路径
nat启动、关闭或设置 NAT 虚拟网络地址服务, 详细见 "网络通信" 章节
nats查看当前 NAT 虚拟地址服务状态,详细见 "网络通信" 章节
npfs查看网络数据包过滤器状态
npfruleadd添加一条网络数据包过滤器规则
npfruledel删除一条网络数据包过滤器规则
flowctl网络流量控制
iftcpwnd动态设置 TCP 窗口大小
iftcpaf动态设置/获得 TCP ACK 包的发送频率
ifmip设置单网口启用多 IP 功能
vnd设置 VPN 虚拟网络接口
netbr设置网桥功能
natipfrag设置 NAT 是否分片功能
ipqos设置 QoS 功能
qoss显示 QoS 规则列表
qosruleadd增加一条 QoS 规则
qosruledel删除一条 QoS 规则
ipforward设置协议栈转发功能
rtmssadj设置或者获取 TCP 转发 MSS 自动调整状态功能
sroute设置源路由表
netbonding创建 bond 功能网络接口

ifup 和 ifdown 命令

ifup 命令启用指定的网络接口,同时可以开启或者关闭 dhcp 租约,ifdown 命令可以停用指定的网络接口,命令格式如下:

ifup  [netifname] [{-dhcp | -nodhcp}]
netifname :网络接口名(如:en1)
-dhcp :开启DHCP租约
-nodhcp :关闭DHCP租约

ifdown  [netifname]
netifname :网络接口名(如:en1)

下面展示了 ifup 和 ifdown 命令的用法:

  • 启用网络接口 en1。
ifup en1
  • 启用网络接口 en1 且开启 dhcp 租约。
ifup en1 –dhcp
  • 启用网络接口 en1 且停止 dhcp 模式。
ifup en1 –nodhcp
  • 停用网络接口 en1。
ifdown en1

flowctl 命令

flowctl 命令启用流量控制功能,不仅可以对网络接口进行流量控制,而且可以对 IPv4、IPv6 进行流量控制,命令格式如下:

flowctl [cn] [type] ips ipe [proto] ps pe dev [ifname] [dl][ul] bufs  
cn :
    add : 添加
    del : 删除
    chg : 修改
type
    ip :对IP地址进行流量控制
        ips :开始IP地址
        ipe :结束IP地址
        ps  :开始端口号
        pe  :结束端口号
    if :对网络接口进行流量控制
        ifname :网络接口名(如:en1)
        bufs :缓存区大小
        dl :下行速度
        ul :上行速度
proto
    tcp :TCP协议
    udp :UDP协议
    all :默认协议

下面展示了 flowctl 命令的用法:

  • 添加网络接口流控信息。
flowctl if dev en1 50 100 64
  • 添加 IPv4 流控信息。
flowctl add ip 192.168.1.1 192.168.1.10 tcp 20 80 dev en1 50 100 64
  • 删除 IPv4 流控信息。
flowctl del ip 192.168.1.1 192.168.1.10 tcp 20 80 dev en1
  • 修改 IPv4 流控信息。
flowctl chg ip 192.168.1.1 192.168.1.10 tcp 20 80 dev en1 100 200 

修改流控信息只能修改上行速度以及下行速度,ip 以及端口号修改无效。

SylixOS 流控操作可以使用 ioctl 的方法进行设置。

命令名简要说明
SIOCADDFC增加一条流控规则
SIOCDELFC删除一条流控规则
SIOCCHGFC改变一条流控规则
SIOCGETFC获得一条流控规则
SIOCLSTFC获得所有流控规则

netbr 命令

netbr 命令用于设置网桥功能。网桥是在数据链路层进行数据转发的一种机制,由于网桥数据没有经过协议栈,所以比路由功能的效率更高。下面展示了 netbr 命令的用法:

  • 添加网桥接口 bridge0。
netbr addbr bridge0
  • 向网桥接口 bridge0 中添加网络设备 ethdev0。
netbr adddev bridge0 ethdev0
  • 向网桥接口 bridge0 中添加网络接口 en0。
netbr addif bridge0 en0
  • 删除网桥接口 bridge0。
netbr delbr bridge0
  • 从网桥接口 bridge0 中删除网络设备 ethdev0。
netbr deldev bridge0 ethdev0
  • 从网桥接口 bridge0 中删除网络接口 en0。
netbr delif bridge0 en0
  • 刷新网桥接口 bridge0 的所有 MAC 缓存。
netbr flush bridge0
  • 显示网桥接口 bridge0 信息。
netbr show bridge0

ipqos、qoss、qosruleadd、qosruledel 命令

ipqos 命令用于启用或停止 QoS(Quality of Service)功能,qoss 命令用于查看当前启用的 QoS 规则列表,qosruleadd 命令用于增加一条 QoS 规则,qosruledel 命令用于删除一条 QoS 规则,下面展示各命令的用法:

  • 开启或关闭 QoS 功能。
ipqos 1/0
  • 查看 QoS 规则列表。
qoss
  • 增加一条 QoS 规则(向网络接口 en0 增加 UDP 规则,IP 段为 192.168.0.5 到 192.168.0.10,端口范围为 8000 到 8001 比较规则为源地址(SRC),优先级为 0,数据包不丢弃(yes))。
qosruleadd en0 udp 192.168.0.5 192.168.0.10 8000 8001 SRC  0 yes
  • 删除一条 QoS 规则(删除接口 en0 上序号为 0 的 QoS 规则)。
qosruledel en0 0

SylixOS QoS 规则操作可以使用 ioctl 的方法进行设置。

命令名简要说明
SIOCSETIPQOS设置 QoS 规则
SIOCGETIPQOS获得 QoS 规则

sroute 命令

sroute 命令用于设置 SylixOS 源路由,功能包括源路由条目的增加、删除、修改等,SylixOS 的源路由规则包括两种优先级:HIGH 和 DEF,其中 HIGH 代表,该路由条目优先被查找,DEF 则为没有其他路由条目时的默认路由,下面展示该命令的使用方法:

  • 增加一条“INC”规则的源路由条目(该条目表示,源地址在 10.5.0.0~10.5.255.255 区间,且目的地址在 10.0.0.0 ~ 10.255.255.255 区间的地址从网络接口 pp7 出)。
sroute add 10.5.0.0  10.5.255.255  10.0.0.0  10.255.255.255  INC  DEF  dev pp7
  • 增加一条“EXC”规则的源路由条目(该条目表示,源地址在 10.6.0.0~10.6.255.255 区间,且目的地址不在 10.6.0.0~10.6.255.255 区间的地址从网络接口 pp7 出)。
sroute add 10.6.0.0  10.6.255.255  10.0.0.0  10.255.255.255  EXC  DEF  dev pp7
  • 删除一条源路由规则。
sroute del 10.6.0.0 10.6.255.255 10.0.0.0 10.255.255.255
  • 修改一条源路由规则(修改源地址区间为 192.168.1.1~192.168.1.10)。
sroute chg 192.168.1.1 192.168.1.10 0.0.0.0 0.0.0.0 EXC HIGH dev pp7

SylixOS 源路由同样可以通过 ioctl 的形式进行设置,ioctl 命令如下所示。

命令名简要说明
SIOCADDSRT增加源路由条目
SIOCDELSRT删除源路由条目
SIOCCHGSRT改把源路由条目
SIOCGETSRT获得源路由条目

netbonding 命令

netbonding 命令用于在 SylixOS 下创建具有 bond 功能的虚拟网卡,网卡 bond 功能是将多个物理网卡绑定为一个虚拟网卡的一种机制,该机制实现了网卡冗余、带宽扩容、负载均衡功能,目前,SylixOS 支持 3 种模式。

  • 平衡循环策略
  • 主-备份策略
  • 广播策略

netbonding 命令帮助如下:

add / delete / control net bonding.
eg. netbonding show bond0              (Show all net device in 'bond0' net bonding)
    netbonding addbd bond0 [...]       (Add a net bonding named 'bond0')
    [...]: [ab|bl] [-t|-a|-l] [interval] [time to alive]
    ab           : Active Backup mode
    bl           : Balance RR mode
    -t           : Traffic detect in 'Active Backup' mode
    -a           : ARP detect in 'Active Backup' mode
    -l           : Linkup detect only in 'Active Backup' mode
    interval     : ARP detect interval (milliseconds)
    time to alive: When detect OK how long does it take to active (milliseconds)
    netbonding delbd bond0           (Delete a net bonding named 'bond0')
    netbonding adddev bond0 ethdev0  (Add a net device in net bonding named 'bond0')
    netbonding deldev bond0 ethdev0 (Delete a net device from net bonding named 'bond0')
    netbonding addif bond0 en1         (Same as 'adddev' but use interface name)
    netbonding delif bond0 en1         (Same as 'deldev' but use interface name)
    netbonding masterdev bond0 ethdev0 (Make net device 'ethdev0' as a master device in 'bond0')
    netbonding masterif bond0 en1      (Same as 'masterdev' but use interface name)
    netbonding addarp bond0 10.0.0.1   (Add a ARP detect target to net bonding named 'bond0')
    netbonding delarp bond0 10.0.0.1   (Delete a ARP detect target from net bonding named 'bond0')
netbonding [...]

netbonding 命令使用方法如下:

  • 增加一个 bond 设备,设置模式为“平衡循环策略”(bd0 是 bond 网卡设备,-t 指定开启链路探测功能)。
netbonding addbd bond0 bl -t 100 1000
  • 向 bond 网卡设备中添加网络接口。
netbonding addif bond0 en1
  • 查看 bond 网卡信息。
netbonding show bond0
  • 添加 ARP 探测目标。
netbonding addarp bond0 192.168.7.2
  • 在“主-备份策略”下设置主设备。
netbonding masterif bond0 en1

特殊地,在 ab 模式下支持 linkup 模式(-l 参数)的设置,linkup 模式不再需要设置“interval”和“time to alive”参数。

netbonding addbd bond0 ab -l

npf 命令集

在 SylixOS 中,网络包过滤命令包括:npfruleadd 、npfruledel 、npfs,命令说明如下。

npfruleadd

npfruleadd 命令向系统添加一个新的网络过滤规则,SylixOS 目前支持的规则,如下所示:

规 则参 数
macMAC 地址,如 08:08:08:08:08:08
ip起始 IP 地址和终止 IP 地址,如 192.168.1.1 和 192.168.1.100
tcp起始 IP 地址、终止 IP 地址、起始端口号、终止端口号,如 192.168.1.1、192.168.1.100、20、30
udp起始 IP 地址、终止 IP 地址、起始端口号、终止端口号

npfruleadd 命令格式如下:

npfruleadd [netifname] [rule] [args...]
netifname :网络接口名;
rule :规则名,目前包括:“mac”、“ip”、“tcp”、“udp”;
args :根据规则的不同而不同,如上表所示。

npfruleadd 命令使用方法如下:

# npfruleadd en1 ip 192.168.1.1 192.168.1.200
rule add ok

npfruledel

npfruledel 命令删除一个存在的规则,命令格式如下:

npfruledel [netifname] [rule sequence num]
netifname :网络接口名;
rule sequence num :规则序列号。

npfruledel 命令使用方法如下:

# npfruledel en1 0
delete

npfs

npfs 命令显示当前增加的过滤规则信息,命令格式如下:

npfs

npfs 命令使用方法如下:

# npfs
NETIF ATTACH SEQNUM RULE ALLOW MAC     IPs         IPe            PORTs    PORTe
en1      YES      0   IP    NO N/A  192.168.1.1 192.168.1.200     N/A      N/A   
drop:82  allow:1306

从 npfs 命令显示的信息可以看出,目前在 SylixOS 中增加一个“ip”类型的过滤规则,网络接口为“en1”、序列号(SEQNUM)为 0、过滤规则的起始 IP 地址为 192.168.1.1 终止 IP 地址为 192.168.1.200,因为过滤规则是“ip”类型,所以不存在起始端口号和终止端口号。

时间命令

ttinyShell 内建时间命令,如下所示:

命令名简要说明
date显示或设置系统时间
times显示系统当前时间
hwclock显示或同步操作系统与硬件 RTC 时钟

date 命令

date 命令可以显示或者设置系统的时间,命令格式如下:

date [-s {time | date}]
-s: 设置时间
    time:时、分、秒时间格式
    date:年、月、日时间格式

下面展示了 date 命令的用法:

  • 显示系统时间。
date
  • 设置系统 24 小时时间格式。
date –s 18:15:09
  • 设置系统日期。
data –s 20150918

hwclock 命令

hwclock 命令可以显示或者同步硬件 RTC 时钟,命令格式如下:

hwclock [{--show | --hctosys | --systohc}]
--show 显示RTC时间
--hctosys :将RTC时间同步到系统时间
--systohc :将系统时间同步到RTC时间

下面展示了 hwclock 命令的用法:

  • 显示硬件 RTC 时间。
hwclock –show
  • 同步硬件 RTC 时间到系统时间。
hwclock --hctosys
  • 同步系统时间到硬件 RTC 时间。
hwclock –-systohc

动态装载命令

ttinyShell 内建动态装载命令如下所示。

命令名简要说明
debug调试一个进程
dlconfig配置动态链接器工作参数
modulereg注册一个内核模块(参数模块句柄)
moduleunreg卸载一个内核模块(参数模块句柄)
modulestat查看一个内核模块或动态链接库文件信息
insmod注册一个内核模块(参数模块名)
rmmod卸载一个内核模块(参数模块名)
lsmod查看系统装载的所有内核模块信息
modules查看系统装载的所有内核模块与进程动态链接库信息

debug 命令

debug 命令用来调试 SylixOS 应用程序,命令格式如下:

debug [connect options] [program] [argments...]
connect options :连接选项
program :需要调试的程序名字
argments... :程序参数列表

下面展示了 debug 命令的用法:

  • 通过网络调试,SylixOS 设备启动调试器,localhost:1234 代表 SylixOS 设备调试端口号是:1234,./app 是当前目录下需要调试的应用程序。
debug localhost:1234 ./app
  • 通过串口调试,SylixOS 设备启动调试器,默认的串口波特率为 115200bps,数据位数为 8 位,停止位为 1 位,无奇偶校验。
debug /dev/ttyS1 ./app

非入侵式性能分析工具

SylixOS 旗舰版系统提供非入侵式性能分析工具,通过该工具可以方便地发现程序中哪些函数占有的 CPU 时间多,从而可以快速的地位程序中出现的问题,命令格式如下:

perfs
perfrefresh
perfstop
perfstart   [pipe buffer len] [performance save node] [refresh period]
pipe buffer len:显示数据的缓冲区长度
performance save node:性能分析保存的最大节点数
refresh period:性能分析的刷新间隔

下面展示了上面命令的用法:

  • 通过下面命令启动一个缓冲区长度为 1024,保存的节点为 20,默认刷新周期(1 秒)。
perfstart   1024 20
  • 查看性能分析数据。
# perfs
                                       Performance Statistics
             Becasue 'static' function NOT in symbol table so if SAMPLE in 'static' function,'POSSIBLE FUNCTION' will the nearest
             NAME  TID PID  CPU   SYMBOL  SAMPLE   TIME CONSUME  POSSIBLE FUNCTION
----- ---  --- --- -------- -------- ------------- ------------------
app  4010039   6 1 0x011c8cf0 0x011c8d70          6802   __kernelExit
app  4010039   6 1 0x1dc1ab80 0x1dc1ac12          3370   svecd_add_i0_x
app  4010039   6 1 0x011c8bd0 0x011c8c34          2534   __kernelEnter
app  4010039   6 1 0x011c4b90 0x011c4bc1          1702   _CpuGetNesting
……
  • 刷新性能分析数据。
perfrefresh
  • 停止性能分析工具。
perfstop

大小核算力簇设置

SylixOS内核版本V3.1.1之后全部支持大小核智能调度功能,SylixOS调度器的升级标志着SylixOS操作系统针对支持大小核的硬件能够更加科学性的功耗管理。

  • 用户可以通过shell命令方便地实现线程的CPU算力亲和管理,如下命令将线程4010020亲和到算力簇1上。
hetrcc 4010020 strong 1

亲和之后的效果如下:

[root@sylixos:/root]# ts
thread show >>

      NAME          TID     PID  PRI STAT  LOCK  SAFE   DELAY   PFAULTS  FPU  CPU
---------------- -------   ----- --- ----  ----  ---- ---------- ------- --- -----
t_idle0           4010000    0   255  RDY    0   YES    0           0          0
t_idle1           4010001    0   255  RDY    0   YES    0           0          1
t_idle2           4010002    0   255  RDY    0   YES    0           0          2
t_idle3           4010003    0   255  RDY    0   YES    0           0          3
t_itimer          4010004    0   20   SLP    0   YES    1           0          1
……
t_ftpd            4010020    0   160  MSGQ   0        0             0          ^ 1

说明:
^ : 代表“STRONG”亲和,该亲和方式将告诉调度器该任务只能在指定的算力簇上运行;
*: 代表“WEAK”亲和,该亲和方式将告诉调度器在不破坏调度原则的情况下,尽可能地将该任务运行在指定的算力簇上。

其他命令

ttinyShell 内建其他命令如下所示。

命令名简要说明
shstack显示或者设置 Shell 任务栈大小,设置仅对之后启动的 shell 有效
leakchkstart启动系统内存泄露跟踪器
leakchkstop关闭系统内存泄露跟踪器
leakchk内存泄露检查
xmodems使用 xmodem 协议发送一个文件
xmodemr使用 xmodem 协议接收一个文件
untar解包或解压缩一个 tar 或 tar.gz 文件包
gzip压缩或解压缩一个文件
vi启动 vi 编辑器
perfs显示性能分析工具的运行数据(旗舰版系统提供)
perfrefresh刷新性能分析工具的运行数据(旗舰版系统提供)
perfstop停止性能分析工具(旗舰版系统提供)
perfstart开始性能分析工具(旗舰版系统提供)

leakchkstart、leakchkstop 和 leakchk 命令

以上命令可以对系统内存泄漏进行检测,命令格式如下:

leakchkstart  [max save node number] [pid]
max save node number :最大跟踪节点数
pid :进程ID

leakchkstop
leakchk

下面展示了上面命令的用法:

  • 启动内存泄漏跟踪器,第二个参数 2048 是最大跟踪的节点数,第三个参数 0 是检测内核内存,此参数小于 0 时代表检测所有内存(内核和用户进程),此参数大于 0 代表检测指定进程的内存。
leakchkstart 2048 0
  • 检测内存泄漏情况。
leakchk
  • 停止内存泄漏跟踪器。
leakchkstop

说明:
第二个参数的节点数是定长内存中的内存块数,这些内存用于临时缓存的目的。

文档内容是否对您有所帮助?
有帮助
没帮助