add some linux cmds
This commit is contained in:
parent
94727ea035
commit
abccc26724
|
@ -1,3 +1,175 @@
|
|||
### 文件/外设
|
||||
|
||||
#### access, faccessat
|
||||
|
||||
检查用户对一个文件的权限
|
||||
|
||||
#### close
|
||||
|
||||
关闭文件描述符
|
||||
|
||||
#### dup, dup2, dup3
|
||||
|
||||
复制文件描述符
|
||||
|
||||
#### fcntl
|
||||
|
||||
管理文件描述符
|
||||
|
||||
#### getcwd, getwd, get_current_dir_name
|
||||
|
||||
获取当前工作目录
|
||||
|
||||
#### ioctl
|
||||
|
||||
控制设备
|
||||
|
||||
```c
|
||||
/*
|
||||
* 通过控制设备文件来控制设备。特别是字符设备,如终端(teminals)。
|
||||
* fd : 设备文件的文件描述符,要求设备文件必须是打开的。
|
||||
* request : 依赖于设备的请求码。关于此参数的宏和定义在<sys/ioctl.h>。
|
||||
* TCGETS : 获取当前串口设置(Tty Ctrl GET Serial port Settings)
|
||||
* TIOCGPGRP : 获取终端上进程的组ID(Tty IO Ctrl Get the Process GRouP id)
|
||||
* 第三个参数:无类型(untyped)的指针,它是char *argp。
|
||||
* 返回值:非负表示成功,负数表示失败。
|
||||
* EBADF : fd无效。
|
||||
* EFAULT : argp引用了不可访问的内存区域。
|
||||
* EINVAL : request或argp无效。
|
||||
* ENOTTY : fd没有关联到字符设备。
|
||||
*/
|
||||
int ioctl(int fd, unsigned long request, ...);
|
||||
```
|
||||
|
||||
|
||||
|
||||
#### lseek
|
||||
|
||||
重新定位读/写文件的位移
|
||||
|
||||
#### open, openat, creat
|
||||
|
||||
打开或创建文件
|
||||
|
||||
#### read
|
||||
|
||||
从文件描述符读
|
||||
|
||||
#### stat,fstat,lstat,fstatat
|
||||
|
||||
获取文件状态
|
||||
|
||||
#### umask
|
||||
|
||||
设置文件模式的掩码
|
||||
|
||||
### 进程
|
||||
|
||||
#### arch_prctl
|
||||
|
||||
设置特定架构的线程状态
|
||||
|
||||
#### clone, __clone2
|
||||
|
||||
创建子进程
|
||||
|
||||
```c
|
||||
/* 类似于fork()。与fork()不同的是,clone()出来的子进程可以共享父进程的部分上下文,如虚拟地址空间、文件描述符表、信号句柄的表(table of signal handlers)。
|
||||
* clone()的一个作用是创建线程,多个线程可以共享地址空间。
|
||||
* fn : 函数的标记,子进程从此处开始执行。而fork()出来的子进程是从调用点开始执行的。
|
||||
* child_stack : 指定子进程的栈。由于栈是向下增长的,所以此参数应指向栈的高地址。
|
||||
* 当函数fn(arg)返回时,子进程终止。fn的返回值即为子进程的退出状态。子进程也可以调用exit()终止,或接收到fatal信号后终止。
|
||||
* flags :
|
||||
* arg : 函数fn的参数。
|
||||
*/
|
||||
int clone(int (*fn)(void *), void *child_stack, int flags, void *arg, ...);
|
||||
|
||||
```
|
||||
|
||||
#### execve
|
||||
|
||||
执行程序
|
||||
|
||||
#### getgid, getegid
|
||||
|
||||
获得调用进程的组ID
|
||||
|
||||
#### getgroups, setgroups
|
||||
|
||||
获取、设置所附加组ID的列表
|
||||
|
||||
#### getpgid, getpgrp
|
||||
|
||||
获得进程的组
|
||||
|
||||
#### getpid, getppid
|
||||
|
||||
获取进程ID
|
||||
|
||||
#### getpriority, setpriority
|
||||
|
||||
获取、设置调度优先级
|
||||
|
||||
#### getresuid, getresgid
|
||||
|
||||
获取真实(r)有效(e)已保存的(s)用户ID、组ID
|
||||
|
||||
#### getsid
|
||||
|
||||
获取会话(session)ID
|
||||
|
||||
#### getuid, geteuid
|
||||
|
||||
获得调用进程的用户ID
|
||||
|
||||
#### pipe, pipe2
|
||||
|
||||
创建管道
|
||||
|
||||
#### prctl
|
||||
|
||||
对进程的操作
|
||||
|
||||
#### setgid
|
||||
|
||||
设置组ID
|
||||
|
||||
#### setpgid, setpgrp
|
||||
|
||||
设置进程的组
|
||||
|
||||
#### setresuid, setresgid
|
||||
|
||||
设置真实(r)有效(e)已保存的(s)用户ID、组ID
|
||||
|
||||
#### setsid
|
||||
|
||||
创建会话并设置进程组ID
|
||||
|
||||
#### setuid
|
||||
|
||||
设置用户ID
|
||||
|
||||
#### sched_setaffinity, sched_getaffinity
|
||||
|
||||
设置、获取线程对CPU的亲和力掩码(affinity mask)
|
||||
|
||||
#### sched_setparam, sched_getparam
|
||||
|
||||
设置、获取调度参数
|
||||
|
||||
#### sched_setscheduler, sched_getscheduler
|
||||
|
||||
设置、获取调度策略
|
||||
|
||||
#### sched_yield
|
||||
|
||||
让出处理器
|
||||
|
||||
#### times
|
||||
|
||||
获取进程相关的一些时间
|
||||
|
||||
#### wait, waitpid, waitid
|
||||
|
||||
等待子进程状态改变
|
||||
|
@ -46,7 +218,71 @@ pid_t wait4(pid_t pid, int *wstatus, int options, struct rusage *rusage);
|
|||
// 返回值: 与waitpid相同。
|
||||
```
|
||||
|
||||
#### wait3,wait4
|
||||
|
||||
BSD风格的wait
|
||||
|
||||
### 内存
|
||||
|
||||
#### brk, sbrk
|
||||
|
||||
改变数据段的大小
|
||||
|
||||
#### mmap,munmap
|
||||
|
||||
把文件或设备映射(或取消映射)到内存
|
||||
|
||||
#### mprotect, pkey_mprotect
|
||||
|
||||
设置对一个内存区域的保护
|
||||
|
||||
### 信号
|
||||
|
||||
#### kill
|
||||
|
||||
向进程发送信号
|
||||
|
||||
#### sigaction, rt_sigaction
|
||||
|
||||
检测并改变一个信号的行为
|
||||
|
||||
#### sigaltstack
|
||||
|
||||
设置、获取信号栈的上下文
|
||||
|
||||
#### sigprocmask, rt_sigprocmask
|
||||
|
||||
检测并改变被阻塞的信号
|
||||
|
||||
#### sigreturn, rt_sigreturn
|
||||
|
||||
从信号handler返回,并清空stack frame
|
||||
|
||||
#### sigsuspend, rt_sigsuspend
|
||||
|
||||
等待一个信号
|
||||
|
||||
#### sigwaitinfo, sigtimedwait, rt_sigtimedwait
|
||||
|
||||
同步等待排队的信号
|
||||
|
||||
#### tkill, tgkill
|
||||
|
||||
向线程发信号
|
||||
|
||||
### 计时器
|
||||
|
||||
#### clock_getres, clock_gettime, clock_settime
|
||||
|
||||
时钟和时间的函数
|
||||
|
||||
#### clock_nanosleep
|
||||
|
||||
可指定时钟的高精度睡眠(high-resolution sleep with specifiable clock)
|
||||
|
||||
#### getitimer, setitimer
|
||||
|
||||
获取、设置间隔计时器(interval timer)的值
|
||||
|
||||
#### gettimeofday
|
||||
|
||||
|
@ -60,3 +296,38 @@ struct timeval {
|
|||
}
|
||||
```
|
||||
|
||||
#### settimeofday
|
||||
|
||||
设置时间。
|
||||
|
||||
### 网络
|
||||
|
||||
#### connect
|
||||
|
||||
在socket上发起一个连接
|
||||
|
||||
#### socket
|
||||
|
||||
创建通信的端点
|
||||
|
||||
### 其它
|
||||
|
||||
#### gethostname, sethostname
|
||||
|
||||
获取、设置hostname
|
||||
|
||||
#### reboot
|
||||
|
||||
重启系统
|
||||
|
||||
#### sysinfo
|
||||
|
||||
获取系统信息
|
||||
|
||||
#### syslog, klogctl
|
||||
|
||||
read and/or clear kernel message ring buffer; set console_loglevel
|
||||
|
||||
#### uname
|
||||
|
||||
获取内核信息
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
#### qemu中安装alpine
|
||||
|
||||
```bash
|
||||
qemu-img create -f raw image_file 8G # to create hard disk images
|
||||
qemu-system-x86_64 -m 1G -cdrom iso_image -boot order=d -net nic -net user -drive file=disk_image,format=raw # installing the OS
|
||||
|
||||
# 用户名为root,无密码
|
||||
setup-alpine
|
||||
|
||||
# 启动alpine
|
||||
qemu-system-x86_64 -m 1G -net nic -net user -drive file=disk_image,format=raw
|
||||
```
|
||||
|
|
@ -8,3 +8,9 @@ read [options] [name ...] # 读取一行,把它分成多个字段,这些字
|
|||
-p <prompt> # 在读取之前,先输出不带换行符的字符串<prompt>
|
||||
```
|
||||
|
||||
#### 示例
|
||||
|
||||
```bash
|
||||
cat file1 | while read line # 从文件file1中依次读出每行的内容到变量line
|
||||
```
|
||||
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
#### 简介
|
||||
|
||||
把很多实用程序放到一个文件里。
|
||||
|
||||
```bash
|
||||
busybox <applet> [args] # 执行busybox里的程序<applet>
|
||||
<applet> [args] # 当把busybox符号链接为<applet>,可直接执行它
|
||||
busybox --install [-s] [DIR] # 把busybox安装进DIR目录,其实就是把busybox复制进DIR再换个名字。如果使用-s参数则创建的是符号链接。
|
||||
busybox --list[-full] # 列出程序名,如加上-full则列出完整的路径。
|
||||
```
|
||||
|
|
@ -4,8 +4,9 @@ git clone [options] <repository> [directory]
|
|||
|
||||
#### 选项
|
||||
|
||||
```
|
||||
```bash
|
||||
-b, --branch <name> # 指向name所代表的分支
|
||||
--origin <name>, -o <name> # 不用origin,而用<name>追踪远程仓库
|
||||
--origin <name>, -o <name> # 用<name>追踪远程仓库,默认是origin
|
||||
--depth <N> # 使用浅层克隆,其深度为<N>
|
||||
```
|
||||
|
||||
|
|
|
@ -64,9 +64,9 @@ rgrep # 等价于grep -r
|
|||
##### 文本行控制
|
||||
|
||||
```
|
||||
-A NUM, --after-context=NUM
|
||||
-B NUM, --before-context=NUM
|
||||
-C NUM, -NUM, --context=NUM
|
||||
-A NUM, --after-context=NUM # 打印出匹配的行后面NUM行的内容。
|
||||
-B NUM, --before-context=NUM # 打印出匹配的行前面NUM行的内容。
|
||||
-C NUM, -NUM, --context=NUM # 打印输出内容的NUM行。
|
||||
```
|
||||
|
||||
##### 文件与目录选择
|
||||
|
@ -129,4 +129,3 @@ word$ //行尾匹配
|
|||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
#### 简介
|
||||
|
||||
解压工具
|
|
@ -1,2 +1,82 @@
|
|||
#### 简介
|
||||
|
||||
追踪系统调用和信号(signals)
|
||||
|
||||
```bash
|
||||
strace [options] <command> [args]
|
||||
# 在最简单的情况下,strace运行指定的命令直到它退出。它会记录进程使用的系统调用和接收的信号。结果默认输出到标准错误,也可用-o选项输出到文件中。
|
||||
# 输出的格式:
|
||||
# 系统调用名 + 传递的参数 + “=” + 返回值
|
||||
# 如果返回-1(发生了错误),还会附加错误符号和错误信息
|
||||
# 如果是信号,则会打印出信号符号和siginfo结构体
|
||||
# 如果是未知的系统调用,则显示为16进制的形式。
|
||||
# 系统调用的参数里如果有字符指针,则会解引用为字符串。字符串太长则用省略号表示 。
|
||||
# 系统调用的参数里,简单的指针(如数组)用方括号标注,复杂的指针(如结构体)用花括号标注。
|
||||
# 系统调用里的简单指针,数组用逗号分隔元素,位集(bit-sets)用空格分隔元素。
|
||||
# ~[]表示位集里的元素全都设置了,这样比较省空间。
|
||||
```
|
||||
|
||||
#### 选项
|
||||
|
||||
##### 输出格式
|
||||
|
||||
```bash
|
||||
-i # 打印出系统调用的指针。
|
||||
-o <filename> # 把输出写入文件filename,而不是写到stderr.
|
||||
-t # 打印出系统调用的时间,精确到秒。
|
||||
-tt # 打印出系统调用的时间,精确到毫秒。
|
||||
-ttt # 打印出epoch以来的秒数+系统调用的时间(精确到毫秒)。
|
||||
-T # 打印系统调用所花费的时间。
|
||||
```
|
||||
|
||||
|
||||
|
||||
##### 统计
|
||||
|
||||
```bash
|
||||
-c # 统计每个系统调用的时间、调用次数和错误次数。
|
||||
-S <sortby> # 对输出的结果排序。可选参数有time,calls,name,nothing,默认time.
|
||||
```
|
||||
|
||||
|
||||
|
||||
##### 过滤
|
||||
|
||||
```bash
|
||||
-e <expr> # 用expr来定义要追踪的事件及追踪它的方式。
|
||||
# expr的格式:[qualifier=][!][?]<value1>[,[?]value2...]
|
||||
-e trace=<set> # 指定要追踪的系统调用。默认trace=all。
|
||||
# set指系统调用的集合,如:open,close,read,write
|
||||
-e trace=%file # 追踪以文件名为参数的系统调用
|
||||
-e trace=%process # 追踪进程管理的系统调用
|
||||
-e trace=%network # 追踪网络相关的系统调用
|
||||
-e trace=%signal # 追踪信号相关的系统调用
|
||||
-e trace=%ipc # 追踪IPC相关的系统调用
|
||||
-v # 打印出系统调用参数的详细信息。
|
||||
```
|
||||
|
||||
|
||||
|
||||
##### 追踪
|
||||
|
||||
```bash
|
||||
-f # 仅追踪子进程。这些子进程就是要追踪的进程,它们一般由fork,vfork或clone系统调用创建。
|
||||
```
|
||||
|
||||
|
||||
|
||||
##### 启动
|
||||
|
||||
```bash
|
||||
-p <pid> # 把pid附加到进程。
|
||||
```
|
||||
|
||||
|
||||
|
||||
##### 其它
|
||||
|
||||
```bash
|
||||
-d # 显示一些调试信息。
|
||||
-V # 打印版本号。
|
||||
```
|
||||
|
||||
|
|
|
@ -99,6 +99,7 @@ V # 选择,以行为单位
|
|||
:s/vivian/sky/g //替换当前行所有vivian为sky
|
||||
:%s/[a-z]//ig //删除文档中所有字母,且忽略大小写
|
||||
:%s/old/new/gc //查找全部文件,并提示是否把old替换为new
|
||||
:%s/^\s\+// //替换行首的所有空白字符,空白字符指空格或tab
|
||||
:n,$s/vivian/sky //从第n行到最后一行替换第一个vivian为sky
|
||||
```
|
||||
|
||||
|
|
|
@ -1,17 +1,29 @@
|
|||
#### for arch linux
|
||||
#### 安装wps
|
||||
|
||||
```bash
|
||||
# for arch linux
|
||||
git clone https://aur.archlinux.org/wps-office.git
|
||||
cd wps-office
|
||||
wget http://kdl1.cache.wps.com/ksodl/download/linux/a21/wps-office_10.1.0.5707~a21_x86_64.tar.xz
|
||||
makepkg -si
|
||||
|
||||
# 安装字体
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
#### 安装字体
|
||||
|
||||
```bash
|
||||
# for arch linux
|
||||
git clone https://aur.archlinux.org/ttf-wps-fonts.git
|
||||
cd ttf-wps-fonts
|
||||
makepkg -si
|
||||
|
||||
# 安装字体方法二
|
||||
suod cp -r fonts_dir /usr/share/fonts # 直接把字体文件夹复制到对应目录下即可
|
||||
# for ubuntu
|
||||
sudo apt install ttf-mscorefonts-installer
|
||||
|
||||
# 适用于所有Linux系统
|
||||
sudo cp -r fonts_dir /usr/share/fonts # 直接把字体文件夹复制到对应目录下即可
|
||||
```
|
||||
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
#### 简介
|
||||
|
||||
Alpine的包管理器
|
||||
|
||||
```
|
||||
apk [options] <command> [args]
|
||||
```
|
||||
|
||||
#### 命令
|
||||
|
||||
##### 安装与删除
|
||||
|
||||
```bash
|
||||
apk add
|
||||
apk del
|
||||
```
|
||||
|
||||
##### 系统管理
|
||||
|
||||
```bash
|
||||
apk fix
|
||||
apk update
|
||||
apk upgrade
|
||||
apk cache
|
||||
```
|
||||
|
||||
##### 检索
|
||||
|
||||
```bash
|
||||
apk info
|
||||
apk list
|
||||
apk dot
|
||||
apk policy
|
||||
```
|
||||
|
||||
##### 仓库管理
|
||||
|
||||
```
|
||||
apk index
|
||||
apk fetch
|
||||
apk manifest # 显示包里所包含文件的checksums
|
||||
apk verify
|
||||
```
|
||||
|
||||
##### 其它
|
||||
|
||||
```bash
|
||||
apk audit
|
||||
apk stats
|
||||
apk version
|
||||
```
|
||||
|
||||
#### 全局选项
|
||||
|
||||
```bash
|
||||
-U, --update-cache # 相当于‘--cache-max-age 1’,即缓存中的索引最长可存在1分钟
|
||||
--cache-max-age <AGE> # 缓存中的索引最长可以存在<AGE>分钟
|
||||
--no-cache # 不使用本地缓存
|
||||
```
|
||||
|
||||
|
||||
|
||||
#### 提交选项
|
|
@ -1,5 +1,5 @@
|
|||
```
|
||||
uniq [options] [input [output]] # 过滤input中的重复行,输出的output
|
||||
uniq [options] [input [output]] # 过滤input中的重复行,输出到output
|
||||
# 注:一般与sort命令连用,选排序,再过滤
|
||||
```
|
||||
|
||||
|
|
|
@ -2,6 +2,29 @@
|
|||
|
||||
打印网络连接、路由表、接口统计数据、伪装连接和组播成员。
|
||||
|
||||
```bash
|
||||
netstat [-vWeenNcCF] [Af] -r # 显示内核路由表
|
||||
# Af : 默认inet
|
||||
# -6|-4
|
||||
# -A <af>
|
||||
# --<af>
|
||||
# af可能的值:inet, inet6, ax25, netrom, ipx, ddp, x25
|
||||
netstat [-vWnNcaeol] [socket...] # 显示打开的套接字
|
||||
# socket :
|
||||
# -t, --tcp
|
||||
# -u, --udp
|
||||
# -U, --udplite
|
||||
# -S, --sctp
|
||||
# -w, --raw
|
||||
# -x, --unix
|
||||
# --ax25
|
||||
# --ipx
|
||||
# --netrom
|
||||
netstat {[-vWeenNac] -i | [-cnNe] -M | -s [-6tuw]} # 显示网络接口,或伪装连接,或统计数据。
|
||||
```
|
||||
|
||||
|
||||
|
||||
#### 选项
|
||||
|
||||
```
|
||||
|
|
|
@ -14,11 +14,11 @@ fdisk [options] device # 管理磁盘分区表
|
|||
|
||||
#### fdisk命令
|
||||
|
||||
```
|
||||
```bash
|
||||
# DOS(MBR)
|
||||
a # 切换可启动标记
|
||||
b
|
||||
c
|
||||
c # 切换DOS兼容性标记
|
||||
|
||||
# Generic
|
||||
d # 删除分区
|
||||
|
@ -35,18 +35,18 @@ m # 显示帮助信息
|
|||
u
|
||||
x # 扩展功能(experts only)
|
||||
|
||||
Script
|
||||
I
|
||||
O
|
||||
# Script
|
||||
I # 从脚本载入磁盘布局
|
||||
O # 把磁盘布局导出到脚本
|
||||
|
||||
# 保存与退出
|
||||
w # 将分区表写入磁盘并退出
|
||||
q # 退出不保存
|
||||
|
||||
# 创建标签
|
||||
g
|
||||
G
|
||||
o
|
||||
s
|
||||
# 创建label
|
||||
g # 创建GPT分区表
|
||||
G # 创建SGI(IRIX)分区表
|
||||
o # 创建DOS分区表
|
||||
s # 创建Sun分区表
|
||||
```
|
||||
|
||||
|
|
|
@ -9,5 +9,6 @@ losetup [options] [loopdev] # 设置loop设备
|
|||
-d, --detach <loopdevs> # 解除到loopdev的连接.
|
||||
-f, --find [file] # 查找空闲的loop设备.如指定[file],则将[file]关联到那个空闲的loop设备.
|
||||
-l, --list #
|
||||
-P, --partscan # 在新创建的loop设备上,强制内核扫描分区表
|
||||
```
|
||||
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
#### 简介
|
||||
|
||||
创建ext2/ext3/ext4文件系统
|
||||
|
||||
#### 选项
|
||||
|
||||
```bash
|
||||
-F # 强制生成文件系统。
|
||||
-j # 创建文件系统的时候使用ext3日志。
|
||||
```
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
#### 简介
|
||||
|
||||
在Linux下创建MS-DOS文件系统
|
||||
|
||||
#### 选项
|
||||
|
||||
```bash
|
||||
-F <FAT-SIZE> # 指定文件分配表的类型(12, 16或32位)。
|
||||
```
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
#### 简介
|
||||
|
||||
基于进程的名字和属性来向进程发送信号
|
||||
|
||||
```bash
|
||||
pkill [options] <pattern>
|
||||
```
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
#### 简介
|
||||
|
||||
以树的形式显示进程之间的关系
|
||||
|
||||
```bash
|
||||
pstree [options] [pid, user]
|
||||
```
|
||||
|
Loading…
Reference in New Issue