Linux的文件系统是采用层式的树状目录结构,再次结构中的最上层是根目录 / ,然后再次目录下在创建其他的目录。
在Linux世界里,一切皆文件。
1./bin:存放着最经常使用的命令。 2./sbin:存放着系统管理员使用的系统管理程序。 3./home:存放普通用户的主目录,在Linux中的每个用户都有一个自己的目录,一般改目录名是以用户的账号命名的。 4./root:该目录为系统管理员,也成为超级权限者的用户主目录。 5./boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。 6./proc:这个目录是一个虚拟目录,他是系统内存的映射,访问这个目录来获取系统信息。 7./srv:service的缩写,该目录存放一些服务启动之后需要提取的数据。 8./sys:该目录下安装了2.6内核中新出现的一个文件系统。 9./tmp:这个目录是用来存放一些临时文件的。 10./dev:类似于windows的设备管理器,把所有的硬件用文件的形式存储。 11./media:Linux系统会自动识别一些设备,例如U盘,光驱等等,当时别后,linux会把识别的设备挂载到这个目录下。 12./mnt:系统提供该目录是为了让目录临时挂载别的文件系统的,我们可以将外部的存储挂在/mnt上,然后进入该目录就可以查看里面的内容了。 13./opt:这是给主机额外安装软件所摆放的目录。如安装oracle数据库就可以放到该目录下。 14./user/local:这也是给主机安装软件的目录。一般是通过编译源码方式安装的程序。 15./var:这个目录存放着不断扩充的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。 16./selinux:安全子系统,能控制程序只能访问特定文件。总结:
linux目录中有且只有一个根目录/ linux各个目录存放好内容是规划好的,不要乱放文件 linux是以文件的形式管理我们的设备,因此linux系统,一切皆文件。如果希望安装好的远程软件可以远程访问Linux系统的话,需要一个前提,就是linux启用了sshd服务,该服务会监听22号端口。
文本编辑器
shutdown
shutdown - h now: 立即关机 shutdown -h 1: 一分钟后关机 shutdown -r now: 立即重启halt 直接使用,等价于关机
reboot 重启
syn:把内存的数据同步到磁盘
当关机或重启时,都应该先执行sync命令,吧内存数据写入硬盘,防止数据丢失。
普通用户登录,可以用su -用户名命令来切换成系统管理员身份。
输入logout命令即可注销用户
linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须先向系统管理员申请一个账号,
然后以这个账号的身份进入系统。
linux的用户至少要属于一个组。
删除用户时,一般不会删除家目录
在操作linux是,如果当前用户的权限不够,可以通过 su - 指令,切换到搞权限用户,比如root
su - root高权限切换到低权限不需要密码,反之需要。
当需要返回到原来的用户时,使用exit指令。
系统可以对有共性的多个用户进行统一管理。
增加组 groupadd 组名 删除组 groupdel 组名 增加用户直接加上组 useradd -g 用户组 用户名 修改用户组 usermod -g 用户组 用户名运行级别说明
0:关机 1:单用户【找回丢失密码】 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重启常用的运行级别是3和5,要修改默认的运行级别可以改文件/etc/inittab 的id:5:initdefault:这一行中的数字
面试题:
如何找回root密码,如果我们不小心,忘记root密码,怎么找回。
思路:进入到单用户模式,然后修改root密码。因为进入单用户模式,root用户不需要密码。
语法:
man [命令或配置文件] man ls语法:
help 命令(获得shell内置命令的帮助信息) help cd案例1:将/home/aaa.txt拷贝到/home/bbb 目录下【拷贝单个文件】
案例2:将/home/test整个目录拷贝到/home/zwj目录
细节:强制覆盖不提示的方法 \cp -r …
案例1:将/home/aaa.txt 文件重命名为 pig.txt
案例2:将/home/pig.txt 文件移动到/root目录下
案例:查看/etc/profile 文件内容,并显示行号
less指令 用来分屏查看文件内容,他的功能与more指令类似,但是比more指令更加强大,支持各种显示终端,less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
基本语法: less 要查看的文件 快捷键 : 空白键 下翻页 pageup 上翻页 /字符串 n 搜索 q 离开less这个程序echo 输出内容到控制台
基本语法: echo 【选项】 【输出内容】案例:使用echo指令输出环境变量,输出当前的环境路径。
head 用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
基本语法: head 文件 查看文件前10行内容 head -n 5 文件 查看文件前5行内容案例:查看/etc/profile的前面5行代码
ctrl +c 退出编辑模式
tail用于输出文件中末尾部分的内容,默认情况下tail指令显示文件的后10行内容。
基本语法: 1)tail 文件 查看文件后10行内容 2)tail -n 5 文件 查看文件后5行内容 3)tail -f 文件 实时追踪该文档的所有更新案例1:查看etc/profile 最后5行的代码
软连接也叫符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径。
基本语法: ln -s【源文件或者目录】 【软链接名】 给源文件创建一个软链接案例:在/home下创建一个软链接linktoroot,连接到/root目录
查看已经执行过历史命令,也可以执行历史命令
基本语法: history 查看已经执行过的历史命令 history 10 显示最近实用的10条历史命令 !178 执行编号为178的命令案例:设置系统当前时间,比如设置成2018-10-10 11:22:22
案例1:显示当前日历
案例2:显示2020年日历
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
基本语法: find 【搜索范围】 【选项】 选项说明: -name:指定按照文件名查找 -user:查找指定用户名的所有文件 -size:按照指定的文件大小查找文件案例:查找整个linux系统下大于20m的文件 +n大于,-n小于,n等于
案例:查询linux系统下所有 .txt文件
locate指令不需要遍历整个文件系统,查询速度比较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
基本语法: locate 搜索文件 ** 由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。案例:在hello.txt文件中,查找yes 所在行,并显示行号
gzip用于压缩,gunzip 用于解压
基本语法: gzip 文件 将文件压缩为.gz文件 gunzip 文件.gz 解压文件命令案例:将/home下的hello.txt压缩,在解压。
用gzip命令压缩的文件,原来的文件会消失
zip用于压缩文件,unzip用于解压的,这个在项目打包发布中很有用。
基本语法: zip 【选项】 xxx 将要压缩的内容 -r:递归压缩,压缩目录 unzip 【选项】xxx.zip 解压文件 -d:指定解压后文件存放的目录案例:将home下的所有文件进行压缩成 1.zip,并将1.zip解压到/root目录下
tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件。
基本语法: tar:【选项】 xxx.tar.gz 打包的内容 打包目录,压缩后的文件格式.tar.gz 选项说明: -c:产生.tar打包文件 -v:显示详细信息 -f:指定压缩后的文件名 -z:打包同时压缩 -x:解包.tar文件案例1:压缩多个文件,将/home目录下的 hello.txt和mydate.txt压缩成a.tar.gz
案例2:将/home的文件夹压缩成 home.tar.gz
案例3:将a.tar.gz解压到/root/下
指定解压到的那个目录,事先要存在,否则报错。
在linux中每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者,所在组,其他组的概念。
用户家目录的概念 /home/ 目录下有各个创建的用户对应的家目录,当用户登录时,会自动的进入到自己的家目录。一般为文件的创建者,谁创建了该文件,就自然成为该文件的所有者。
当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。
查看文件或目录所在组
ls -ahl修改文件所在组
chgrp 组名 文件名实例:使用root 用户创建文件 orange.txt 看看当前这个文件属于哪个组,然后将这个文件所在组修改到police组。
除了文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。
在添加用户时,可以指定该用户的组,同样的用root的管理权限可以改变某个用户所在的组。
改变用户所在组
usermod -g 组名 用户名 usermod -d 目录名 用户名 改变该用户登录的初始目录实例:创建一个组a将tom这个用户从原来的police组,修改到a组。
ls -l中显示的内容:
0-9位说明 1)第0位确定文件类型(d,-,1,c,b) 2)第一到三位确定所有者(该文件的所有者)拥有该文件的权限。 3)第4-6位确定所属组拥有该文件的权限 4)第7-9位确定其他用户拥有该文件的权限 5) 1代表的:如果是文件,表示硬链接的数,如果是目录则表示该目录的子目录个数 6)第一个root代表所属用户 7)第二个root代表所属的组 8)4479 代表文件大小,如果是目录4096 9)Nov 6 2016 文件最后修改时间 10)wqetrc 文件或目录名rwx作用到文件
r 可以读取查看 w 可以修改但是不能删除,删除一个文件的前提是对该文件的目录有写的权限,才能删除该文件。 x 可以被执行rwx作用到目录
r 可以读取查看目录内容 w 可以修改,目录内创建+删除+重命名目录 x 可以进入该目录ls -l 中显示的内容如下:
-rw-r----- 1 root root 1786 Jun 23 2017 sudo.conf案例1:
给abc文件的所有者读写执行的权限,给所在组读执行权限,给其他组读执行权限
案例2:给a.txt的文件所有者除去执行的权限,增加组写的权限
案例三:给a.txt的所有用户添加读的权限
案例:将b.txt文件的权限修改成rwxr-xr-x,使用数字的方式实现
-R 如果是目录,则让其下面的所有子文件或目录都递归生效
案例1:将/home/a.txt 文件的所有者修改为tom
案例2:将/home/kkk目录下的所有文件和目录的所有者都修改成tom
案例1:将/home/a.txt文件所在组修改成mm
案例2:将/home/kkk 目录下的所有文件和睦路的所在组都修改成kkk
任务调度:是指系统在某个时间执行的特定的命令或程序。
分类:
1.系统工作:有些重要的工作必须周而复始的执行。如病毒扫描。
2.个别用户工作:例如对mysql数据库的备份。
crontab -e 编辑定时任务 crontab -l 查询任务 crontab -r 删除当前用户所有的任务 service crond restart 重启任务调度案例:
设置任务调度文件:/etc/crontab 设置个人任务调度: 执行crontab -e 命令 接着输入任务到调度文件 如:*/1 * * * * ls -l /etc/>/tmp/to.txt 意思是说,每小时的每分钟执行ls -l /etc/>/temp/to.txt参数说明:
项目含义范围第一个*一小时当中的第几分钟0-59第二个*一天当中的第几个小时0-23第三个*一个月当中的第几天1-31第四个*一年当中的第几个月1-12第五个*一周当中的星期几0-7 特殊符号含义*代表任何时间,代表不连续的时间-代表连续的时间范围*/n代表没隔多久执行一次 */10每隔十分钟执行一次特定时间执行任务案例
时间含义4 5 22 * * *命令在22:45执行命令0 17 * * 1在每周一的17:00执行0 5 1,15 **每月一号和十五号的凌晨五点执行40 4 * * 1-5每周一到周五的4:40执行*/10 4 * * *每天的凌晨四点,每隔十分钟执行一次0 0 1,15 * 1每月的1号和15号,每周一的0点0分都会执行案例:每隔一分钟就将当前的日期信息,追加到/tmp/mydate文件中
步骤:
1 编写一个文件 /home/mytask.sh date>> /tmp/mydate 2 给 mytask.sh一个可以执行的权限 chmod 744 /home/mytask.sh 3 crontab -e 4 */1 * * * /home/mytask.sh 5 success案例2:每隔一分钟,就将当前日期和日历都追加到/home/mycal文件中
1 先编写一个文件 /home/ mytask2.sh date>> /tmp/mycal cal>> /tmp/mycal 2 给 mytask2.sh一个可以执行的权限 chmod 744 /home/mytask2.sh 3 crontab -e 4 */1 * * * * /home/mytask2.sh 5 success案例3:每天凌晨2:00将mysql数据库testdb,被分到文件mydb.bak中。
1 先编写脚本文件 /home/task.sh /usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak 2.给task.sh一个可执行权限 chmod 744 task.sh 3.crontab -e 4 0 2 * * * /home/task.sh 5 success1)linux 来说无论有几个分区,分给哪一个目录使用,他归根结底就只有一个根目录,一个独立且唯一的文件结构,linux中每个分区都是用来组成整个文件系统的一部分。
2)linux 采用了一种叫做载入的处理方法,他的整个文件系统中包含了一整套文件和目录,且将一个分区和一个目录联系起来。这是要载入的一个分区将使它的存储空间在一个目录下获得。
lsblk -f 查看系统的分区和挂载的情况 vda vda1 代表分区情况 ext4 分区类型 59d9ca7b-4f39-4c0c-9334-c56c182076b5 唯一标识分区的40位不重复字符串 / 挂载点 表示该硬盘挂载在哪个目录上实例:查询/opt目录的磁盘占用情况,深度为1
1)统计/home文件夹下文件的个数
2)统计/home文件夹下目录的个数
3)统计/home文件夹下文件的个数,包括自文件夹里面的
4)统计文件夹下目录的个数,包括子文件夹里面的
5)以树状显示目录结构
目前我们的网络配置采用的NAT。
实例: 测试当前服务器是否可以连接百度
直接修改配置文件来指定IP,并可以连接到外网,
vim /etc/sysconfig/network-scripts/ifcfg-eth0修改后,一定要 重启服务
service newwork restart reboot 重启1)在linux中,每个执行的程序都成为一个进程,每个进程都分配一个ID号。
2)每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
3)每个进程都可能以两种方式存在,前台与后台,所谓前台进程就是用户目前屏幕上可以进行操作的。
后台进程就是实际在操作,但由于屏幕上无法看到进程,通常使用后台方式执行。
4)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。
要求:以全格式显示所有的进程,查看进程的父进程。
ps -ef 全格式显示当前所有进程 -e 显示所有进程 ps -ef | grep xxx若是某个进程执行一半需要停止时,或是已经消了很大的系统资源时,此时可以考虑停止该进程。
使用kill命令来完成此项任务。
kill 【选项】 进程号 通过进程号杀死进程 killall 进程名称 通过进程名称杀死进程,也支持通配符,这在系统因负载过大二变的很慢时很有用。 -9 :表示强迫进程立即停止案例1:踢掉某个非法登录用户
kill 9729案例2:终止远程登录服务sshd,在适当时候再次重启sshd服务
kill 2049案例3:终止多个gedit编辑器 killall,通过进程名称来终止进程
killall getdit案例4:强制杀掉一个终端
kill -9 4090服务本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如mysql,
sshd,防火墙,因此我们又称为守护进程,是linux中非常重要的知识点。
通过chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭
基本语法 1)查看服务 chkconfig --list | grep xxx 2)chkconfig 服务名 --listchkconfig 重新设置服务后自启动或关闭,需要重启机器reboot才能生效
top与ps命令很相似。他们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。
基本语法: top 选项 -d 秒数 指定top命令每隔几秒更新,默认是3秒在top命令的交互模式当中可以执行的 -i 使top不显示任何闲置或者僵死进程 -p 通过指定监控进程ID来仅仅监控某个进程的状态案例:查看服务名为sshd的服务的信息
一种用于互联网下载包的打包和安装工具,他包含在某些Linux分发版中。他生成具有.rpm拓展名的文件。rpm类似于windows的setup.exe,这一文件格式名成虽然打上了RedHat的标志,但是理念是想通的。
查询已经安装的rpm列表
rpm -qa | grep firefox 查看当前linux有没有安装firefoxyum是一个shell前端软件包管理器。基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用yum的前提是可以联网。
查询yum服务器是否有需要安装的软件 yum list | grep xx 软件列表 安装指定的yum包 yum install xxx 下载安装实例:安装firefox
1.先查看yum服务器是否有firefox
2.安装
如果要在linux上进行javaee开发,我们需要安装如下软件
mysql
jdk
eclipse
tomcat
jdk默认安装路径:/usr/lib/jvm
#set java environment JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64 PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME CLASSPATH PATH