常用 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 表 |
ping | ping 命令 |
ping6 | IPv6 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 目前支持的规则,如下所示:
规 则 | 参 数 |
---|---|
mac | MAC 地址,如 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
说明:
第二个参数的节点数是定长内存中的内存块数,这些内存用于临时缓存的目的。