这里总结一下平日经常用到的Linux命令,待补充。
查找文件
find
使用find可以按文件名、文件大小、文件类型等条件查找文件,平常最常用的是按文件名查找:
$ find / -name '*.sql' # 在根目录下查找所有以 sql 结尾的文件
$ find . -name '*database*' # 在当前目录查找所有文件名包含 database 的文件
which
which命令主要用来在**PATH变量指定的目录中**查找指定命令的路径,例如:
$ which nginx # 查找 nginx 命令的目录
其中PATH变量可以通过echo查看,如果安的软件比较多的话这个变量可能会比较长(因为存了很多的命令的目录,比如JAVA、MySQL等):
$ echo $PATH
为 $PATH 添加目录
如果想要执行的命令不在$PATH的目录中,导致无法执行,其中一种方法是为$PATH变量添加目录,这种情况需要去修改对应的shell的配置文件。
默认情况下Linux使用的是bash,那么就需要去修改家目录下的.bashrc(rc的意思是run commands,即bash启动时会执行的命令):
$ vim ~/.bashrc
添加:
export PATH=$PATH:新添加的路径
然后source ~/.bashrc即可。
如果用的不是bash而是其他的shell就只需要更改对应的配置文件即可(例如zsh需要修改~/.zshrc)。
使用符号链接
除了修改$PATH,还有另一种方式是使用符号链接,这种也是我个人用到过的。
假如说我们现在通过自行编译的方式安装了nginx(其中nginx可执行文件在/usr/local/nginx/sbin目录下),由于nginx可执行文件不在$PATH中,因此无法直接在命令行中执行。这种情况下,我们可以通过符号链接的方式把nginx链接到$PATH指定的目录下(/usr/bin和/usr/local/bin都常被用来放可执行文件,两个都行,更推荐/usr/local/bin,因为它的作用就是放用户自己编译安装的文件):
$ which nginx # nginx not found
$ sudo ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx # 创建符号链接
$ which nginx # /usr/local/bin
这样我们在命令行中执行nginx,shell就会找到/usr/local/bin目录下的符号链接nginx,从而可以找到我们安装的nginx。
进程管理
ps
ps命令主要用来查看当前正在运行的进程,常用的参数是-ef:
$ ps -ef # -e表示列出所有进程(不仅是当前终端的进程),-f表示列出进程详细信息
如果想要对这些进程进行筛选,可以通过管道使用grep进行筛选,例如:
$ ps -ef | grep 'node' # 查看所有包含node的进程
lsof
假如我们想要查看哪个进程使用了某个端口,可以使用lsof -i:端口号进行查看。
例如我想要查看占用了3000端口的node进程的PID,就可以使用:
$ sudo lsof -i:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 3009 root 19u IPv6 15605222 0t0 TCP *:hbci (LISTEN)
得到它的PID为3009,之后我们就可以对进程进行操作了(比如kill掉它)。
文件管理
du
假如我想查看一个目录下各个文件的大小,我可以使用du命令(ls -al也可以查看文件大小,但是都是以字节作为单位的,要想指定大小需要使用--block-size=,相较之下更麻烦)
在目录下,通过执行
$ du -h --max-depth=1
即可查看各个文件和目录的大小。
其中-h意为--human-readable;--max-depth=1指定查看的深度,如果不指定则默认递归展示目录下所有文件的大小。