目录
一、引言
二、日常积累
三、命令积累
一、引言
这个主题主要带大家学习一下日常开发所使用的命令及相关知识,会持续更新
二、日常积累
1、kill
给某个进程发送信号
kill -STOP pid(进程号),可以发送任何信号给进程;kill -STOP %1 给jobs中的任务发送信号
2、tmux:终端复用器
可以将当前会话脱离终端,并且能开多个窗口,具体使用可以看这篇文章
Tmux 使用教程
3、linux进程后台运行方法:nohup、setsid、&、daemon
nohup:的用途就是让提交的命令忽略 hangup 信号
setsid: 将进程变为不属于接受 HUP 信号的终端的子进程
& :可在结尾加上“&”来将命令放入后台运行。但用此方法还是会收到创建会话发出的HUP信号
4、链接:简单说,链接就是一种文件共享的方式
软链接:ln -s 源文件 软链接文件, 软链接里面存放的是源文件的路径,指向源文件
硬链接:ln 源文件 硬链接文件
软链接其实就是创建一个新文件,这个文件就是用来指向其他文件的,软链接文件的inode号跟源文件的inod不同
硬链接增加了一个指向这个文件的inode,并不会额外占用磁盘空间
5、define
本质是文本替换
a、## 连接操作符
b、 #@ 字符化操作符
c、 # 字符串化操作符
d、 \ 行继续操作符
e、 VA_ARGS 宏用来接受不定数量的参数
f、当__VA_ARGS__宏前面##时,可以省略参数输入
6、gcc
7、通用寄存器
寄存器的主要作用是用来暂时存放参与运算的数据和运算结果,具有接收数据、存放数据和输出数据的功能。
8、vim
vi 十六进制显示 %!xxd
%! grep xxx
%! grep -v xxx 过滤掉xxx
13、strace:看到程序执行的所有系统调用
9、资料查找
1、不要使用百度
2、google、Bing
3、github
4、StackOverflow
5、man、tldr
三、命令积累
1、ctrl-r
使用 ctrl-r 搜索命令行历史记录(按下按键之后,输入关键字便可以搜索,重复按下 ctrl-r 会向后查找匹配项,按下 Enter 键会执行当前匹配的命令,而按下右方向键会将匹配项放入当前行中,不会直接执行,以便做出修改)。
2、移动光标
ctrl-w 删除你键入的最后一个单词
ctrl-u 可以删除行内光标所在位置之前的内容
alt-b 和 alt-f 可以以单词为单位移动光标
ctrl-a 可以将光标移至行首
ctrl-e 可以将光标移至行尾
ctrl-k 可以删除光标至行尾的所有内容
ctrl-l 可以清屏
man readline 可以查看 Bash 中的默认快捷键
3、history
键入 history 查看命令行历史记录,再用 !n(n 是命令编号)就可以再次执行。其中有许多缩写,最有用的大概就是 !$, 它用于指代上次键入的参数,而 !! 可以指代上次键入的命令了
4、输入错误命令
依次按下 ctrl-a, #, enter,将命令注释,之后可以通过history查找历史
5、.bashrc
可以把别名、shell 选项和常用函数保存在 ~/.bashrc
~/.profile是放置适用于整个会话的内容的地方,例如要在登录时启动的程序(但不是图形程序,它们进入不同的文件)和环境变量定义。
~/.bashrc是放置仅适用于 bash 本身的内容的地方,例如别名和函数定义、shell 选项和提示设置。(您也可以将键绑定放在那里,但对于 bash,它们通常会进入 。~/.inputrc
~/.bash_profile可以代替 ,但它只能由 bash 读取,不能由任何其他 shell 读取。(如果您希望初始化文件在多台机器上运行,并且您的登录 shell 不是在所有机器上都受到攻击,这主要是一个问题。如果 shell 是交互式的,则这是一个合乎逻辑的位置
要想在几台电脑中同步你的配置文件(例如 .bashrc 和 .bash_profile),可以借助 Git
6、ssh
ssh 中,了解如何使用 -L 或 -D(偶尔需要用 -R)开启隧道是非常有用的,比如当你需要从一台远程服务器上访问 web 页面
配置文件: ~/.ssh/config
TCPKeepAlive=yes
ServerAliveInterval=15
ServerAliveCountMax=6
Compression=yes
ControlMaster auto
ControlPath /tmp/%r@%h:%p
ControlPersist yes
7、top
获取 CPU 和硬盘的使用状态,通常使用使用 top(htop 更佳,可以看到每个CPU的状态),iostat 和 iotop。而 iostat -mxz 15 可以让你获悉 CPU 和每个硬盘分区的基本信息和性能表现。
8、内存状况
若要了解内存状态,运行并理解 free 和 vmstat 的输出。值得留意的是“cached”的值,它指的是 Linux 内核用来作为文件缓存的内存大小,而与空闲内存无关
9、strace 、 ltrace
strace 和 ltrace。这俩工具在你的程序运行失败、挂起甚至崩溃,而你却不知道为什么或你想对性能有个总体的认识的时候是非常有用的
很多时候我们希望可以看到一个进程调用了哪些API以及其调用顺序,例如我们要参考某个程序的实现,但我们又无法获得该程序的源代码时,使用系统调用跟踪命令不失为一个好办法。另外,在一些无法调试的环境上检查问题时,我们也可以用该命令来查看程序是否按预期执行。strace和dtruss都是同一类型的命令,strace是linux系统上的,而dtruss是mac系统上的。
10、ldd
使用 ldd 来检查程序需要链接的共享库
11、proc
如:/proc/cpuinfo,/proc/meminfo,/proc/cmdline,/proc/xxx/cwd,/proc/xxx/exe,/proc/xxx/fd/,/proc/xxx/smaps(这里的 xxx 表示进程的 id 或 pid)。
12、删除文件
如果你删除了一个文件,但通过 du 发现没有释放预期的磁盘空间,请检查文件是否被进程占用: lsof | grep deleted | grep “filename-of-my-big-file”