有时候需要某些命令,只是用了一两次,当时搞懂了,但长时间不同又忘了,还得上网查,所以在这里记录一下。
- ln
为某一个文件在另外一个位置建立一个同步的链接。- -s ln -s 源文件/目录 目标文件/目录
创建软链接,类似于 Windows 的快捷方式。可以对一个不存在的文件名进行链接
默认是硬链接。不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。当文件发生变化时,链接也会发生变化,它会保持同步性。
硬链接与源文件的 inode 节点相同,而软链接不同。删除源文件不会影响硬链接。
以下是老男孩整理的几点区别:
- -s ln -s 源文件/目录 目标文件/目录
1 ln 命令默认创建硬链接。
2 硬链接文件与源文件的inode节点号相同,而软链接文件的inode节点号与源文件不同。3 ln命令不能对目录创建硬链接,但可以创建软链接,对目录的软链接会经常被用到。
4 删除软链接文件,对源文件及硬链接文件无任何影响;
5 删除文件的硬链接文件,对源文件及软链接文件无任何影响;
6 删除链接文件的原文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状);
7 同时删除原文件及其硬链接文件,整个文件才会被真正的删除。
8 很多硬件设备中的快照功能,使用的就类似硬链接的原理。
9 软连接可以跨文件系统,硬链接不可以跨文件系统。
- du
显示目录或文件所占空间。只显示当前目录下面的子目录的目录大小和当前目录的总的大小,最下面的1288为当前目录的总大小 - df
df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 - top
命令经常用来监控linux的系统状况,比如cpu、内存的使用。
P 表示按 CPU 使用率来排序,M 表示按使用内存大小来排序
- lsof
用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。
根据端口查进程:lsof -i:port
还能使用: netstat -nap | grep port
通过进程名查看其占用端口
ps -ef | grep 进程名
netstat -nap | grep 进程pid
- mkdir
主要是为了创建层级目录
mkdir -p test/a/b
# 这会创建目录 test,在其下创建目录 a,然后在 a 目录下创建 b
mkdir -p test/{a, b, c, d}
# 创建 test 目录,并在其下创建 a b c d 四个文件
mkdir {1..3}ab
# 创建 1ab 2ab 3ab 三个文件夹,对于 touch 也有同样的用法
- crontab
定时任务计划表
分钟 小时 几号 月份 星期几 需要执行的命令
逗号表示两个,- 号表示一段时间范围内
/n 表示每隔 n 单位间隔就执行一次的意思
*/5 * * * * command 每 5 分钟进行一次 - vim 查找替换字符
在 normal 模式下按下 / 即可进入查找模式,输入要查找的字符。n 查找下一个,N 查找上一个。
:%s/foo/bar/g
在全局范围类查找foo
并替换为bar
。
:s/foo/bar/g
在当前行替换 - grep
grep 'test' a.txt
在 a.txt 中查找以 test 开头的行
grep -w pattern files
匹配整个单词,而不是字符串的一部分。 - kill
用于杀死进程,将其终止,但是对于僵尸进程不行,还有处于“核心态”的进程也杀不死,因为其默认忽略所有信号,只能重启系统。kill 只能杀死处于用户态的进程。常用信号:
INT
2 中断 类似Ctrl + c
QUIT
3 退出
TERM
5 终止
KILL
9 强制终止
CONT
18 继续
STOP
19 暂停 类似Ctrl + Z
子进程结束或终止时会向主进程发送SIGCHLD
,然后主进程就可以调用 wait 或 waitpid 回收子进程资源了。
ps:wait 会使调用者阻塞直到某个子进程终止;
waitpid 可以通过设置一个选项来设置为非阻塞,另外 waitpid 并不是等待第一个结束的进程而是等待参数中 pid 指定的进程。
waitpid 提供了 wait 所没有的三个特性:
waitpid 使我们可以等待指定的进程
waitpid 提供了一个无阻塞的wait
waitpid 支持工作控制
- jobs
一般命令行程序按下Ctrl
+z
后便进入了暂停,即suspended
状态,如何再次进入呢?使用jobs
命令可以查看后台暂停的程序,然后使用fg [进程号]
把进程恢复到前台。如果jobs
只查询到一个进程,那么只输入fg
即可。 - vim 保存并退出
一般来说,可以在命令模式下输入:wq
,x
。
但是还有一种更加简便的方法,在命令模式下输入ZZ
。注意,这里是两个大写的Z
。