一.Linux目录
1.目录简介
/根目录
/dev 管理设备
/etc 配置文件
/home家目录
/lib动态库
/usr 已经安装的软件
/opt 未安装的软件放置目录
/sbin 高权限指令
/selinux 安全
/tmp 临时文件
/media 识别外部设备,U盘,光驱
/var 日志文件
二.Linux实操
1.远程登录Linux系统
1)远程登录的软件
xshell5
2)远程上传和下载软件
xftp5(链接时选用SFTP协议,才能使用22端口)
2.vi和vim编辑器
vim可以认为是vi的增强版
1)vi和vim的三种常见模式
正常模式
再此模式下,可以使用快捷键,上下左右移动光标,复制和删除等。
插入模式/编辑模式
输入i即可进入此模式
命令行模式
存盘,退出vim等操作
快速入门案例
开发一个hello.java程序
public class Hello
{public static void main(String []args) { System.out.prntln('Hello World!'); }
}
- 快捷键的使用
1)复制当前行 yy,复制当前行的下5行,5yy,并粘贴 p
2)删除当前行是dd,删除当前行的下5行是 5dd
3)在文件中查找某个单词,命令行下 /关键词 回车 就能查找
4)设置文件的行号 命令行下 输入 [:set nu],取消行号 [:set nonu]
5)编辑/etc/profile文件,到达文件的最末行[G]和最首行[gg],此操作是在正常模式下
6)撤销动作,输入hello 然后撤销[正常模式下:u]
7)编辑一个文件/etc/profile,并将光标移动到第20行[shift+g]
①显示行号[:set nu]
②输入20这个数[正常模式]
③输入shift+g[正常模式]
3.开关机和重启命令
- 基本介绍
shutdown
shutdown -h now 立即关机
shutdown -h 1 1分钟后关机
shutdown -r now 立即重启
halt 直接使用,等价于关机
reboot 重启系统
sync 把内存的数据保存到磁盘上(关机或重启之前使用)
用户的登录和注销
logout—–退出远程登录
4.用户管理
基本介绍
添加用户(创建用户时,会自动为其创建组并且创建与其同名的家目录)
useradd 【选项】用户名
[root@localhost ~]# useradd xiaoming
useradd -d 指定目录(未存在目录) 用户名 ——>在指定目录创建用户
为用户创建密码或者修改密码
passwd 用户名
[root@localhost ~]# passwd xiaoming
删除用户
userdel 用户名
①删除用户,保留家目录
[root@localhost home]# userdel xiaoming
②删除用户以及用户主目录
[root@localhost home]# userdel -r xm
删除用户时,一般不会删除家目录
查询用户信息
id 用户名
[root@localhost home]# id zzy
uid=500(zzy) gid=500(zzy) 组=500(zzy)用户id号 所在组id号 组名称
切换用户
su - 非root用户名
[root@localhost home]# su - zzy
root切换到权限低的用户不需要密码
exit 可以回到原用户
查看当前用户
whoami
[root@localhost home]# whoami
root用户组
介绍:类似于角色,系统可以对有共性的多个用户进行统一的管理
增加组:groupadd 组名
演示:[root@localhost /]# groupadd wd
删除组:groupdel 组名
演示:[root@localhost /]# groupdel wd
增加用户时直接加上组:useradd -g 用户组 用户名
案例:增加一个zwj用户,将其指定到wudang组
[root@localhost /]# groupadd wudang
[root@localhost /]# useradd -g wudang zwj
[root@localhost /]# useradd -g wudang zwj
[root@localhost /]# id zwj
uid=501(zwj) gid=501(wudang) 组=501(wudang)修改用户组:usermod -g 用户组 用户名
案例:创建一个shaolin组,修改zwf所在组
[root@localhost /]# groupadd shaolin
[root@localhost /]# usermod -g shaolin zwj
[root@localhost /]# id zwj
uid=501(zwj) gid=502(shaolin) 组=502(shaolin)用户和组的配置文件
/etc/passwd 用户配置文件 vim /etc/passwd
zzy用户名:x加密后的密码:500用户id:500组id:/home/zzy 家目录 :shell
/etc/ shadow 口令配置文件
vim /etc/shadow
/etc/group 组配置文件
vim /etc/group
5.实用指令
指定运行级别
0:关机
1:单用户(找回丢失密码)
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图像界面
6:系统重启
[root@localhost /]# vim /etc/inittab
常用的运行级别是3和5,要修改默认级别可改配置文件/etc/inittab的id:5:initdefault:这一行的数字
切换到指定运行级别的指令:
命令:init [0123456]
案例:运用init切换用户级别,5-3,然后关机
init 5
init 3
init 0
找回丢失的root密码
①进入到单用户模式(因为进入到单用户,root不需要密码就能登录)
②修改密码
开机->引导是输入e ->看到一个界面a输入e->看到一个新的界面b,选中第二行(编辑内核) 输入e->在此行的最后输入 1 ,回车 ->回到b界面,输入b,此时就会进入单用户模式。然后输入passwd root修改密码即可
帮助指令
对某个指令不熟悉时,通过帮助指令来了解使用方法
man [命令或配置文件]
案例:
查看ls的帮助
man ls
help 命令
help cd
文件目录类指令
pwd
显示当前工作目录的绝对路径
[root@localhost ~]# pwd
/rootls指令
ls [选项] [目录或文件]
-a:显示当前目录所有文件信息(包括隐藏文件)
-l:以列表显示文件的详细信息
cd命令
cd [参数]
cd ~(可省略)回到家目录
cd .. 回到当前目录的上一级目录
理解:相对路径和绝对路径
mkdir指令
mkdir [选项] [创建的目录]
[root@localhost ~]# mkdir /home/dog
-p:创建多级目录
[root@localhost home]# mkdir -p /home/animal/tiger
rmdir删除空目录
rmdir [选项] 要删除的空目录
[root@localhost home]# rmdir /home/dog
rm -rf 指令
[root@localhost home]# rmdir animal
rmdir: 删除 “animal” 失败: 目录非空
[root@localhost home]# rm -rf animaltouch指令
touch 文件名称 —创建一个空文件
touch hello.txt
创建多个文件
touch a1.txt a2.txt
cp指令
cp [选项] source(源文件) dest(目标路径)
-r:递归复制整个文件夹
拷贝单个文件
[root@localhost home]# cp aaa.txt bbb/
拷贝整个目录[root@localhost home]# cp -r bbb ccc
强制覆盖不提示的方法:\cp
rm指令
rm [选项] 要删除的文件或者目录
-r:递归删除整个文件
-f:强制删除不提示
[root@localhost home]# rm aaa.txt
rm:是否删除普通空文件 “aaa.txt”?y[root@localhost home]# rm -rf bbb
mv命令
mv 移动文件与目录或者重命名
mv oldFileName newFileName —–重命名(同一目录)
[root@localhost home]# mv hello.txt world.txt
mv /temp/aa /targetfolder———移动
[root@localhost home]# mv world.txt ./zzy/
移动的同时重命名
[root@localhost zzy]# mv world.txt /home/hello.txt
cat指令
cat [选项] 要查看的文件
只能浏览文件信息,不能修改
-n:显示行号
cat -n hello.txt
分页显示(通过管道符)
[root@localhost home]# cat hello.txt | more
more指令
more 要查看的文件
空格:代表下一页
Enter:下一行
q:退出
Ctrl+f:向下滚动一屏
Ctrl+b:向上滚动一屏
=:当前行号
:f 输出文件名和当前行号
less指令
less 要查看的文件
是用于较大文件,分屏查看文件内容,分步加载文件内容。
(>)和>>指令
输出重定向>(覆盖原来内容)
追加>>(追加到文件尾部)
ls -l >a.txt ——将列表的内容写入a.txt (覆盖写)
ls -al >>b.txt ——将列表的内容追加写到b.txt
cat a.txt >b.txt——a.txt的内容覆盖写到b.txt
echo “内容” >c.txt——-覆盖写到c.txt
echo “内容”>>c.txt ——–追加写到c.txt
cal
cal 查看日历信息
echo指令
作用:输出内容到控制台
echo [选项] [输出内容]
使用echo输出环境变量的路径
[root@localhost ~]# echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin使用echo输出hello world
[root@localhost ~]# echo “hello world”
hello worldhead指令
head 文件名 [查看文件的前10行内容]
head -n 5 [查看文件的前5行内容]
[root@localhost home]# head -n 5 hello.txt
应用实例:查看/etc/profile的前5行代码
[root@localhost home]# head -n 5 /etc/profile
tail指令
显示文件尾部内容,用法类似head指令
tail 文件名
tail -n 文件名
tail -f 文件名 [追踪该文件的所有更新]
案例:实时监控hello.txt
tail -f hello.txt
ln软链接指令
类似于windows
的快捷方式
ln -s [源文件或目录] [软连接名]
案例:创建一个链接到root的快捷方式
[root@localhost home]# ln -s /root linktoroot [root@localhost home]# cd linktoroot
当使用pwd查看当前目录时,仍然在当前目录
删除软链接
[root@localhost home]# rm -rf linktoroot
—-(注意不要带/)
history指令
查看已经执行过的指令
history
显示所有历史指令
[root@localhost home]# history
显示最近的10个指令
[root@localhost home]# history 10
执行历史编号为5的指令
[root@localhost home]# !298
时间日期类指令
date指令
基本语法:
date 显示当前时间
date +%Y 显示当前年份
date +% m 显示当前月份
date +%d 显示当前是哪一天
date “+%Y-%m-%d-%H-%M-%S” 显示年月日时分秒
[root@localhost home]# date 2019年 10月 07日 星期一 21:02:54 CST [root@localhost home]# date +%Y 2019 [root@localhost home]# date "+%Y-%m-%d-%H-%M-%S" 2019-10-07-21-03-49
设置系统时间
date -s "2018-10-10 11:20:20"
cal查看日历
cal [选项] 显示本月历
[root@localhost home]# cal
显示2020年的整年日历
[root@localhost home]# cal 2020
搜索查找类
find指令
find [搜索目录] [选项]
-name 指定文件名查找
-user 指定用户名所有文件
-size 指定文件的大小(+20M查找>20M的文件)[+n 大于 -n 小于 n 等于] [或者20K ]
[root@localhost home]# find /home -name hello.txt /home/hello.txt [root@localhost home]# find /home -user zzy
查找以txt结尾的文件(尽量不在本目录使用)
[root@localhost /]# find / -name *.txt
locate指令
快速定位文件路径(基于locate的数据库实现快速定位)
locate 搜索文件
注意:使用locate之前,必须先使用updatedb指令创建locate数据库
[root@localhost /]# updatedb [root@localhost /]# locate hello.txt /home/hello.txt
grep指令和管道符号|
grep过滤查找
管道符|:表示将前一个命令的处理结果输出传递给后面的命令处理。
grep [选项] 查找内容 源文件
-n 显示匹配行及行号
-i 忽略字母大小写
案例:在hello.txt查找hello所在行,并显示行号
[root@localhost home]# grep -n hello /home hello.txt hello.txt:66:hello [root@localhost home]# cat hello.txt | grep -n hello 66:hello
压缩和解压缩
gzip和gunzip指令
gzip 文件 [压缩文件]
gunzip 文件.gz [解压缩文件]
[root@localhost home]# gzip hello.txt [root@localhost home]# ls a.txt hello.txt.gz mycal zzy [root@localhost home]# gunzip hello.txt.gz [root@localhost home]# ls a.txt hello.txt mycal zzy
当使用gzip进行压缩文件后,不会保留源文件
zip和unzip指令
zip [选项] xxx.zip 将要压缩的内容 [压缩文件或者命令]
-r 递归压缩
压缩home目录下的所有文件
[root@localhost home]# zip -r mypack.zip /home/ [root@localhost home]# ls a.txt hello.txt mycal mypack.zip zzy
unzip [选项] xxx.zip
将mypack.zip解压到/opt/tmp目录
[root@localhost home]# unzip -d /opt/tmp mypack.zip [root@localhost tmp]# ls home
tar指令
基本语法:tar [选项] xxx.tar.gz 打包的内容 [打包目录,压缩后的文件格式为.tar.gz]
-c:产生.tar打包文件
-v:显示详细信息
-f:指定压缩后的文件名
-z:打包同时压缩
-x:解包.tar文件
将/home/a1.txt,a2.txt压缩成a.tar.gz
[root@localhost home]# tar -zcvf a.tar.gz a1.txt a2.txt a1.txt a2.txt [root@localhost home]# ls a1.txt a2.txt a.tar.gz a.txt hello.txt mycal zzy
将/home的文件压缩成myhome.tar.gz
[root@localhost home]# tar -zcvf myhome.tar.gz /home/ ... [root@localhost home]# ls a1.txt a2.txt a.tar.gz a.txt hello.txt mycal myhome.tar.gz zzy
将a.tar.gz解压到当前目录
[root@localhost home]# tar -zxvf a.tar.gz a1.txt a2.txt [root@localhost home]# ls a1.txt a2.txt a.tar.gz a.txt hello.txt mycal myhome.tar.gz zzy
将myhome.tar.gz解压到/opt/tmp目录下(指定的解压缩路径必须存在)
[root@localhost home]# tar -zxvf myhome.tar.gz -C /opt/tmp/
6.组管理和权限管理
组管理
linux组的基本介绍
在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux在每个文件有所有者,所在组,其他组的概念
1)所有者
2)所在组
3)其他组
4)改变用户所在组
所有者
文件的创建者
查看文件的所有者
1)指令:ls -ahl
drwx------. 26 zzy zzy 4.0K 10月 8 22:46 zzy
zzy 所有者 zzy 所属组
修改文件的所有者:
chown 用户名 文件名
使用root创建一个apple.txt,然后改变所有者为zzy
[root@localhost home]# touch apple.txt [root@localhost home]# ll 总用量 120 -rw-r--r--. 1 root root 0 10月 8 23:02 apple.txt [root@localhost home]# chown zzy apple.txt [root@localhost home]# ll 总用量 120 -rw-r--r--. 1 zzy root 0 10月 8 23:02 apple.txt
组的创建
groupadd 组名
创建animal组,用户fox,将fox放到animal组
[root@localhost home]# groupadd animal [root@localhost home]# useradd -g animal fox [root@localhost home]# id fox uid=504(fox) gid=504(animal) 组=504(animal)
所在组
某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在组
修改文件的所在组
chgrp 组名 文件名
使用root创建bb.txt文件,查看此文件的所在组,然后修改此文件的所在组到animal组
[root@localhost home]# touch bb.txt [root@localhost home]# ll 总用量 124 -rw-r--r--. 1 root root 0 10月 8 23:12 bb.txt [root@localhost home]# chgrp animal bb.txt [root@localhost home]# ll 总用量 124 -rw-r--r--. 1 root animal 0 10月 8 23:12 bb.txt
改变用户所在组
添加用户时指定用户所在组:useradd -g 组名 用户名
或者使用root用户修改:usermod -g 组名 用户名
新建monster组,修改fox用户所在组为monster
[root@localhost home]# groupadd monster [root@localhost home]# id fox uid=504(fox) gid=504(animal) 组=504(animal) [root@localhost home]# usermod -g monster fox [root@localhost home]# id fox uid=504(fox) gid=505(monster) 组=505(monster)
权限管理
权限的基本介绍
-rw-r--r--. 1 root root 263 10月 6 20:56 a.txt
rw-表示文件所有者的权限–读写
r–表示文件所在组的用户的权限 –只读
r–文件的其他组的权限 –只读
1 –如果是文件,表示硬链接,如果是目录,表示字母的个数
root –所有者
root–所属组
263–文件大小,如果是目录则显示4096
10月 6 20:56–文件最后的修改时间
0-9位说明:
1)第0位确定文件夹类型[- (普通文件) ,d(目录),l(软链接文件),c(字符设备),b(块文件,硬盘)]
2)第1-3位确定所有者—user
3)第4-6位确定所属组—-group
4)第7-9位确定其他用户用于该文件的权限–other
chmod
修改文件或者目录的权限
第一种方式:+,=,-
u:所有者,g:所有组,o:其他人,a:所有人
1)chmod u=rwx,g=rx,o=x 文件目录名
2)chmod o+w 文件目录名
3)chmod a-x 文件目录名
案例:
给abc文件的所有者读写执行的权限,给所在组读执行的权限,给其他组读执行的权限
[root@localhost home]# ll 总用量 124 -rw-r--r--. 1 root root 0 10月 9 14:40 abc [root@localhost home]# chmod u=rwx,g=rw,o=rx abc [root@localhost home]# ll 总用量 124 -rwxrw-r-x. 1 root root 0 10月 9 14:40 abc
给abc文件的所有者除去执行的权限,增加组执行的权限
[root@localhost home]# chmod u-x,g+x abc [root@localhost home]# ll 总用量 124 -rw-rwxr-x. 1 root root 0 10月 9 14:40 abc
给abc文件的所有用户添加执行的权限
[root@localhost home]# chmod a+x abc [root@localhost home]# ll 总用量 124 -rwxrwxr-x. 1 root root 0 10月 9 14:40 abc
第二种方式:通过数字变更权限
r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名
相当于 chmod 751 文件目录名
案例:将abc.txt文件的权限修改成rwxr-xr-x ,使用数字方式实现
[root@localhost home]# ll 总用量 12 -rw-r--r--. 1 root root 0 10月 9 19:06 abc.txt [root@localhost home]# chmod 755 abc.txt [root@localhost home]# ll 总用量 12 -rwxr-xr-x. 1 root root 0 10月 9 19:06 abc.txt
修改文件所有者
chown newowner file 改变文件的所有者
chown newownergroup file 改变用户的所有者和所有组
-R 如果是目录,则使其下的所有子文件或目录递归生效
案例:将abc.txt文件的所有者修改位fox
[root@localhost home]# chown fox abc.txt [root@localhost home]# ll 总用量 12 -rwxr-xr-x. 1 fox root 0 10月 9 19:06 abc.txt
将kkk目录所有文件或目录的所有者改为fox
[root@localhost home]# chown -R fox kkk [root@localhost home]# ll 总用量 16 drwxr-xr-x. 2 fox root 4096 10月 9 19:15 kkk
改变文件的所在组
charp newgroup file 改变文件的所有组
将abc.txt所属组改为animal
[root@localhost home]# chgrp animal abc.txt [root@localhost home]# ll 总用量 16 -rwxr-xr-x. 1 fox animal 0 10月 9 19:06 abc.txt
将kkk下所有文件和目录的所属组改为fox
[root@localhost home]# chgrp -R animal kkk [root@localhost home]# ll 总用量 16 drwxr-xr-x. 2 fox animal 4096 10月 9 19:15 kkk
最佳实践—警察和土匪游戏
两个组:ploice(警察),bankit(土匪)
警察用户:jack,jerry
土匪用户:xh,xq
要求:
创建组
root@localhost home]# groupadd ploice
[root@localhost home]# groupadd bankit
创建用户并分组
[root@localhost home]# useradd -g police jack
[root@localhost home]# useradd jerry
[root@localhost home]# chgrp -R police jerry
[root@localhost home]# ll
总用量 24
drwx------. 4 jack police 4096 10月 9 19:49 jack
drwx------. 4 jerry police 4096 10月 9 19:49 jerry
[root@localhost home]# useradd -g bankit xh
[root@localhost home]# useradd -g bankit xq
[root@localhost home]# ll
总用量 32
drwx------. 4 xh bankit 4096 10月 9 19:55 xh
drwx------. 4 xq bankit 4096 10月 9 19:55 xq
jack创建一个文件,自己可以读写,本组人可以读,其他组没有任何权限
[jack@localhost ~]$ touch jackfile
[jack@localhost ~]$ ll
总用量 0
-rw-r--r--. 1 jack police 0 10月 9 19:56 jackfile
[jack@localhost ~]$ chmod 740 jackfile
[jack@localhost ~]$ ll
总用量 0
-rwxr-----. 1 jack police 0 10月 9 19:56 jackfile
jack修改该文件,让其他组可以读,本组人可以读写
[jack@localhost ~]$ chmod 764 jackfile
[jack@localhost ~]$ ll
总用量 0
-rwxrw-r--. 1 jack police 0 10月 9 19:56 jackfile
xh投靠警察,看看是否可以读写
[root@localhost home]# chgrp -R police xh
[root@localhost home]# ll
总用量 32
drwx------. 4 xh police 4096 10月 9 19:55 xh
[xh@localhost home]$ cd jack
bash: cd: jack: 权限不够
[jack@localhost home]$ chmod g=rx jack
[jack@localhost home]$ ll
总用量 32
drwxr-x---. 4 jack police 4096 10月 9 20:04 jack
[root@localhost ~]# usermod -g police xh
[root@localhost ~]# id xh
uid=507(xh) gid=501(police) 组=501(police)
[xh@localhost home]$ cd jack
[xh@localhost jack]$ ll
总用量 0
-rwxrw-r--. 1 jack police 0 10月 9 19:56 jackfile
[xh@localhost jack]$ vim jackfile
注意文件所在组的修改和用户所在组的修改所用命令不同
注意修改jack文件的权限管理后,重新登录xh账号
练习:

7.crond定时调度
crontab任务调度
是指系统在某个时间执行的特定的命令或程序
crontab [选项]
-e 编辑crond任务调度
-l 查询crontab任务
-r 删除当前用户的所有crontab任务
案例:
每分钟执行 [root@localhost home]# ls -l /home>>/home/to.txt指令
简单的任务不用写脚本,可以在crontab中加入任务即可,对于比较复杂的任务,需要写脚本(shell编程)来完成
crontab -e
*/1 * * * * ls -l /home >> /home/to.txt
wq退出
参数说明:
第一个* 一小时的第几分钟,范围 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 * * * * 命令,代表每隔10分钟执行一次命令
练习:
1)每隔1分钟,就将当前日期信息,追加到/tmp/mydate文件中
编写一个文件/home/mytask1.sh
vim mytask1.sh
date >> /tmp/date
给mytask1.sh一个可执行权限 chmod 744 mytask1.sh
crontab -e
*/1 * * * * /home/mytask1.sh
2)每隔一分钟,将当前日期和日历都追加到/home/mycal文件中
类似1)修改 date >> /home/mycal 为 date >>/home/mycal
cal >> /home/mycal
8.磁盘分区,挂载
分区的基础知识
分区的方式:
1)mbr分区
最多支持四个分区
系统只能安装在主分区
扩展分区要占一个主分区
MBR最大只支持2TB,但拥有好的兼容性
2)gtp分区
支持无限多的分区(windows下做多支持128个分区)
最大支持18EB的大容量(EB=1204PB,PB=1024TB)
windows7 64位以后支持gtp
分区基础知识
Windows下的磁盘分区:
Linux分区
原理介绍:
Linux来说无论有几个分区,分给哪一个目录使用,它归根结底就只有一个目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分
Linux采用了一种叫做载入的处理方法,它的整个文件系统包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这时载入的一个分区使它的存储空间在一个目录下获得
示意图:
查看分区和挂载命令:lsblk -f
挂载的经典案例
新增一块硬盘,挂载到/home/newdisk目录
1)虚拟机添加硬盘
2)分区 fdisk/dev/sdb
3)格式化 mkfs -t ext4 /dev/sdb1
4)挂载 创建目录/home/newdisk 挂载 mount /dev/sdb1 /home/newdisk
5)设置可以自动挂载(已经挂载,重启机器后仍然可以挂载到 /home/newdisk)
vim /etc/fstab
/dev/sdb1 /home/newdisk ext4 defaults 0 0
mount -a
reboot
具体步骤
①在虚拟机菜单中,选择设置,设别列表添加硬盘,下一步,修改磁盘大小,完成后重启系统才能识别
②分区命令:fdisk /dev/sdb
开始对/sdb分区
m–显示命令列表
p–显示磁盘分区 同 fdisk -l
n –新增分区
d –删除分区
w –写入并退出
说明:开始分区后,输入n,新增分区,然后选择p,分区类型位主分区,两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q
③格式化磁盘
分区命令:mkfs -t ext4 /dev/sdb1
其中ext4是分区类型
④挂载:将一个分区与一个目录联系起来
mount 设备名称 挂载目录
mount /dev/sdb1 /home/newdisk
umount 设备名称或挂载目录
umount /dev/sdb1 或者 umount /home/newdisk
⑤永久挂载
通过修改/etc/fstab实现挂载
编辑完成后
[root@localhost home]# vim /etc/fstab
[root@localhost home]# mount -a添加完成后,执行mount -a 即可生效
磁盘情况查询
查询系统整体磁盘的使用情况
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 5.3G 12G 32% / tmpfs 764M 76K 764M 1% /dev/shm /dev/sda1 485M 33M 427M 8% /boot /dev/sdb1 2.0G 35M 1.9G 2% /home/newdisk [root@localhost ~]# df -lh
查询指定目录的磁盘占用情况
du -h /目录
默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
应用实例:
查询/opt目录的磁盘占用情况,深度为1
[root@localhost ~]# du -ach --max-depth=1 /opt 86M /opt/gcc-4.9.2.tar.bz2 1.5M /opt/tmp 4.0K /opt/rh 743M /opt/gcc-4.9.2 830M /opt 830M 总用量
实用指令查询
统计/home文件夹下文件的个数
[root@localhost ~]# ls -l /home | grep "^-" | wc -l 3
统计/home文件夹下目录的个数
[root@localhost ~]# ll /home | grep "^d" | wc -l 8
统计/home文件夹下文件的个数,包括子文件里的
[root@localhost ~]# ls -lR /home | grep "^-" | wc -l 5
统计/home文件夹下目录的个数,包括子文件夹里的
[root@localhost ~]# ls -lR /home | grep "^d" | wc -l 17
以树形显示目录结构(可能需要安装)
[root@localhost ~]# yum install tree
9.网络配置
自动获取
网络连接—>自动连接—>应用,此方式获取的IP地址可能会变化,所以不适合做服务器
指定特定的IP
说明:直接修改配置文件来指定ip,并可以连接到外网,编辑 vi /etc/sysconfig/network-scripts/ifcfg-eth0
配置IP地址为静态的,IP地址为192.168.145.133
没有则新增
... ONBOOT=yes BOOTPROTO=static//设置静态ip IPADDR=192.168.145.133 //IP地址 GATEWAY=192.168.145.2 //网关,虚拟网卡的地址 DNS1=192.168.145.2 //dns地址和网关相同就行 ...
保存退出重启服务(或系统)
[root@localhost ~]# service network restart
若为拷贝的系统,可能会出现错误,这是因为网卡地址不同
[root@localhost ~]# service network restart 关闭环回接口: [确定] 弹出环回接口: [确定] 弹出界面 eth0: 错误:没有找到合适的设备:没有找到可用于连接 'System eth0' 的设备。
解决方法:
首先查看现在使用的网卡信息(就是eth?),例如我的就是eth3
[root@localhost ~]# ifconfig eth3 Link encap:Ethernet HWaddr 00:0C:29:4C:5C:7B inet addr:192.168.145.133 Bcast:192.168.145.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe4c:5c7b/64 Scope:Link ...
接着,修改MAC地址
[root@localhost ~]# vi /etc/udev/rules.d/70-persistent-net.rules # PCI device 0x1022:0x2000 (vmxnet) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:4c:5c:7b", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
将eth3直接改为eth0,并且复制00:0c:29:4c:5c:7b网卡地址
然后配置静态IP
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 ... HWADDR=00:0c:29:4c:5c:7b //改为刚才复制的网卡地址 ...
退出保存,重启服务(或系统)即可。
[root@localhost ~]# service network restart
10.进程管理
进程简介
linux中,每个进程分配一个ID号
每个进程有两种存在方式,前台与后台,所谓前台就是用户目前的屏幕上可以进行操作的。后台则是在屏幕上无法看到,通常使用后台方式执行
系统服务一般在后台运行,直到关机结束。
显示系统执行的进程
ps 命令用来查看目前系统中,有哪些正在执行,以及他们的执行情况
ps -aux
ps -a 显示当前终端的所有进程信息
ps -u 以用户的格式显示进程信息
ps -x显示后台进程运行的参数
[root@localhost ~]# ps -aux | more USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 2900 1424 ? Ss 19:27 0:01 /sbin/init root 2 0.0 0.0 0 0 ? S 19:27 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 19:27 0:00 [migration/0]
分别为:用户-进程id-占用内存-占用虚拟内存- 使用物理内存 -使用终端 -运行状态(s:休眠,r:运行) - 启动时间 -占用cpu总时间 -进程执行时的命令行
和管道符一起使用,进行过滤
[root@localhost ~]# ps -aux | grep sshd Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ root 2006 0.0 0.0 9836 1012 ? Ss 19:27 0:00 /usr/sbin/sshd root 3881 0.0 0.2 12780 3428 ? Ss 19:52 0:00 sshd: root@pts/1 root 4094 0.0 0.0 5984 732 pts/1 S+ 20:18 0:00 grep sshd
查看父进程
[root@localhost ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 19:27 ? 00:00:01 /sbin/init root 2 0 0 19:27 ? 00:00:00 [kthreadd] root 3 2 0 19:27 ? 00:00:00 [migration/0]
PPID为PID的父进程
比如:查看sshd的父进程
[root@localhost ~]# ps -ef | grep sshd root 2006 1 0 19:27 ? 00:00:00 /usr/sbin/sshd
终止进程
kill [选项] 进程号 //通过进程号杀死进程
killall 进程名称 //通过进程名杀死进程 ,支持通配符
常用选项
-9 :表示强迫进程立即停止
实践:
①剔除非法用户登录
查看当前远程登录的用户
[root@localhost home]# ps -aux | grep sshd
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 2006 0.0 0.0 9836 1012 ? Ss 19:27 0:00 /usr/sbin/sshd
root 3881 0.0 0.2 12780 3428 ? Ss 19:52 0:00 sshd: root@pts/1
root 4213 0.1 0.2 11888 3316 ? Ss 20:31 0:00 sshd: zzy [priv]
...
[root@localhost home]# kill 4217
You have new mail in /var/spool/mail/root
②终止远程登录服务sshd,在适当的时候再启用
[root@localhost home]# ps -aux | grep sshd
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 2006 0.0 0.0 9836 1012 ? Ss 19:27 0:00 /usr/sbin/sshd
[root@localhost home]# kill 2006
启动sshd服务
[root@localhost home]# /etc/init.d/sshd start
③终止多个gedit编辑器,killall (通过进程名来 终止进程)
[root@localhost home]# killall gedit
④强制杀掉一个终端(/bin/bash 代表一个终端)
[root@localhost 桌面]# ps -aux |grep bash
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root 3886 0.0 0.1 6876 1684 pts/1 Ss+ 19:52 0:00 -bash
root 7959 0.0 0.1 6876 1648 pts/0 Ss 20:44 0:00 /bin/bash
root 7971 0.0 0.1 6876 1696 pts/2 Ss+ 20:44 0:00 /bin/bash
...
[root@localhost 桌面]# kill -9 7959
pstree 查看进程树
pstree [选项]
pstree -p :显示进程的PID
pstree -u :显示进程的所属用户
[root@localhost home]# pstree -u
服务管理
基本介绍:service的本质就是进程,但是运行在后台,通常都会监听某个端口,等待其他程序的请求,像 mysql,sshd,防火墙等,又称为守护进程。
service 管理指令:
service 服务名 start | stop | restart | reload | status
在redhat7.0后,不再使用service,而是systemctl
使用案例:
查看当前防火墙的状况,关闭和重启防火墙
[root@localhost home]# service iptables status
表格:filter
...
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
关闭防火墙:
[root@localhost home]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
windows dos下 的telnet ip地址 端口号 来查看端口是否打开
telnet 192.168.145.133 22
注意:service 命令使用后立即生效,但只是临时生效,当重启系统后,回归到以前的服务设置
使用chkconfig才能设置某个服务自启动或关闭永久生效。
查看服务名:
setup 查看
/etc/init.d/服务名称
服务的运行级别
vi /etc/inittab
0—6
chkconfig命令(重启后生效)
通过chkconfig命令可以给每个服务的各个运行级别设置自启动/关闭
基本语法:
chkconfig -list|grep xxx 查看服务
[root@localhost home]# chkconfig --list | grep sshd sshd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
chkconfig 服务名 –list
[root@localhost home]# chkconfig iptables --list iptables 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
chkconfig –level 5 服务名 on/off
将sshd服务再运行级别为5情况下,不自启动
[root@localhost home]# chkconfig --level 5 sshd off
动态监控
查看系统的网络情况 netstat
基本语法:
netstat [选项]
-an :按照一定的顺序排列输出
-p:显示那个进程在调用
netstat -anp
案例:
查看系统所有的网络服务
[root@localhost home]# netstat -anp | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:43904 0.0.0.0:* LISTEN 1783/rpc.statd
查看服务名为sshd的服务信息
[root@localhost home]# netstat -anp | grep sshd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2006/sshd tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 3881/sshd tcp 0 64 192.168.145.133:22 192.168.145.1:52686 ESTABLISHED 3881/sshd tcp 0 0 :::22 :::* LISTEN 2006/sshd tcp 0 0 ::1:6011 :::* LISTEN 3881/sshd
top命令
top与ps命令类似,都用来显示正在执行的进程。不同之处,top在执行一段时间可以更新正在运行的进程
基本语法:
top [选项]
-d 秒数 指定top命令隔几秒更新,默认3秒
-i 使top不显示任何闲置或者僵死进程
-p 通过指定监控进程id来仅仅监控某个进程的状态
交互操作说明
P 以cpu使用率排序,默认
M 以内存的使用率排序
N 以PID排序
q 退出top
案例:
[root@localhost home]# top top - 21:41:35 up 2:14, 3 users, load average: 0.04, 0.02, 0.00 Tasks: 181 total, 1 running, 180 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1562944k total, 693188k used, 869756k free, 42252k buffers Swap: 2064376k total, 0k used, 2064376k free, 423176k cached
top - 21:41:35(当前时间) up 2:14(系统运行时间), 3 users(当前系统用户数量), load average: 0.04, 0.02, 0.00(负载均衡 三个树的和<0.7 运行正常)
按q退出
①监视特定的用户
输入 top 回车,输入 u 回车,再输入用户名 ,即可。
②终止指定的进程
输入 top 回车,输入 k回车,再输入要结束的进程id号 ,即可。
③指定系统状态更新时间(每隔10s 自动更新,默认3s)
[root@localhost home]# top -d 5
11.RPM包管理
RPM 介绍
红帽包管理器(linux系统通用),类似于Windows 的setup.exe
rpm包的查询指令
查询已安装的rpm列表 rpm -qa | grep xx(软件名)
查询是否安装了firefox
[root@localhost ~]# rpm -qa | grep firefox firefox-17.0.10-1.el6_4.i686
rpm -qa 查询所安装的所有rpm软件包
rpm -qa | more 分页显示
rpm -qa | grep X
rpm -q 软件包名 查询软件包是否安装
rpm -qi 软件包名 查询软件包信息
[root@localhost ~]# rpm -qi firefox Name : firefox Relocations: (not relocatable) Version : 17.0.10 Vendor: Red Hat, Inc. Release : 1.el6_4 Build Date: 2013年10月23日 星期三 21时15分16秒
rpm -qi file
rpm -ql 软件包名 查询软件包中的文件
[root@localhost ~]# rpm -ql firefox /usr/bin/firefox /usr/lib/firefox /usr/lib/firefox/LICENSE /usr/lib/firefox/application.ini
rpm -qf 文件全路径名 查询文件所属的软件包
[root@localhost ~]# rpm -qf /etc/passwd setup-2.8.14-20.el6_4.1.noarch
[root@localhost ~]# rpm -qf /root/install.log file /root/install.log is not owned by any package
卸载rpm包
rpm -e rpm包的名称
例:
删除firefox 软件包
[root@localhost ~]# rpm -e firefox
强制删除
[root@localhost ~]# rpm -e --nodeps foo
安装rpm包
rpm -ivh rpm包的全路径
i install 安装
v verbose 提示
h hash 进度条
安装firefox
找到firefox的安装包。先挂载到Linux系统iso文件,然后到/media/下去找rpm.
记住要连接镜像文件,然后redhat6桌面会多一个光驱。
切换到Packages目录,可查看到Centos系统的所有rpm包,找到firefox,复制到/opt/目录
[root@localhost Packages]# cd /media [root@localhost Packages]# cd CentOS_6.5_Final/ [root@localhost Packages]# cd Packages/ [root@localhost Packages]# cp firefox-17.0.10-1.el6.centos.i686.rpm /opt/ [root@localhost Packages]# cd /opt/ [root@localhost opt]# ls firefox-17.0.10-1.el6.centos.i686.rpm gcc-4.9.2 gcc-4.9.2.tar.bz2 rh tmp [root@localhost opt]# rpm -ivh firefox-17.0.10-1.el6.centos.i686.rpm Preparing... ########################################### [100%]
12.yum
介绍
yum是一个shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且进行安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用yum的前提是要联网
基本指令
查询yum服务器是否有需要安装的软件
yum list | grep xx 软件列表
安装指定的yum包
yum install xxx 下载安装
使用yum安装firefox
先查看yum服务器是否有firefox的rpm包
[root@localhost ~]# yum list | grep firefox firefox.i686 17.0.10-1.el6.centos installed firefox.i686 68.2.0-4.el6.centos updates
安装(安装前先卸载)默认安装最新版本
[root@localhost ~]# rpm -e firefox [root@localhost ~]# yum install firefox 已加载插件:fastestmirror 设置安装进程 Loading mirror speeds from cached hostfile * rpmforge: ftp.riken.jp 解决依赖关系 ... 作为依赖被升级: nspr.i686 0:4.21.0-1.el6_10 nss.i686 0:3.44.0-7.el6_10 nss-softokn.i686 0:3.44.0-5.el6_10 nss-softokn-freebl.i686 0:3.44.0-5.el6_10 nss-sysinit.i686 0:3.44.0-7.el6_10 nss-tools.i686 0:3.44.0-7.el6_10 nss-util.i686 0:3.44.0-1.el6_10 完毕!
5
55
55
55
5
55
5
55
5
5
55