centos7 系统目录结构
/
这就是根目录。对你的电脑来说,有且只有一个根目录。所有的东西,我是说所有的东西都是从这里开始。举个例子:当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
/root
这是系统管理员(root user)的目录。对于系统来说,系统管理员就好比是上帝,它能对系统做任何事情,甚至包括删除你的文件。因此,请小心使用root帐号。
/bin
这里存放了标准的(或者说是缺省的)linux的工具,比如像“ls”、“vi”还有“more”等等。通常来说,这个目录已经包含在你的“path”系 统变量里面了。什么意思呢?就是:当你在终端里输入ls,系统就会去/bin目录下面查找是不是有ls这个程序。
/etc
这里主要存放了系统配置方面的文件。举个例子:你安装了samba这个套件,当你想要修改samba配置文件的时候,你会发现它们(配置文件)就在/etc/samba目录下。
/dev
这里主要存放与设备(包括外设)有关的文件(unix和linux系统均把设备当成文件)。想连线打印机吗?系统就是从这个目录开始工作的。另外还有一些包括磁盘驱动、USB驱动等都放在这个目录。
/home
这里主要存放你的个人数据。具体每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每个用户都有自己的用户目录,位置为:/home/用户名。当然,root用户除外。
/tmp
这是临时目录。对于某些程序来说,有些文件被用了一次两次之后,就不会再被用到,像这样的文件就放在这里。有些linux系统会定期自动对这个目录进行清理,因此,千万不要把重要的数据放在这里。
/usr
在这个目录下,你可以找到那些不适合放在/bin或/etc目录下的额外的工具。比如像游戏阿,一些打印工具拉等等。/usr目录包含了许多子目录: /usr/bin目录用于存放程序;/usr/share用于存放一些共享的数据,比如音乐文件或者图标等等;/usr/lib目录用于存放那些不能直接 运行的,但却是许多程序运行所必需的一些函数库文件。你的软件包管理器(应该是“新立得”吧)会自动帮你管理好/usr目录的。
/opt
这里主要存放那些可选的程序。你想尝试最新的firefox测试版吗?那就装到/opt目录下吧,这样,当你尝试完,想删掉firefox的时候,你就可 以直接删除它,而不影响系统其他任何设置。安装到/opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面。
/usr/local
这里主要存放那些手动安装的软件,即不是通过“新立得”或apt-get安装的软件。它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面,我想这应该是个不错的主意。
/media
Some distros use this folder to mount things like usb disks, cd or dvd drives and other filesystems.
/media
有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。
Linux常用指令
系统信息
dmidecode -t memory | head -45 | tail -23 | 查看内存槽及内存条及内存大小 |
---|---|
cat /proc/cpuinfo | 显示CPU info的信息 |
cat /proc/cpuinfo| grep “physical id” | sort| uniq| wc -l | 查看物理cpu个数 |
cat /proc/cpuinfo | grep “cpu cores”| uniq | 查看核心数量 |
grep ‘processor’ /proc/cpuinfo | sort -u | wc -l | 查看线程数 |
cat /etc/centos-release | linux查看版本当前操作系统发行信息 |
uname -a | Linux查看版本当前操作系统内核信息 |
cat /proc/interrupts | 显示中断 |
cat /proc/meminfo | 校验内存使用 |
cat /proc/version | 显示内核的版本 |
lspci -tv | 罗列 PCI 设备 |
lsusb -tv | 显示 USB 设备 |
date | 显示系统日期 |
cal 2007 | 显示2007年的日历表 |
date 041217002007.00 | 设置日期和时间 - 月日时分年.秒 |
关机 (系统的关机、重启以及登出 )
shutdown -h now | 关闭系统 |
---|---|
init 0 | 关闭系统 |
telinit 0 | 关闭系统 |
shutdown -h hours:minutes & | 按预定时间关闭系统 |
shutdown -c | 取消按预定时间关闭系统 |
shutdown -r now | 重启 |
reboot | 重启 |
logout | 注销 |
文件和目录
cd / | 返回主目录 |
---|---|
cd /home | 进入 ‘/ home’ 目录’ |
cd .. | 返回上一级目录 |
cd ../.. | 返回上两级目录 |
cd | 进入个人的主目录 |
cd ~user1 | 进入个人的主目录 |
cd - | 返回上次所在的目录 |
pwd | 显示工作路径 |
ls | 查看目录中的文件 |
ls -l | 显示文件和目录的详细资料 |
ls -F | 查看目录中的文件 |
ls -a | 显示隐藏文件 |
ls [0-9] | 显示包含数字的文件名和目录名 |
mkdir dir1 | 创建一个叫做 ‘dir1’ 的目录’ 注意:该命令无法创建目录树 |
mkdir dir1 dir2 | 同时创建两个目录 |
mkdir -p /tmp/dir1/dir2 | 创建一个目录树 |
rm -f file1 | 删除一个叫做 ‘file1’ 的文件’ |
rmdir dir1 | 删除一个叫做 ‘dir1’ 的目录’ |
rm -rf dir1 | 删除一个叫做 ‘dir1’ 的目录并同时删除其内容 |
rm -rf dir1 dir2 | 同时删除两个目录及它们的内容 |
mv dir1 new_dir | 重命名/移动 一个目录 dir1:移动的文件 new_dir:移动的目录 |
cp file1 file2 | 复制一个文件 dir1:移动的文件 new_dir:移动的目录 |
cp dir/* . | 复制一个目录下的所有文件到当前工作目录 |
cp -a /tmp/dir1 | 复制一个目录到当前工作目录 |
cp -a dir1 dir2 | 复制一个目录 |
ln -s file1 lnk1 | 创建一个指向文件或目录的软链接 |
ln file1 lnk1 | 创建一个指向文件或目录的物理链接 |
文件搜索
find / -name file | 从 ‘/‘ 开始进入根文件系统搜索文件和目录 |
---|---|
find / -user user | 搜索属于用户 ‘user’ 的文件和目录 |
find /home/user -name \*.bin | 在目录 ‘/ home/user’ 中搜索带有’.bin’ 结尾的文件 |
find / -name |
name | 在/目录查找开头为name的文件 | | find / -name name | 在/目录查找结尾为name的文件 | | find / -name name | 在/目录查找包含name字符串的文件 | | find / -name “nginx“ -exec rm -rf {} \; | 搜索有关nginx的文件并删除 |
查看文件内容
cat file1 | 从第一个字节开始正向查看文件的内容 |
---|---|
tac file1 | 从最后一行开始反向查看一个文件的内容 |
more file1 | 查看一个长文件的内容 |
less file1 | 类似于 ‘more’ 命令,但是它允许在文件中和正向操作一样的反向操作 |
head -20 file1 | 查看一个文件的前20行 |
tail -20 file1 | 查看一个文件的最后20行 |
tail -f /var/log/messages | 实时查看被添加到一个文件中的内容 |
关于服务
kill -9 端口号 | 强制杀掉该进程 |
---|---|
ps -ef|grep name | 查看该程序的进程 |
lsof -i:8000 | 查看8000端口的进程 |
ps -ef|grep mysql|wc -l | 统计查询出的mysql进程的行数 |
free |
-m | 查看LINUX内存剩余容量 | | top | 也可查看进程信息,而且是动态显示 | | whoami | 查看当前登陆用户 | | chkconfig —list | 查看系统服务启动 | | chkconfig iptables on | 开机启动该服务 | | chkconfig iptables off | 开机不启动该服务 | | service iptables start | 启动该服务 | | service iptables restart | 重启启该服务 |
用户/用户组
groupadd abcd | 添加组 |
---|---|
cat /etc/group | 查看当前系统所有的组 |
chgrp abcd b.txt | 将b.txt归属到abcd组 |
useradd abcd -g abcd | 创建一个用户归属于abcd组 |
passwd abcd | 输入用户abcd的登录密码 |
useradd test | 创建一个test用户 |
cat /etc/passwd | 查看系统所有用户 |
userdel abcd | 删除abcd用户 |
su abcd | 切换用户 |
yum install firewalld | 在线安全firewalld |
service firewalld status | 查看防火墙状态 |
service firewalld stop | 关闭防火墙 |
权限管理 chmod
| chmod -R 777 | 给文件夹下所有的文件赋权限,递归处理 | | —- | —- |
查看磁盘空间大小
du -sh 文件 | 查看文件大小 |
---|---|
du -sh * |
查看该目录所有文件大小 |
df -h | 以人们较易阅读的GB,MB,KB等格式自行显示 |
vim编辑器指令
vim test.txt | 编辑test这个文件 |
---|---|
u | 回退一步 |
ctrl + r | 前进一步 |
i, o, a | 进去编辑模式 |
G | 移动到这个档案的最后一行(常用) |
nG | n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行 |
gg | 移动到这个档案的第一行,相当于 1G 啊! |
n |
n 为数字。光标向下移动 n 行(常用) |
/word | 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用) |
?word | 向光标之上寻找一个字符串名称为 word 的字符串。 |
关于其他常用命令
测试端口的通透性
此方法可用于检测是否因为防火墙导致外部不能访问
wget ip:端口
关于在Linux系统运行jar包
运行jar包:
**
要运行java的项目需要先将项目打包成war包或者jar包,打包成war包需要将war包部署到tomcat服务器上才能运行。而打包成jar包可以直接使用java命令执行。
在linux系统中运行jar包主要有以下几种方式。
1、java -jar XXX.jar
这是最基本的jar包执行方式,但是当我们用ctrl+c中断或者关闭窗口时,程序也会中断执行。
2、java -jar XXX.jar &
&代表在后台运行,使用ctrl+c不会中断程序的运行,但是关闭窗口会中断程序的运行。
3、nohup java -jar XXX.jar &
使用这种方式运行的程序日志会输出到当前目录下的nohup.out文件,使用ctrl+c中断或者关闭窗口都不会中断程序的执行。
4、nohup java -jar XXX.jar >temp.out &
>temp.out的意思是将日志输出重定向到temp.out文件,使用ctrl+c中断或者关闭窗口都不会中断程序的执行。
停止运行jar包:
ps -ef | grep xxx.jar 获取pid
kill -9 pid
Maven不打包test环境指令
vmstat -t 5
查看Linux系统机器的性能,5代表5s打印一次
vmstat相关参数:
r :表示运行队列(就是说多少个进程真的分配到CPU),一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。
b: 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。
swpd:虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
free: 空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。
buff:Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M
cache:cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)
si:每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。
so:每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
bi:块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒
bo:块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
in:每秒CPU的中断次数,包括时间中断
cs:每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
us:用户CPU时间
sy:系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
id:空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
wt:等待IO CPU时间。
docker常用命令
docker ps | 查看正在运行容器 |
---|---|
docker ps -a | 查看所有容器 |
docker start redis | 启动一个或多个已经被停止的容器 |
docker restart redis | 重启容器 |
docker kill redis | 杀掉一个运行中的容器 |
docker top redis | 列出redis容器中运行进程 |
docker inspect redis | 获取镜像redis的元信息 |
docker images | 列出本地镜像 |
docker images -q | docker images -q |
docker rmi redis | 删除镜像 |
docker rmi -f redis | 强制删除(针对基于镜像有运行的容器进程) |
docker rmi -f redis tomcat nginx | 多个镜像删除,不同的镜像以空格间隔 |
userdel abcd | 删除abcd用户 |
su abcd | 切换用户 |
yum install firewalld | 在线安全firewalld |
service firewalld status | 查看防火墙状态 |
service firewalld stop | 关闭防火墙 |
容器进入和推出
docker run -it centos /bin/bash | 查看正在运行容器 |
---|---|
exit | 推出容器 |
docker exec -ti 容器id /bin/bash | 进入容器 |