读《Linux 创客实战》
本文是 《Linux 创客实战》 一书的笔记,主要涉及 Linux 和树莓派的知识。
Linux 知识
信号
Ctrl+T
:发送 SIGINFO 信号,在执行 dd 命令时可以检查进度。kill PID
:发送正常终止的信号。kill -1 PID
发送一个重启信号;kill -2 PID
发送中断信号,与按Ctrl+C
相同;kill -9 PID
发送 SIGKILL 信号,并立即关闭进程;
shell
在 bash 脚本中,反引号表示执行其中的代码,例如输出当前时间:
|
|
Ctrl+Z、& 和 fg
Ctrl+Z
暂停程序执行(进入睡眠),fg
命令可以恢复到前台运行。
在命令的末尾加 &
字符可以让程序启动后在后台运行,但日志仍然会输出到控制台。fg
命令可以将程序拉到前台执行。
输出重定向
command > file
将输出重定向到文件;command >> file
将输出以追加的方式重定向到文件。command &> file
相当于command > file 2>&1
;command &>> file
相当于command >> file 2>&1
。
2>&1
表示将 stderr 重定向到 stdout。
同时运行多个命令
A && B
操作符,相当于逻辑与,只有 A 命令执行成功才会运行 B 命令;A || B
操作符,相当于逻辑或,只有 A 命令执行失败才会运行 B 命令;A;B
连续运行 A 和 B 命令,不管命令的结果。
ls 命令
ls
命令输出的文件特殊权限选项有:
d
表示目录;l
表示链接;s
表示文件应该以所有者权限运行;t
表示只有所有者可以删除或重命名文件;-
表示一般文件;
ls
命令输出的 total 160
表示所有文件使用的磁盘区块的总数;
ls
命令选项:
-X
按扩展名排序;-S
按文件大小排序;
top 命令
top 命令的含义是 table of processes,即进程表。
僵尸进程(zombie process)通常是已完成正在执行的操作的子进程,但是必须等待其父进程退出才能从进程列表中清除。
top 第一行的 load average 指的是平均 CPU 负载。
Cpu 行各部分含义:
us
用于运行正常用户进程的时间百分比;sy
用于运行系统内核的进程的时间百分比;ni
用于运行优先级或降优先级进程上的时间百分比;id
闲置的时间百分比;wa
用于等待 I/O 完成的时间百分比;hi
硬件中断时间的百分比;si
软件中断时间的百分比;st
仅适用于虚拟化系统,只是从系统中偷走的时间百分比,因为主机系统忙于执行其他操作;
内存 Mem 和虚拟内存 Swap 行的含义:
total
总量used
使用量free
可用量buffers
当系统挂载或访问连接到系统本身的文件系统时使用的内存;cached mem
来自文件和程序的实际数据。
进程行的含义:
PR
进程的当前优先级;NI
进程的 nice 值或用户自定义的优先级;VIRT
进程需要用到的内存总量;RES
进程实际用到的内存量;SHR
进程可用的共享内存量;S
进程的当前状态,D 不间断睡眠,R 运行,S 睡眠,T 追踪或停止,Z 僵尸。
常用操作快捷键:
x
突出显示当前的排序字段;P
按%CPU
排序(默认);M
按%MEM
排序;N
按 PID 排序;T
按 TIME 排序;k
杀死进程;h
帮助;q
退出。
ps 命令
ps 命令默认只显示当前用户正在运行的进程,若要获取所有进程的列表,请使用 -ef
选项。
grep 命令
常用的选项:
-e
同时搜索多个术语(逻辑或的关系),例如:
|
|
-i
选项不区分大小写,例如:
|
|
-c
计算多少行包含搜索项,例如:
|
|
树莓派知识
树莓派重启和关机
使用 shutdown 命令,以 root 权限执行。
关机
|
|
重启
|
|
实现开机启动
将脚本或程序添加到 /etc/rc.local
中执行;
GPIO 操作
操作 GPIO 有两个模块,其中一个是 RPi.GPIO,另一个是 pigpio。后者以服务器的形式在系统中运行,并且能够被 C 和 Python 程序调用,甚至通过网络被另一台树莓派调用。
I2C 协议和 SPI 协议都是串行通信协议,I2C 协议的通信速度比 SPI 慢,但是只需要两根线,SPI 设备需要至少 4 根线。
播放音频和视频
推荐使用 omxplayer,理由有:
- 包含在树莓派的发行版中;
- 可以使用 GPU 解码;
- 支持许多数字格式。
播放:
|
|
设置音量:
|
|
millibels 表示在 500(大声)和 -4000(非常安静)之间的一个数字,而 0 是正常的。
在命令行中控制树莓派全局音量,可以使用 alsamixer 程序。
其他
构建系统时,应该遵循 KISS 规则,即
Keep It Simple, Stupid!
TTY 来自 TeleType 这个词,指的是一种与电脑通信的方法。在计算机的早期,你需要使用电传打字机或电传打印机来打出想要进入计算机的信息。
VNC 是 Virtual Network Computing 的缩写,虚拟网络计算。