1.常用的Linux指令
find 命令
查找指定文件名的文件(不区分大小写):find -iname "MyProgram.c" 。
对找到的文件执行某个命令:find -iname "MyProgram.c" -exec md5sum {} \; 。
查找 home 目录下的所有空文件:find ~ -empty 。
ls 命令
以易读的方式显示文件大小(显示为 MB,GB…):ls -lh 。
以最后修改时间升序列出文件:ls -ltr 。
在文件名后面显示文件类型:ls -F 。
pwd 命令
输出当前工作目录:pwd
cd 命令
cd :可以在最近工作的两个目录间切换。
mkdir 命令
在 home 目录下创建一个名为 temp 的目录:mkdir ~/temp 。
使用 -p 选项可以创建一个路径上所有不存在的目录:mkdir -p dir1/dir2/dir3/dir4/ 。
df 命令
显示文件系统的磁盘使用情况,默认情况下 df -k 将以字节为单位输出磁盘的使用量。
df -h :选项可以以更符合阅读习惯的方式显示磁盘使用量。
df -T :选项显示文件系统类型。
rm 命令
删除文件前先确认:rm -i filename.txt 。
在文件名中使用 shell 的元字符会非常有用。删除文件前先打印文件名并进行确认:rm -i file* 。
递归删除文件夹下所有文件,并删除该文件夹:rm -r example 。
mv 命令
将 file1 重命名为 file2 ,如果 file2 存在则提示是否覆盖:mv -i file1 file2 。
-v 会输出重命名的过程,当文件名中包含通配符时,这个选项会非常方便:mv -v file1 file2 。
cp 命令
拷贝 file1 到 file2 ,并保持文件的权限、属主和时间戳:cp -p file1 file2 。
拷贝 file1 到 file2 ,如果 file2 存在会提示是否覆盖:cp -i file1 file2 。
cat 命令
你可以一次查看多个文件的内容,下面的命令会先打印 file1 的内容,然后打印 file2 的内容:cat file1 file2 。
-n 命令可以在每行的前面加上行号:cat -n /etc/logrotate.conf 。
tail 命令
tail 命令默认显示文件最后的 10 行文本:tail filename.txt 。
你可以使用 -n 选项指定要显示的行数:tail -n N filename.txt 。
你也可以使用 -f 选项进行实时查看,这个命令执行后会等待,如果有新行添加到文件尾部,它会继续输出新的行,在查看日志时这个选项会非常有用。
你可以通过 CTRL-C 终止命令的执行:tail -f log-file 。
vim 命令
打开文件并跳到第 10 行:vim +10 filename.txt 。
打开文件跳到第一个匹配的行:vim +/search-term filename.txt 。
以只读模式打开文件:vim -R /etc/passwd 。
kill 命令
kill 用于终止一个进程。一般我们会先用 ps -ef 查找某个进程得到它的进程号,然后再使用 kill -9 进程号终止该进程。你还可以使用killall、pkill、xkill 来终止进程
shutdown 命令
关闭系统并立即关机:shutdown -h now 。
10 分钟后关机:shutdown -h +10 。
重启:shutdown -r now 。
重启期间强制进行系统检查:shutdown -Fr now 。
ps 命令
ps 命令用于显示正在运行中的进程的信息。
查看当前正在运行的所有进程:ps -ef | more 。
以树状结构显示当前正在运行的进程,H 选项表示显示进程的层次结构:ps -efH | more 。
查看后台所有 java 进程
方式一:ps -ef |grep java 。
方式二:jps -m 。
vmstat 命令
$vmstat 1,每行会输出一些系统核心指标,这些指标可以让我们更详细的了解系统状态,后面跟的参数 1 ,表示每秒输出一次统计信息。
mpstat 命令
$mpstat -p all 1,该命令可以显示每个 CPU 的占用情况,如果有一个 CPU 占用率特别高,那么有可能是一个单线程应用程序引起的。
free 命令
$ free -m 命令可以查看系统内存的使用情况,-m 参数表示按照兆字节展示。
top 命令
$ top 通过这个命令,可以相对全面的查看系统负载的来源。同时,top 命令支持排序,可以按照不同的列排序,方便查找出诸如内存占用最多的进程、CPU占用率最高的进程等。
netstat 命令
netstat -lnp : 如何查看系统都开启了哪些端口
ls 查看当前目录下有什么文件和文件夹
cd 进入当前目录
mkdir 创建文件夹 touch 创建文件
cd ../ 返回上一层目录 cd /直接返回根目录
rm 删除文件或文件夹 rm -f 删除文件 rm-rf 删除文件夹
find /name 文件检索
vim 打开文件编辑 cat 查看文件
df 查看磁盘大小 df -h 带有单位显示磁盘信息
free -m 内存使用状况 top 查看cpu使用率
2.Linux管道
管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间,这是它与有名管道的最大区别。管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现为:
- 限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4K字节,使得它的大小不象文件那样不加检验地增长。使用单个固定缓冲区也会带来问题,比如在写管道时可能变满,当这种情况发生时,随后对管道的write()调用将默认地被阻塞,等待某些数据被读取,以便腾出足够的空间供write()调用写。
- 读取进程也可能工作得比写进程快。当所有当前进程数据已被读取时,管道变空。当这种情况发生时,一个随后的read()调用将默认地被阻塞,等待某些数据被写入,这解决了read()调用返回文件结束的问题。
3.错误异常too many open files
too many open files是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。 引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数,通过命令ulimit -a可以查看当前系统设置的最大句柄数是多少。