Linux 常用命令

154 阅读2分钟

这里总结一下平日经常用到的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,那么就需要去修改家目录下的.bashrcrc的意思是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

这样我们在命令行中执行nginxshell就会找到/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)

得到它的PID3009,之后我们就可以对进程进行操作了(比如kill掉它)。

文件管理

du

假如我想查看一个目录下各个文件的大小,我可以使用du命令(ls -al也可以查看文件大小,但是都是以字节作为单位的,要想指定大小需要使用--block-size=,相较之下更麻烦)

在目录下,通过执行

$ du -h --max-depth=1

即可查看各个文件和目录的大小。

其中-h意为--human-readable--max-depth=1指定查看的深度,如果不指定则默认递归展示目录下所有文件的大小。