Linux 目录结构总结

/:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。

/bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。

/boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。

/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。

/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 
/etc/inittab、/etc/fstab、/etc/init.d、
/etc/X11、/etc/sysconfig、/etc/xinetd.d。

/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~edu 表示用户 edu 的家目录。

/lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。

/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。

/mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。

/opt:给主机额外安装软件所摆放的目录。

/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。

/root:系统管理员root的家目录。

/sbin: /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。

/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。

/srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。

/usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。

/var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。

Linux 常用命令

虚拟机中Linux系统,可视化界面的切换
ctrl+alt+F4:进入可视化界面

ctrl+alt+F7:退出可视化界面
--help 查看帮助文档
ls --help:可以查看帮助文档
man ls:可以进行用户手册的查看操作
空格键:显示手册页的下一屏
Enter键:一次滚动手册页的一行
b:回滚一屏
f:前滚一屏
q:退出man命令
h:列出所有功能键
搜索word字符串
/word:搜索word字符串
history 查看命令操作记录
history:将执行过的命令列举出来
ssh 进行对应的远程链接
ssh ip地址:进行对应的远程连接
ssh ip地址 -l 用户名
cd 路径跳转
cd :跳转路径
相对路径:根据当前目录进行跳转时的方式
绝对路径:从/目录开始的路径

.. 上级的目录
. 当前目录
- 返回上一级所在的目录
~ 返回当前用户所在的目录
ls 列出当前的文件以及文件夹
ls:列出当前的文件以及文件夹
-a:显示指定目录下所有子目录与文件,包括隐藏文件
-l:以列表方式显示文件的详细信息
-h:配合 -l 以人性化的方式显示文件大小
*:文件代表文件名中所有字符
?:代表文件名中任意一个字符
[]:[”和“]”将字符组括起来,表示可以匹配字符组中的任意一个。“-”用于表示字符范围。
\:如果要使通配符作为普通字符使用,可以在其前面加上转义字符。“?”和“*”处于方括号内时不用使用转义字符就失去通配符的作用。
more 分屏显示
> 重定向
>> 重定向(追加)
pwd 查看当前所在路径
touch 进行对应文件的创建操作
mkdir 进行对应文件夹的创建操作
rmdir 删除空的文件夹的操作
rm 不仅可以删除文件,还可以删除文件夹(是不是没有空 )
| 管道
clear 进行清屏操作
ps 进行对应操作系统中对应性能的查看操作
-a:显示终端上的所有进程,包括其他用户的进程
-u:显示进程的详细状态
-x:显示没有控制终端的进程
-w:显示加宽,以便显示更多的信息
-r:只显示正在运行的进程
-ef:查看对应的进程的pid和ppid
top 动态显示进程,性能占用列表查看操作
M:根据内存使用量来排序
P:根据CPU占有率来排序
T:根据进程运行时间的长短来排序
U:可以根据后面输入的用户名来筛选进程
K:可以根据后面输入的PID来杀死进程。
q:退出
h:获得帮助
kill [-signal] pid 终止进程 -9强制终止进程操作
date 时间查看操作,可进行对应时间的重置操作
date [MMDDhhmm[[CC]YY][.ss]] +format
cal 对应日期的查看操作 -y对应年和日志的显示
df 检测文件系统的磁盘空间占用和空余情况,可以显示所有文件系统对节点和磁盘块的使用情况
-a:显示所有文件系统的磁盘使用情况
-m:以1024字节为单位显示
-t:显示各指定文件系统的磁盘空间使用情况
-T:显示文件系统
du 用于统计目录或文件所占磁盘空间的大小,该命令的执行结果与df类似,du更侧重于磁盘的使用状况。
-a:递归显示指定目录中各文件和子目录中文件占用的数据块
-s:显示指定文件或目录占用的数据块
-b:以字节为单位显示磁盘占用情况
-l:计算所有文件大小,对硬链接文件计算多次
shutdown 关机操作
-h now 立即关机
reboot 重新启动操作系统
shutdown 操作系统操作
#shutdown –r now:重新启动操作系统,shutdown会给别的用户提示
#shutdown -h now:立刻关机,其中now相当于时间为0的状态
#shutdown -h 20:25:系统在今天的20:25 会关机
#shutdown -h +10:系统再过十分钟后自动关机
init 0 关机 6 重启
ping 查看制定ip址网络通道是否畅通
ifconfig 查看当前操作系统的ip地址
ifconfig {interface} {up|down} <== 观察与启动接口
ifconfig interface {options} <== 设置与修改接口

参数说明:
Interface,网卡接口代号,包括 eth0、eth1、ppp0 等
Options,可以接的参数,包括如下:
Up或down,启动 (up) 或关闭 (down) 该网络接口(不涉及任何参数)
mtu,可以设置不同的 MTU 数值,例如MTU 1500 (单位为 byte)
netmask,就是子屏蔽网络
broadcast,就是广播地址

注:一般来说,直接输入 ifconfig 就会列出目前已经被启动的卡,不论这个卡是否有设置 IP,都会被显示出来。而如果是输入 ifconfig eth0,则会显示出这个接口的相关数据,而不管该接口是否启动。所以,如果你想要知道某个网卡的 Hardware Address,直接输入“ifconfig "网络接口代号"”即可。至于上述代码中出现的各项数据是这样的(数据排列由上而下、由左而右)。
ifconfig ens33 192.168.12.118 进行当前系统的ip地址的修改操作
ifup 和 ifdown 进行相关网卡配置的启动和关闭,合起来用 重启配置文件网卡
ifup {interface}
ifdown {interface}

如果需要在 /etc/sysconfig/network-scripts 里面的 ifcfg-ethx 等文件的设置参数来启动的话,那就得要通过 ifdown 或 ifup 来实现了。

配置 ifcfg-eth0 网络接口配置文件
    网络接口配置文件 ifcfg-eth0 在 /etc/sysconfig/network-script 在这个目录下面,存放的是网络接口(网卡)的脚本文件(控制文件),ifcfg-eth0 是默认的第一个网络接口,如果机器中有多网络接口,那么名字就将依此类推 ifcfg-eth1、ifcfg-eth2、ifcfg-eth3 ……

配置项目说明(形式:设定项=值):
* DEVICE     接口名(设备,网卡)
* USERCTL    [yes|no](非root用户是否可以控制该设备)
* BOOTPROTO  IP 的配置方法 [none|static|bootp|dhcp](引导时不使用协议|静态分配IP|BOOTP协议|DHCP协议)
* HWADDR    MAC地址
* ONBOOT    系统启动的时候网络接口是否有效(yes/no)
* TYPE      网络类型(通常是Ethemet)
* NETMASK    网络掩码
* IPADDR     IP地址
* IPV6INIT     IPV6是否有效(yes/no)
* GATEWAY    默认网关IP地址
* BROADCAST   广播地址
* NETWORK    网络地址
sudo 提取用户权限
ln 建立连接文件(ln 源文件 链接文件)
-s:软连接标识(ln -s 源文件 链接文件)
which 查看命令指定的位置
ping ip地址 判断网络是否可以ping通
netstat –apn 查看端口和进程信息
ctrl z 快捷键:进程sleep 后端运行
ctrl c 快捷键:进程结束
jobs 查看对应的进程程序
bg 进程启动后台
fg 进程启动前台

Linux 用户权限操作

whoami 查看当前系统当前账号的用户名。可通过cat /etc/passwd查看系统用户信息。
who 查看当前所有登录系统的用户信息
-m或am:只显示运行who命令的用户名、登录终端和登录时间 I
-q或--count:只显示用户的登录账号和登录用户的数量
-u:在登录时间后显示该用户最后一次操作到当前的时间间隔
-u或--heading:显示列标题
exit 退出登录账户
如果是图形界面,退出当前终端
如果是使用ssh远程登录,退出登陆账户
如果是切换后的登陆用户,退出则返回上一个登陆账号
su 切换用户
-:切换工作目录
root:切换到root用户
普通用户:切换到普通用户
groupadd 用户群组的添加操作
groupdel 用户群组的删除操作
usermod 修改用户所在组(使用方法:usermod -g 用户组 用户名)
useradd 添加用户账号
-d:指定用户登录系统时的主目录,如果不使用该参数,系统自动在/home目录下建立与用户名同名目录为主目录
-m:自动建立目录
-g:指定组名称
useradd -d /home/abc abc -m:创建abc用户,如果/home/abc目录不存在,就自动创建这个目录,同时用户属于abc组
useradd -d /home/a a -g test -m:创建一个用户名字叫a,主目录在/home/a,如果主目录不存在,就自动创建主目录,同时用户属于test组
cat /etc/passwd:查看系统当前用户名
passwd 超级用户可以使用passwd命令为普通用户设置或修改用户口令
userdel 删除用户
-r:强制删除
sudo -s 直接切换到超级管理员
usermod 变更用户所在组 usermod -g wh
chmod  user u group g other o 进行对应的用户权限的分配操作
chmod o+w file 给文件file的其它用户增加写权限:
u:user 表示该文件的所有者
g:group 表示与该文件的所有者属于同一组( group )者,即用户组
o:other 表示其他以外的人
a:all 表示这三者皆是
+:增加权限
-:撤销权限
=:设定权限
r:read 表示可读取,对于一个目录,如果没有r权限,那么就意味着不能通过ls查看这个目录的内容。
w:write 表示可写入,对于一个目录,如果没有w权限,那么就意味着不能在目录下创建新的文件。
x:excute 表示可执行,对于一个目录,如果没有x权限,那么就意味着不能通过cd进入这个目录。

权限二进制控制  读写执行  chmod 777 file文件:
读:4
写:2
执行:1
chown 目录或文件所有者的变化操作
chgrp 目录和文件所有者所在组的变化操作

Linux 文件操作

cat 查看或者合并文件内容
tail -f log 查看指定文件,实时更新,多数用于日志查看
cp 命令的功能是将给出的文件或目录复制到另一个文件或目录中
-a:该选项通常在复制目录时使用,它保留链接、文件属性,并递归地复制目录,简单而言,保持文件原有属性。
-f:已经存在的目标文件而不提示
-i:交互式复制,在覆盖目标文件之前将给出提示要求用户确认
-r:若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名。
-v:显示拷贝进度
mv 进行文件的剪切操作(可进行文件/文件夹的重命名操作)
-f:禁止交互式操作,如有覆盖也不会给出提示
-i:确认交互方式操作,如果mv操作将导致对已存在的目标文件的覆盖,系统会询问是否重写,要求用户回答以避免误覆盖文件
-v:显示移动进度
scp 远程拷贝文件的命令
定义: 用于在linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。

使用方法:
1、从服务器上下载文件
scp username@servername:/path/filename /var/www/local_dir(本地目录)
例如scp root@192.168.0.101:/var/www/test.txt  把192.168.0.101上的/var/www/test.txt 的文件下载到/var/www/local_dir(本地目录)

2、上传本地文件到服务器
scp /path/filename username@servername:/path   
例如scp /var/www/test.PHP  root@192.168.0.101:/var/www/  把本机/var/www/目录下的test.php文件上传到192.168.0.101这台服务器上的/var/www/目录中

3、从服务器下载整个目录
scp -r username@servername:/var/www/remote_dir/(远程目录) /var/www/local_dir(本地目录)
例如:scp -r root@192.168.0.101:/var/www/test  /var/www/  

4、上传目录到服务器
scp  -r local_dir username@servername:remote_dir
例如:scp -r test  root@192.168.0.101:/var/www/   把当前目录下的test目录上传到服务器的/var/www/ 目录

Linux 文件搜索

grep grep [-选项] ‘搜索内容串’文件名
-v:显示不包含匹配文本的所有行(相当于求反)
-n:显示匹配行及行号
-i:忽略大小写
find 通常用来在特定的目录下搜索符合条件的文件,也可以用来搜索特定用户属主的文件。
find ./ -name test.sh:查找当前目录下所有名为test.sh的文件
find ./ -name '*.sh':查找当前目录下所有后缀为.sh的文件
find ./ -name "[A-Z]*":查找当前目录下所有以大写字母开头的文件
find /tmp -size 2M:查找在/tmp 目录下等于2M的文件
find /tmp -size +2M:查找在/tmp 目录下大于2M的文件
find /tmp -size -2M:查找在/tmp 目录下小于2M的文件
find ./ -size +4k -size -5M:查找当前目录下大于4k,小于5M的文件
find ./ -perm 0777:查找当前目录下权限为 777 的文件或目录
find / -name mysql -type d

Linux 归档管理

tar 归档管理,tar使用格式 tar [参数] 打包文件名 文件
-c:生成档案文件,创建打包文件
-v:列出归档解档的详细过程,显示进度
-f:指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
-t:列出档案中包含的文件
-x:解开档案文件
gzip 文件压缩解压
-d:进行gz文件的解压操作
-C:进行文件解压后指定路径的选择
文件操作案例
方法1
//先创建一个tar包,对指定的包文件进行压缩操作。得到对应的文件tar.gz
tar -cvf gzip
//将指定的tar.gz文件解压为指定的包文件tar,打开tar文件将内容释放出来
gzip -d tar -xcf

方法2
//直接将指定文件压缩为tar.gz文件
tar -zcvf (gz)
//直接将指定的tar.gz文件进行解压缩操作
tar -zxvf

方法3
//直接将指定文件压缩为bz2压缩文件
tar -jcvf (bz2)
//将指定的bz2压缩文件解压出来
tar -jxvf

方法4
//将指定文件压缩为zip格式的压缩包
zip xxx.zip *.py
//将zip格式的压缩包中的文件解压出来
unzip -d xxx xxx.zip

Linux 其他操作

linux 分区命令
parted /dev/sdb --script mklabel gpt
parted /dev/sdb --script -- mkpart primary 0 -1
(parted /dev/hda mkpart primary 123 234 从123M开始到234M,共111M)
parted /dev/sdb --script print
pvcreate /dev/sdb1
vgcreate nova-volumes /dev/sdb1