平时我们说的Linux指的是Linux内核,而不同厂商在这个内核的基础上二次开发,完善了软件,程序等,出现了不同的发行版,也就是我们使用的Linux。主要有centos,Ubuntu等
windows和vm以及centos的关系centos不能直接在windows上操作,因此要先安装一个虚拟机,相当于另一台机器,然后再vm上安装centos
环境搭建先安装虚拟机软件,Vmware
基础知识 文件目录结构Linux的文件系统采用层级式的树状目录结构,最上层是根目录(/),在此目录下再创建其他目录
“在Linux世界里,一切皆文件”
Linux目录中有且只有一个根目录各个目录存放什么内容是规划好的,要大致知道Linux以文件的形式管理设备 远程操作Linux
通常Linux服务器是不在我们身边的,所以我们需要远程操作服务器
远程登陆选择Xshell工具实现,需要Linux启用sshd服务,监听22端口,在XShell中通过Linux的ip地址新建一个连接,然后用Linux服务器上的用户名和密码登陆
XFtp这个工具可以用于在本地和远程服务器之间上传和下载文件
用户组:用分组的方式管理用户,一个用户可以属于多个组,至少属于一个组。类似于角色,系统可以对有共性的多个用户进行统一的管理
groupadd 组名 新建组
groupdel 组名 删除组
useradd -g 组名 用户名 增加用户时直接加上组
usermod -g 组名 用户名 修改用户的组
用户家目录:在/home/目录下有各个创建的用户对应的家目录,当用户登录时,会自动进入到自己的家目录
Linux是一个多用户多任务的操作系统,任何一个要使用系统资源的用户都必须先向系统管理员申请一个账号然后以这个账号进入系统
useradd [选项] 用户名 创建成功后会自动创建和用户同名的家目录
useradd -d 指定目录 用户名 创建用户同时创建指定家目录(不要事先创建这个要指定的目录)
passwd 用户名 更改/修改指定用户的密码
userdel 用户名 删除用户,但会保留家目录
userdel -r 用户名 删除用户同时删除家目录
id 用户名 查询指定用户信息,当用户不存在时返回无此用户
切换用户在操作Linux时,如果当前用户权限不够,可以通过指令切换到高权限用户如root
su - 要切换的用户名 从权限高的用户切换到权限低的用户不需要密码 反之需要;可使用exit指令返回到原来用户
whoami/who am I 查看当前用户
/etc/passwd:用户的配置文件,记录用户的各种信息,每行的含义:
用户名:口令:用户标识号:组标识号(即id):注释性描述:主目录:登录shell
/etc/shadow:口令(密码)的配置文件,每行的含义:
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group:组的配置文件,记录Linux包含的组的信息,每行的含义:
组名:口令:组标识号:组内用户列表
cal 可以获取当前日历信息
$path 得到的是环境变量路径
reboot 重启系统
0:关机
1:单用户
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用,保留给用户
5:图形界面
6:系统重启
/etc/inittab:运行级别配置文件,可以查看该文件并修改运行级别
init [0123456] 切换不同的运行级别
如何找回root密码:进入单用户模式修改密码,因为进入单用户模式,root不需要密码就可以登陆
man [命令或配置文件] 获得帮助信息
help 命令 获得shell内置命令的帮助信息
pwd 显示当前工作目录的绝对路径
ls [选项] [目录或是文件] 查看当前目录的所有内容信息,常用选项:-a,显示当前目录所有的文件和目录,包括隐藏的;-l,以列表的方式显示信息;-lh可以使呈现出来的文件的大小符合我们的常规印象;-al/-la,列表方式显示包括隐藏文件目录在内的所有文件和目录
cd [参数] 表示change directory,切换到指定目录。常用参数:绝对路径(从根目录开始定位,/…/…)和相对路径(从当前工作目录开始定位,…/…/…,…/表示回到上一级)
cd~/cd 回到自己的家目录
cd.. 回到当前目录的上一级目录
mkdir [选项] 目录名 创建新目录,选项-p可以创建多级目录
rmdir [选项] 要删除的空目录 删除空目录,如果目录下有内容是无法删除的
rm -rf 要删除的目录 删除非空目录
touch 文件名1 文件名2 .... 新建文件
cp [选项] source dest 拷贝文件到指定目录(相对路径),选项-r可以递归复制整个文件夹。在复制时可能目标文件夹中与源文件夹要复制的文件存在重复,使用cp可以强制覆盖而不给出提示
–示例:cp a.txt b/可以把当前目录下的a.txt文件复制到当前目录下的b/目录下
rm [选项] 要删除的文件或目录 移除文件或目录,常用选项:-r,递归删除整个文件夹;-f,强制删除,不提示。出现提示说是否删除,输入y即可确认删除
mv oldFileName newFileName 重命名文件(特殊的移动,相当于把当前目录下的某个文件移动到当前目录,然后系统发现当前目录已有这个文件,所以就判断为重命名)
mv /temp/movefile /targetFolder 移动文件
cat [选项] 要查看的文件 查看文件内容,常用选项:-n,显示行号。只能浏览文件,不能修改。为了浏览方便,一般会加上管道命令| more进行分页查看
more 要查看的文件 该指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式分页显示文本文件的内容,指令中内置了若干快捷键:空格键----代表向下翻一页;enter键----代表向下翻一行;q代表立刻离开more不再显示该文件内容;ctrl+F----向下滚动一屏;ctrl+B----返回上一屏;=----输出当前行的行号;:f----输出文件名和当前行的行号
less 要查看的文件 用来分屏查看文件内容,与more类似,但它支持各种显示终端,less在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率,快捷键:空格键----向下翻动一页;pagedown----向下翻动一页;pageup:向上翻动一页;/字串----向上查找字串;?字串----向下查找子串;q----离开less
> 输出重定向(会将文件原来的内容覆盖),>> 追加
ls -l > 文件 列表的内容写入文件中,覆盖文件原有内容,如果文件不存在就先创建该文件
ls -l 目录 > 文件 将指定目录列表展示的内容写入文件中
ls -al >> 文件 列表的内容追加到文件的末尾
cat 文件1 > 文件2 将文件1的内容覆盖到文件2
echo "内容" >> 文件 将内容追加到文件中
echo [选项] [输出内容] 输出内容到控制台
head 指令用于显示文件的开头部分内容,默认情况下显示文件的前十行内容
head 文件 查看文件头十行内容
head -n i 文件 查看文件头i行内容,i可以是任意行数
tail 用于输出文件中尾部的内容,默认情况下显示文件的后10行内容
tail 文件 查看文件后10行内容
tail -n i 文件 查看文件后i行内容
tail -f 文件 实时追踪该文档的所有更新
软链接也叫符号链接,类似于快捷方式,主要存放了链接其他文件的路径
ln -s [ 源文件或目录] [软链接名] 给原文件或目录创建一个软链接,当我们使用pwd命令查看目录时,任仍然看到的是软链接所在目录。使用cd跳转到软链接所指目录时后面要加上“/”,使用rm -rf删除软链接时不用加“/”(否则提示“设备或资源忙”)
history 查看已经执行过的历史命令(每一条指令都会携带序号),也可以执行历史命令
history i 显示最近使用过的i个命令
! i 执行序号为i的指令
date 显示当前时间
date+%Y 显示当前年份
date+%m 显示当前月份
date+%d 显示当前是哪一天
date“+%Y-%m-%d%H:%M:%S” 显示年月日时分秒,显示年月日也行,注意"-",“:”只是在显示出来的时候作为分隔符,可以随意更换;"+"以及对应的字母就不能随意更换
date -s 字符串时间 设置系统日期
cal [选项] 不加选项,显示本月日历;选项写上年份,显示指定年份日历
find [搜索范围] [选项] 从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端,常用选项:-name 查询方式,按照指定的文件名查找模式查找文件,可以使用通配符;-user 用户名,查找属于指定用户名所有文件;-size 文件大小,按照指定的文件大小查找文件(+n,表示大于n;-n,表示小于n;n,表示等于n;兆必须用大写M);查找目标太多一直查不结束,可以用ctrl+c终止查找
locate 搜索文件 locate指令可以快速定位文件路径,利用事先建立的系统中的所有文件名称以及路径的locate数据库实现快速定位给定的文件。无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确性,管理员必须定期更新locate时刻。由于locate指令基于数据库进行查询,所以第一次运行前必须使用updatedb指令创建locate数据库
grep [选项] 查找内容 源文件 从源文件中查找指定内容。可以实现过滤查找,使用管道符"|"表示将前一个命令的处理结果传递给后面的命令处理,即使用cat等命令获取内容后使用管道符交给grep进行过滤。选项:-n,显示匹配行及行号;-i,忽略字母大小写(选项可以配合使用)
gzip 文件.. 压缩文件,只能把文件压缩为*.gz文件,压缩完不保留原文件
gunzip 文件.gz ... 解压缩文件
zip [选项] xxx.zip 将要压缩的文件或目录,压缩内容,结果得到xxx.zip,选项:-r,递归压缩,即压缩目录
unzip [选项] xxx.zip 解压指定zip文件,选项:-d 目录,指定解压后文件的存放目录
tar [选项] xxx.tar.gz 打包的文件或目录(可用空格隔开多个文件) 打包内容,压缩后的文件是.tar.gz文件。选项:-c,产生.tar打包文件;-v,显示详细信息;-f,指定压缩后的文件名;-z,打包同时压缩;-x,解包.tar文件。通常打包用-zcvf,解压用-zxvf
tar -zxvf xxx.tar.gzz -C 指定目录 解压到指定目录,指定的目录必须存在,否则报错
ps [选项]可以查看系统当前进程信息。选项:-e,显示系统内所有进程信息;-l,使用长(long)格式显示进程信息;-f,使用完整的格式显示进程信息
组管理和权限管理 组管理在Linux中的每一个用户必须属于一个组,不能独立于组外。每个文件有所有者,所在组,其它组的概念。所有者一般为文件的创建者,谁创建了该文件就自然成为该文件的所有者;当某个用户创建了一个文件后,用户所在的组就是这个文件的所在组;除去文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
ls -ahl 查看文件的所有者及所在组
chown 用户名 文件名 修改文件所有者
groupadd 组名 创建组
chgrp 组名 文件名 修改文件所在的组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户的所在组
usermod -g 组名 用户名 改变用户所在组
usermod -d 目录名 用户名 改变该用户登陆的初始目录
ls -l 指令执行后显示的文件/目录信息的最前面一串字符串是文件的权限信息,其中,第0位确定文件类型(d,表示是目录;-,表示是普通文件;l,表示是软链接;c,表示是字符设备如键盘,鼠标等;b表示是块文件如硬盘);第1-3位确定所有者对该文件拥有的权限;第4-6位确定所属组(同用户组的,与拥有者同组的用户)对该文件拥有的权限;第7-9位确定其他用户(不与拥有者同组的其他用户)对该文件拥有的权限。字符串后面的一个数字,如果对象是文件,就表示硬链接的数,一般是1;如果是目录,就表示该目录下子目录的个数(本目录(.)以及上一级目录(…)为隐藏目录)。数字后面是所有者以及所在组。所在组后面的数字,如果对象是文件,那数字就是文件的大小(字节);如果是目录,就是4096(字节)。数字后面显示的时间是文件的最后修改时间
rwx权限作用到文件:r代表可读:可以读取,查看;
w代表可写:可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件;x代表可执行:可以被执行
作用到目录:r代表可读:可以读取,ls查看目录内容;w代表可写:可以修改,目录内创建,删除,重命名目录;x代表可执行:可以进入该目录
可以用数字来表示:r=4,w=2,x=1,则rwx=7
通过chmod指令可以修改文件或目录的权限
第一种方式(使用+,-,=;u:所有者,g:所有组,o:其他人,a:所有人(u,g,o的总和))
chmod u = rwx,g=rx,o=x 文件目录名
chmod o+w 文件目录名
chmod a-x 文件目录名第二种方式(使用数字,r=4 w=2 x=1 rwx=7)
chmod u=rwx,g=rx,o=x 文件目录名 相当于 chmod 751 文件目录名
chmod [选项] newowner file 改变文件的所有者
chmod [选项] newowner:newgroup file 改变所有者和所有组
-R,如果是目录则使其下所有子文件或目录递归生效
chgrp newgroup file 改变文件的所有组,同样可以使用-R选项
用户权限被修改后要重新登录才能生效
任务调度
任务调度是指系统在某个时间执行的特定的命令或程序
分类:1.系统工作:有些工作必须周而复始地执行,比如病毒扫描
2.个别用户工作:个别用户可能希望某些程序的执行,比如MySQL数据库的备份
crontab [选项] 选项:-e,编辑crontab定时任务;-l,查询crontab任务;-r,删除当前用户所有的crontab任务
如执行完-crontab -e命令后,输入任务:*/1**** ls -l /etc/ > /tmp/to.txt,表示每小时每分钟执行ls -l /etc/ > /tmp/to.txt指令。参数说明:
| 参数 | 含义 | 取值 |
|---|---|---|
| 第一个* | 一小时当中的第几分钟 | 0-59 |
| 第二个* | 一天当中的第几小时 | 0-23 |
| 第三个* | 一个月当中的第几天 | 1-31 |
| 第四个* | 一年当中的第几月 | 1-12 |
| 第五个* | 一周当中的星期几 | 0-7(0和7都代表星期日) |
| * | 代表任何时间 | |
| , | 代表不连续的时间,比如0 8,12,16***就代表每天的8点0分,12点0分,16点0分都执行一次命令 | |
| - | 代表连续的时间范围,比如0 5**1-6就代表在周一到周六的5点0分执行命令 | |
| */n | 代表没隔多久执行一次,比如*/10****就代表每隔十分钟就执行一次命令 |
使用shell脚本进行任务调度:
1.先编写一个.sh脚本文件,在其中输入要执行的任务
2.要设置对这个文件具有可执行(x)权限才能执行这个脚本
3.crontab -e 后设置任务
service crond restart 重启任务调度
mbr分区
1.最多支持四个主分区
2.系统只能安装在主分区
3.扩展分区要占一个主分区
4.mbr最大只支持2TB,但拥有最好的兼容性gtp分区
1.支持无限多个主分区(但操作系统可能限制,比如windows下最多只能128个分区)
2.最大支持18EB的大容量
3.Windows7 64位以后支持gtp
Linux分区
1.Linux无论有几个分区,分给哪一目录使用,归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分
2.Linux采用了一种叫“载入”的方法,他的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得,将某个分区挂载到一个文件上
Linux硬盘分为IDE硬盘和SCSI硬盘。目前基本上是SCSI硬盘,标识为sdx~,sd表示分区所在设备的类型是SCSI硬盘,x是盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),~代表分区,前四个分区用1到4表示,他们是主分区或扩展分区,从5开始就是逻辑分区
lsblk或lsblk -f 查看所有设备挂载情况
1.为虚拟机增加硬盘
2.硬盘分区fdisk
3.格式化 mkfs -t ext4 要格式化的硬盘分区
4.挂载:先创建要分区要挂载的目标目录,然后挂载:mount 要挂载的分区 要挂载的目录。这样实现的挂载,在系统重新启动后会失效,需要重新挂载
解除挂载:umount 硬盘分区的路径或umount 挂载目录
5.设置自动挂载(永久挂载,重启系统后仍然可以挂载到目标目录):vim /etc/fstab,新增一行分区的路径 挂载的目录 ext4 defaults 0 0,保存,然后执行mount -a即可
df -h/df -l/df -lh 查询系统整体磁盘使用情况
du -h 目录 查询指定目录的磁盘占用情况,选项:-s,指定目录占用大小汇总;-h,带计量单位;-a,含文件;-c,列出明细的同时增加汇总值;–max-depth=n,指定子目录深度为n
wc -l 统计文件个数
ls -l 指定目录 | grep "^-" | wc -l 统计指定文件夹下文件的个数。"^-“表示以-开头;如果是统计目录个数,改为”%d"即可;ls的选项加上-R就可以递归统计包括子目录下的文件/目录个数
tree 指定目录 用树状结构展示指定目录的结构,如果不指定目录就默认是当前目录(初次使用要用yum install tree命令安装插件)


![[操作系统]-linux [操作系统]-linux](http://www.mshxw.com/aiimages/31/729412.png)
