前言
查询所有java进程
1 | ps -ef | grep java |
解释一下这个命令的意思,ps 是查看系统当前进程的命令,参数-ef用标准的格式显示进程,|这个是管道符,用来把前面的命令结果交给后面做筛选的,grep java就是通过grep筛选命令筛选出包含java的程序。
杀死进程
1 | kill(不加 -* 默认kill -15)命令 |
释放资源,再停止进行。
强制杀死进程
1 | kill -9 PID |
直接终止进程,在使用 kill -9 前,应该先使用 kill -15,给目标进程一个清理善后工作的机会。
查看某个进程的所有线程
1 | ps -T -p <pid> |
或者用top命令
1 | 显示所有的线程,可以用H进行切换,关闭或开启线程的查看,开启的话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 | "?"可替代单个字符。 |
文件内容的统计
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 | find <指定目录> <指定条件> <指定动作> |
查看内存占用等信息
1 | free -h |
1 | 可以每隔3s显示一次 |
清除缓存
1 | echo 1 > /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进制]” 查看线程状态信息。