1.【终端】查看当前终端:tty
2.查看【当前使用的shell】:echo ${SHELL}
3.自己设置【主机名】:hostname NAME(主机名不要使用下划线)
4.区分【内外部命令】:type command
5.查看【内部命令】:enable 或 help
6.查看【外部命令】:whereis 或者which -a
7.【命令别名】:alias NAME=‘VALUE’,查看alias,撤销unalias NAME
永久有效的一般设置在.bashrc下 或 /etc/bashrc;
如未生效,进程需【重新读取配置文件】:source /path/to/config_file
别名、原命令一致,需执行原命令:“ALIASNAME”
8.查看【用户id】:id -u root
9.查看【硬件信息】:
cpu(lscpu 或 cat /proc/cpuinfo)
内存(free 或 cat /pro/meminfo)
硬盘和分区情况(lsblk 或 cat /proc/partitions 或 blocks name)
10.查看【版本信息】:
查看内核版本:uname; 查看操作系统发行版本:cat /etc/*release* 或 lsb_release -a
11.查看【时间】:echo `date +%F_%T` 或 echo $(date +%F) 或 echo $(date +%Y-%m-%d)
前一天:echo `date -d "1 day" +%F+%T` 后一年: echo $(date -d "1 year" +%F_%T)
12.展示文件夹的属性(也叫元数据metadate) 和 内容(也叫数据date):ll /bin /usr/sbin -d
13.切换到以前的工作目录:cd - ;查看以前的工作目录:echo $OLDPWD
14.查看文件状态:stat /etc/passwd
access time 访问时间,atime 读取文件内容
modify time 修改时间,mtime 改变文件内容(数据)
change time 改变时间,ctime 元数据发生改变
15.windows文本格式文件 转 Linux文本格式文件:方法1:复制到vi以后的脚本里;方法2:用dos2unix
(wndows文件结尾/r/n表示回车换行,liunx文件/n表示回车换行; 用cat -v test.sh可以看到文件中的非打印字符^M((\r的十六进制为0D,对应的控制符为^M)),vi看不到。)
(1)安装转换工具:yum -y install dos2unix
(2)将windows文本格式 转 liunx文本格式:dos2unix win.txt;二次检查:file win.txt
(3)将liunx文本格式 转 windows文本格式:unix2dos win.txt;二次检查:file win.txt(with CLRF lin terminators)
16.转换文件字符集编码:windows10上文本默认编码ANSI(GB2312),默认无法在liunx正常显示,查看方式:file windows.txt(ISO-8859 text,with no line terminators)
(1)将windows10上文本默认编码ANSI(GB2312)转换成UTF-8,并将windows文本格式换成liunx文本格式:
iconv -f gb2312 windows.txt -o windows1.txt
dos2unix windows.txt
(2)将UTF-8转换成windows10上文本默认编码ANSI(GB2312):
iconv -f utf8 -t gb2312 windows.txt -o windows11.txt
17.创建规律文件 touch file{a..z}.txt file{A..Z}.txt file{0..9}.txt
全文件名查找:ls file[a-c].txt 全文件名模糊查找:ls *[A-D].txt
匹配列表内的任意字符:ls file[wang].txt 匹配列表内所有字符以外的字符:ls file[^wang].txt
18.复制folder文件夹下的内容到新目录new_folder:cp -r folder new_folder(有重复文件(非文件夹)会提示是否覆盖)
19.只复制更新目标 或 不存在的文件:cp -r -u a/* b/a/(直接跳过重复文件,不需要手动确认(非文件夹))
20.除复制文件的内容外,还把修改时间和访问权限也复制到新文件中:cp -p a.txt a1.txt
21.每天复制文件,不更新时间戳到指定目录:cp -av a b/backup`date +%F` (v表示打印详情,a常用于备份)
看新增文件 ls -ltR 文件名
22.删除多个文件:rm -f a.txt b.txt 删除一个文件rm -f c.txt
23:删除目录及下边的子目录和文件:rm -rf a
24.批量修改文件名:例1:rename 'file' 'file_date' f* 例2:rename 'txt' 'txt.bak' f*
25.通配符:touch file{0..9}.txt 查找:ls file[1-3].txt 模糊查找:ls *[1-3].txt
匹配列表中任意一个字符:ls file[wang].txt ;匹配列表中所有字符以外的字符:ls file[^wang].txt
【通配符】
26.查找当前目录下所有的文件夹:方法一:find ./ -type d 方法二:ls -d /etc/*/ (记得*后加/)
27.创建一个文件,如果目录不存在则创建,有直接创建目录:
方法一(直接写):mkdir -p a/b/c ; touch a.txt(将 ; 换成&&也行)
方法二(写参数):dir=a/b/c ; mkdir -p $dir ; touch $dir/a.txt
28.在一个目录下,同时创建多个文件夹:mkdir -p {hello,word)
29.递归查找含大写字母F的:find ./ -name *F\* (其中F\,表示F)
30.展示目录:tree 参数(-d:只展示目录;-L 数字:展示到第几层目录;-P:展示哪层目录)
注:如果找不到 tree 命令,请提前安装yum install tree -y
31.直接查看a文件空间使用率 df a;查看a文件的inode信息(索引(文件元数据和节点信息))而非块(实际存放在硬盘上的位置)使用信息 df -i a
32.清空大文件内容:cat /dev/null > a/b/a.txt
33.数据库对查询结果进行排序:row number()over(order by **)
根据id进行分组:row number()over(partition by id order by **)
34.元数据(meta data):每个文件的属性信息,如文件大小、时间、类型等,称为文件的元数据。
35.节点表(node表):元数据是存放在node(index node)表中。node表中有很多条记录组成。【第一条记录】存放了一个文件的元数据信息。
36.目录:目录文件保存了此目录中文件列表及inode number的对应关系(文件引用一个inode号;一个目录是 目录下文件名 和 文件inode号 之间的映射)
37.cp命令和inode:分配空闲的inode号;在目录中生成一个目录项,将名称与inode编号关联;copy数据生产新文件;
38.rm命令和inode:链接数递减,从而释放inode号可以被重用;把数据块放在空闲列表中;删除目录项;数据实际上不会被马上删除,但当另一个文件使用数据块时将被覆盖
39.mv命令和inode:
mv命令的目标和源在相同的文件系统:用新的文件名创建新的目录项;删除旧目录条目对应的旧文件;不影响inode表(除时间戳)或磁盘上数据的位置,没有数据被移动!
mv命令的目标和源在不同的文件系统,mv相当于cp和rm:
40.硬链接:本质上是给一个文件起一个新名称,实际是同一个文件
定义硬链接:ln filename [linkname]
41.软链接:一个符号链接指向另一个文件,就像windows中的快捷方式,软链接文件本质上不是同一个文件(注:软链接如果使用相对路径,是相对于原文件的路径,而非当前目录)
定义软连接:ln -s filename [linkname]
绝对路径:ln -s /data/dir /data/dirlink
相对路径:cd /data
ln -s ../data/dir /root/dirlink
rm -rf /data/dirlink #删除软链接本身,不会删除源目录内容
rm -rf /data/dirlink/ #删除源目录的文件,不会删除链接文件
查看链接文件指向的原文件:readlink /data/dirlink
区别 | 本质 | 跨设备 | inode | 链接数 | 文件夹 | 相对路径 | 删除源文件 | 文件类型 |
硬链接 | 同一个文件 | 不支持 | 相同 | 创建,链接数增加;删除,链接数减少 | 不支持 | 原始文件相对路径是当前目录 | 链接数减一,但链接文件访问不受影响 | 和源文件相同 |
软链接 | 不是同一个文件 | 支持 | 不同 | 创建、删除,链接数不变 | 支持 | 原始文件相对路径是相对于链接文件的相对的路径 | 链接文件无法访问 | 链接文件,和源文件无关 |
软链接示例:lrwxrwxrwx. 1 root root 5 3月 9 17:27 ruan.txt -> a.txt
42.问题一:提示空间满 on space left on device 但df能看到很多空间
df -h,查看磁盘使用情况
df -i,查看inode使用情况
inode用光了:小文件占用较多的inode,创建文件或目录创建一个inode,通常这些小文件是定时任务引起的,删除时,要特别注意
步骤一:查看大文件还被哪些进程占用:lsof|grep delete (或者grep 文件的路径)
rsyslogd
步骤二:重启对应的服务:/etc/init.d/
插入知识:
【1】修改tomcat的端口:~/tomcat/conf/server.xml
【2】tomcat内存溢出问题
内存模式:堆内存(存储类的实例、数组的引用类型,用new生成的内存)、栈内存(存储局部变量:方法、参数)、静态内存区(存储常量、类的元数据(方法、属性))
OutOfMemoryError:Java heap space异常:堆内存满了,如果不是程序逻辑的问题, 可能因为项目引用的JAVA比较多,导致堆内存溢出,JVM默认堆内存最小为物理内存的1/64,最大为1/4(例:物理内存为8G,JVM默认最大内存:128M;最小内存:2048M;可以通过调整虚拟机初始内存、最大内存可加大使用限制)
OutOfMemoryError:PermGen space异常:静态内存区满了,通常是加载的类太多导致的,JDK8以下版本需要通过修改2个参数,限制静态区域最大、最小内存范围;JDK8以后的版本不会存在这种异常问题
StackOverflowError异常:栈内存溢出,由于死循环、或无限递归导致的
一般在~/tomcat/bin/catlina.sh里边进行配置第二行:JAVA_OPTS