Linux常用命令整理

前言


日常记录Linux常用命令

查询所有java进程

1
ps -ef | grep java

解释一下这个命令的意思,ps 是查看系统当前进程的命令,参数-ef用标准的格式显示进程,|这个是管道符,用来把前面的命令结果交给后面做筛选的,grep java就是通过grep筛选命令筛选出包含java的程序。

杀死进程

1
2
kill(不加 -* 默认kill -15)命令
kill PID

释放资源,再停止进行。

强制杀死进程

1
kill -9 PID

直接终止进程,在使用 kill -9 前,应该先使用 kill -15,给目标进程一个清理善后工作的机会。

查看某个进程的所有线程

1
ps -T -p <pid>

或者用top命令

1
2
3
4
# 显示所有的线程,可以用H进行切换,关闭或开启线程的查看,开启的话PID就是线程号
top -H
# 查看某个进程下的所有线程,PID代表线程号
top -H -p PID

查看端口占用

1
netstat -anp| grep PID

查看java进程占用内存、cpu使用情况等

1
top

查看文件占用内存

1
du -sh *

查看磁盘容量

1
df -h

查看当前路径

1
pwd

查看指定目录下文件的详细信息,包括大小字节数、可读可执行权限

1
ls -l

建立软连接

1
ln -s slink source

比如之前的neo4j中建立的软连接,ln -s graph_new.db graph.db

复制命令

1
cp -r /usr/men /usr/zh

将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中,默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R/-r选项

删除文件

1
rm -r /*

递归删除文件夹,将指定目录下的所有文件与子目录一并处理,并且给出提示

1
rm -rf /*

递归删除文件夹,将指定目录下的所有文件与子目录一并处理,不给出提示,直接删除

Linux通配符

1
2
3
"?"可替代单个字符。
"*"可替代任意多个字符。
方括号"[charset]"可替代 charset 集中的任何单个字符,如[a-z],[abABC]

文件内容的统计

1
wc 命令 -c 统计字节数 -l 统计行数 -w 统计字数

文本搜索工具grep,常与cat同用

1
cat a.txt | grep "abc"

读入a.txt文件,查找出其中所有带有字符串abc的行。

按页查看大文件的内容

1
cat file_name.txt | more

最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。

后台运行

1
一般都是使用 & 在命令结尾来让程序自动运行。(命令后可以不追加空格)

搜索文件

1
2
find <指定目录> <指定条件> <指定动作>
find / -name "string*"

查看内存占用等信息

1
free -h
1
2
# 可以每隔3s显示一次
free -h -s 3

清除缓存

1
2
3
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches

程序后台运行

1
nohup python -u jobs.py > logs/recommServer.log 2>&1 &

nohup就是不挂起的意思(no hang up),也就是当我们关闭终端后,程序仍然在后台运行而不终止。

2>&1是指将标准错误重定向到标准输出,于是标准错误和标准输出都重定向到指定的logs/recommServer.log文件中,从此终端彻底清静了。

那么要找到刚刚在后台运行的程序,可以有两种方法,一种是之前提到的ps -ef|grep jobs.py命令,还有一个是jobs命令,都能显示出任务的PID。

1
jobs -l

场景:发现Java的生产环境下linux服务器的CPU占用过高如何去解决?

步骤一:先用top命令,然后按shift+p按照CPU占用进行排序,找到CPU占用最高的那个进程。

步骤二:再用 top -H -p [进程id] 命令找到进程中资源消耗最高的线程id。

步骤三:然后用 printf “%x\n” [线程id] 命令将线程id转换为16进制。

步骤四:最后用 jstack [进程id] |grep -A 10 [线程id的16进制]” 查看线程状态信息。