Tools

Linux下的工具

ssh

lsof

List Open File 获取被进程打开文件的信息

Args

  -a: 结果进行AND运算 而非OR
  +d 列出当前目录下(不包括子目录)
  +D 类似传统-R 遍历子目录
  +L 将链接计数打印在NLINK(+L指定的为开区间)
  -d 指定打开的文件描述符类型[见文件描述符类型]
  -g 组ID GID
  -N NFS文件
  -i 网络文件
  -R 列出PPID
  -x 跟踪文件系统链接
  -F 指定格式
  -l UID代替username
  -n 不域名解析
  -o 列出文件偏移offset
  -P 列出端口号而不是端口对应的默认服务
  -s 列出文件大小
  -r 间隔重复扫描

文件描述符表

(1)cwd:表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改
(2)txt :该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序
(3)lnn:library references (AIX);
(4)err:FD information error (see NAME column);
(5)jld:jail directory (FreeBSD);
(6)ltx:shared library text (code and data);
(7)mxx :hex memory-mapped type number xx.
(8)m86:DOS Merge mapped file;
(9)mem:memory-mapped file;
(10)mmap:memory-mapped device;
(11)pd:parent directory;
(12)rtd:root directory;
(13)tr:kernel trace file (OpenBSD);
(14)v86  VP/ix mapped file;
(15)0:表示标准输入
(16)1:表示标准输出
(17)2:表示标准错误
一般在标准输出、标准错误、标准输入后还跟着文件状态模式:r、w、u等
(1)u:表示该文件被打开并处于读取/写入模式
(2)r:表示该文件被打开并处于只读模式
(3)w:表示该文件被打开并处于
(4)空格:表示该文件的状态模式为unknow,且没有锁定
(5)-:表示该文件的状态模式为unknow,且被锁定
同时在文件状态模式后面,还跟着相关的锁
(1)N:for a Solaris NFS lock of unknown type;
(2)r:for read lock on part of the file;
(3)R:for a read lock on the entire file;
(4)w:for a write lock on part of the file;(文件的部分写锁)
(5)W:for a write lock on the entire file;(整个文件的写锁)
(6)u:for a read and write lock of any length;
(7)U:for a lock of unknown type;
(8)x:for an SCO OpenServer Xenix lock on part      of the file;
(9)X:for an SCO OpenServer Xenix lock on the      entire file;
(10)space:if there is no lock.

文件类型表

(1)DIR:表示目录
(2)CHR:表示字符类型
(3)BLK:块设备类型
(4)UNIX: UNIX 域套接字
(5)FIFO:先进先出 (FIFO) 队列
(6)IPv4:网际协议 (IP) 套接字  

Strace

Strace可以诊断 调试Linux用户空间 检测进程与内核的交互 系统调用 信号 状态变更等

Args

| -c          | 统计                  |
| -f          | 追踪fork子进程         |
| -ff         | 将为每个子进程          |
| -F          | 追踪vfork调用          |
| -i          | 输出系统调用入口指针    |
| -q          |                      |
| -r          | 输出相对时间           |
| -t -tt -ttt | 输出的每一行加入时间    |
| -T          | 显示系统调用所需时间    |
| -v          | 输出所有调用           |
| -x          | 十六进制输出非标准字符串 |
| -xx         | 十六禁止输出所有字符串   |
| -e expr     | 指定表达式来控制如何追踪 |
| -p pid      | 追踪指定的进程          |
| -u user     | 以user身份执行         |

-e expr

| trace   | 指定追踪的系统调用     |
| abbrev  | 输出系统调用的结果集合  |
| verbose |                     |
| raw     | 十六进制显示          |
| signal  | 指定追踪的信号 默认all |

trace集合

| file    | 与文件相关的系统调用    |
| process | 与进程相关的系统调用    |
| network | 与网络相关的系统调用    |
| signal  | 与信号相关的系统调用    |
| ipc     | 与进程通讯相关的系统调用 |

Examples

不追踪sigio信号

  strace -e signal=!SIGIO

通用用法

strace -o output -T -tt -e trace=file -p pid

Shell

每秒将占用最大的进程打印

for ((;;));do ps aux --sort=-%mem;sleep 1;done

Linux桌面创建通知

notify-send "标题" "通知内容"

进程是否存在

  while true ; do if ! ps  -p 10605; then notify-send 'ok';play -n synth 10 sine 1000;break ;fi ;sleep 5;done

发出声音警报

play -n synth 1 sine 10000

系统备份

  sudo tar -cjpvf gentoobackup.tar.gz  --exclude=/run --exclude=/mnt --exclude=/proc/ --exclude=/sys --exclude=/dev --exclude=/var/cache --exclude=/var/tmp --exclude=/tmp --exclude=/home --exclude=/root /

电池相关

查看电池状态

  upower -i $(upower -e)

Wifi管理

nmtui