自学Linux
Linux简介
1: linux是一个服务器操作系统,项目发布,环境搭建。
特点: 免费,开源,高效,安全,处理高并发能力很强。
Linux内核,华为 小米
2:linux的发行版(在内核的基础上进行的开发应用)
红帽 centOS Ubantu suse 红旗(中国)
Android---》小米 华为
《鸟哥私房菜》---> 初级 linux(基础的linux指令)
《人月神话》 --》 linux 高级应用(集群,部署信息)
VM和linux的安装
VM:虚拟机
通过vm软件在windows平台虚拟一个新的操作系统(光驱,硬盘,声卡 网卡....)
虚拟化,(集群搭建),云计算:运维(linux)
必须开启:当前系统的虚拟化,否则安装失败(F2,或者是F10,F12)
操作系统支持虚拟化,bios 虚拟机化开启 enalbel
CentOS:linux操作系统(就是一系列的文件)
(1)创建一个虚拟机
根据windows硬件,配置虚拟机的配置。
配置网络连接的时候选择 nat方式
(2)安装centos操作系统
网络设置和终端
1:配置网络
自动获取动态IP地址
也就是通过路由器的DHCP功能,使Linux主机自动获取IP地址。
设置方法如下:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
编辑本地网卡的配置文件
主要查看下面这两项是否和下面给出的一致即可。
ONBOOT=yes
BOOTPROTO=dhcp
第一项是确保本地网卡eth0开启。
第二项是使用dhcp,自动获取IP地址、子网掩码、网关和DNS。
然后,执行下面的命令,重启网络服务即可。
service network restart
重启网络服务,使配置文件生效
安装vmtools工具
Vmtools工具可以将windows中的文本文件拷贝到linux中,linux中的内容可以移动的windows中
安装:击安装VMware Tools 会下载到/media/VMware Tools目录下
1) 在root权限将vmtools工具压缩包,解压到opt目录下
tar -zxvf /media/VMware Tools/压缩文件名 -C /opt
2) 进入解压后的文件目录 (cd 目录名) cd /tmp/vmware-tools-distrib
3) 安装文件 ./***.pl 文件 (一路回车) ./vmware-install.pl
4) 重启linux,vmtools工具才能生效
文件在linux和windows之间就可以自由的拷贝了.
Linux的目录结构
Linux的文件系统采用层级式的树状目录结构,在此结构中的最上层称之为跟目录,使用”/”表示然后在此目录下创建其他目录
Linux是一个文件系统,在linux中一切内容都是文件。
常用目录介绍:
/bin [重点](/usr/bin、/usr/local/bin)
bin是binary的缩写,这个目录中存放着最经常使用的命令
cat /etc/passwd
/sbin(/usr/sbin、/usr/local/sbin)
s就是super user的意思,这里存放的是系统管理员使用的系统管理程序
/home[重点]
存放普通用户的主目录,在linux中每个用户都有自己的一个目录,一边该目录名是以用户账号命名的。
/root 该目录是系统管理员,或者是超级权限者的用户目录
/lib 系统开机所需要的最基本的动态链接共享库,
/lost+font 这个目录一般是空的,系统非法关机后这里就会存放一些文件
/etc [重点] 所有的系统管理所需要的配置文件和子目录
/usr[重点] 这是一个非常重要的目录,用户的很多应用程序和文件都放在此目录下类似于windeows下的 program file文件夹
/boot 存放的是启动linux时使用的一些核心文件目录
/proc、/srv、/sys 这三个目录和linux内核有关的目录,他是系统内存的一个映射,访问这个目录来获取系统信息。Linux高手才会用到,普通操作者不要乱动。
/tmp 存放临时文件的目录
/dve 类似于windows的设备管理器,把所有的硬件用文件的形式存储
/media [重点] linux会自动识别一些设备,如u盘,光驱等,当识别后linux会把识别的设备挂载到这个目录下
/mnt 系统提供该目录是为了让用户临时挂载别的文件系统。
/opt[重点] 这个是我们存放安装软件的目录(jdk tomcat sogou...)
/usr/local [重点] 这个是另外一个给主机额外安装软件所安装的目录,一般通过编译源码方式安装程序
/var 存放不断变化的文件,例如日志文件,经常更新,就放到这个目录下。
/selinux 是一个安全子系统,控制程序访问特定文件
远程登录linux
在我们实际操作中,我们的服务器安装的linux系统,让后将项目发布到服务器上,linux服务器是没有显示器的。而且我们和服务器机房不在同一个地方,所以需要远程服务器
Xshell5就是一个远程终端,用于登录到linux上,如果需要在linux上安装文件,我们还需要将文件远程上传到linux系统上,使用的就是 xftp5
注意:因为xshell5远程登录到linux系统,linux系统必须打开sshd服务,因为这个服务监听22号端口,如果没有开启我们需要开启这个服务。
nc -lp 23 &(打开23端口,即telnet)
netstat -an | grep 23 (查看是否打开23端口)
1)安装xshell5完成以后
2)获取当前linux的ip地址
3)使用ip进行远程连
安装文件上传工具 sftp,按照下图进行配置
修改sftp中文乱码问题:默认为gbk编码
勾选后然后刷新就可以改变乱码了.
Linux的常用指令:
1:文件和目录
1) Pwd :显示当前所在的目录
/ linux中根目录
~ 当前的用户目录
2) cd 切换目录 (. , ..)
cd /home 进入 '/ home' 目录'
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd 进入个人的主目录
cd ~user1 进入个人的主目录
cd - 返回上次所在的目录
3) ls 查看目录下的文件 ----- ll
ls -F 查看目录中的文件
ls -l (ll)显示文件和目录的详细资料(常用的查看指令)
ls -a 显示隐藏文件
ll -s 显示文件详细信息
查看文件内容:
Cat 指令 查看文件内容的指令
Cat 文件名
Cat 有效的文件路径/文件 查看文件内容
4) 目录指令
mkdir dir1 创建一个叫做 'dir1' 的目录'
mkdir dir1 dir2 同时创建两个目录
mkdir -p /tmp/dir1/dir2 创建一个目录树(多个文件夹的嵌套)
rmdir dir1 删除一个叫做 'dir1' 的目录'(文件夹中没有内容的)
rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容
rm -rf dir1 dir2 同时删除两个目录及它们的内容
mv dir1 new_dir 重命名
5)修改文件的指令
Touch file1 创建一个叫’file1’的文件
Vim 文件名 编辑文件内容后就会产生一个文件 vi vim
Echo ‘内容’ > 文件名 将制定内容添加到文件中,这样会覆盖文件原有内容,如果不想覆盖请使用 >> 符号
Rm -f 文件名(或者是一个有效的文件目录,最终指向一个文件) 删除一个文件
Mv 文件名 新文件名 给文件重命名
Mv 文件名 一个有效的文件目录。将某个文件移动到指定目录中
Mv 文件的路径 文件的路径 将当前目录中制定的文件移动到目标文件中
5) Cp 复制指令
cp dir/* . 复制一个目录下的所有文件到当前工作目录
cp -a /tmp/dir1 路径 复制一个目录到当前工作目录
cp -a file1 file2 #连同文件的所有特性把文件file1复制成文件file2
cp file1 file2 file3 dir #把文件file1、file2、file3复制到目录dir中
Vi 和Vim文本编辑器使用
进入编辑页面想退出:
Esc 》》》 shift+: 》》》q!
正常使用
Vim /usr/local/a001/b003/mm.txt
I (开始编辑)
Esc 》》》 shift+: 》》》wq
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具
三种模式
正常模式:
以vim打开一个档案就直接进入一般模式(这个是默认的模式) 在这个模式中可以使用[上下左右]按键来移动光标,你可以使用删除字符或者是删除正行来处理档案内容,可以使用复制 粘贴来处理文件数据
插入模式
按下 i I o O a A r R 等任何一个字母之后才会进入编辑模式 一般来说按i即可
命令行模式 (底行模式)
在这个模式当中,可以提供相关指令,完成读取,存盘 替换 离开 vim、显示行号等动作则是在此模式中打成
三种模式的切换:
(1) 创建一个文本文件
Touch 文件名
(2) 使用vim指令切换不同的模式完成练习
find文件查找指令(名字)
Find指令
基本格式:语法:find [查找文件的路径] [查找条件] [处理动作]
1.按照文件名查找
(1)find / -name httpd.conf #在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2)find /etc -name httpd.conf #在/etc目录下文件httpd.conf
(3)find /etc -name '*srm*' #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
(4)find . -name 'srm*' #表示当前目录下查找文件名开头是字符串‘srm’的文件
2.按照文件特征查找
(1)find / -amin -10 # 查找在系统中最后10分钟访问的文件(access time)
(2)find / -atime -2 # 查找在系统中最后48小时访问的文件
(3)find / -empty # 查找在系统中为空的文件或者文件夹
(4)find / -group cat # 查找在系统中属于 group为cat的文件
(5)find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件(modify time)
(6)find / -mtime -1 #查找在系统中最后24小时里修改过的文件
(7)find / -user fred #查找在系统中属于fred这个用户的文件
(8)find / -size +10000c #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
(9)find / -size -1000k #查找出小于1000KB的文件
(10) find /- type f|d 查找当前目录下所有文件
Grep指令(文件内容查找)
grep [options] ‘pattern’ filename
下面所列的参数主要是一些常用的参数。
option主要参数
编号 参数 解释
1 --version or -V grep的版本
2 -A 数字N 找到所有的匹配行,并显示匹配行后N行
3 -B 数字N 找到所有的匹配行,并显示匹配行前面N行
4 -b 显示匹配到的字符在文件中的偏移地址
5 -c 显示有多少行被匹配到
6 --color 把匹配到的字符用颜色显示出来
7 -e 可以使用多个正则表达式
8 -f FILEA FILEB FILEA在FILEAB中的匹配
9 -i 不区分大小写针对单个字符
10 -m 数字N 最多匹配N个后停止
11 -n 打印行号
12 -o 只打印出匹配到的字符
13 -R 搜索子目录
14 -v 显示不包括查找字符的所有行
pattern主要参数
编号 参数 解释
1 ^ 匹配行首
2 $ 匹配行尾
3 [ ] or [ n - n ] 匹配[ ]内字符
4 . 匹配任意的单字符
5 * 紧跟一个单字符,表示匹配0个或者多个此字符
6 \ 用来屏蔽元字符的特殊含义
7 \? 匹配前面的字符0次或者1次
8 \+ 匹配前面的字符1次或者多次
9 X\{m\} 匹配字符X m次
10 X\{m,\} 匹配字符X 最少m次
11 X\{m,n\} 匹配字符X m---n 次
12 666 标记匹配字符,如666 被标记为1,随后想使用666,直接以 1 代替即可
13 \| 表示或的关系
(1) 创建一个文件内容为
a
bc
def
ght12
abc999
tydvl658
123
456
789abc
命令
grep --version 显示grep的版本号
grep -A 2 "a" test.txt //匹配字符’a’ 后面两行
grep -B 2 "a" test.txt //匹配字符’a’ 前面两行
grep -c "a" test.txt //在整个txt中,共有三个字符’a’被匹配到
grep --color “a” txt //匹配到的内容使用颜色显示
grep -e "a" -e "1" test.txt //查找txt中字符 ‘a’ 和 字符 ‘1’
grep -i "a" test1.txt //找出所有字符’a’ 并且不区分大小写
grep -m 2 "a" test.txt //匹配2个后停止
grep -n -m 2 "a" test.txt //打印出匹配字符的行号
grep "a" * //只在当前目录查找字符’a’
grep -R "a" * //在当前目录和子目录查找字符’a’
grep -v "a" test.txt 显示不包括查找字符的所有行
grep -n '^a' test.txt //匹配以字符’a’开头的
grep -n '33$' test.txt //匹配以字符串”33”结束的
文件压缩和解压(必须)
打包和压缩文件:
tar -tf archive.tar 显示一个压缩包中的内容
tar -zcvf info.tar.gz a.java bb.java 创建一个gzip格式的压缩包
tar -zxvf info.tar.gz -C /root 解压一个gzip格式的压缩包 Linux用户和组的管理
1)Linux系统是一个多用户多任务的操作系统,任何要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统中用户名 /home
2)Linux的用户需要至少属于一个组。
3)在linux中,用户帐号,用户密码,用户组信息和用户组密码均是存放在不同的配置文件中的。
4)linux中所创建的账号和其相关信息(密码除外)均放在 /etc/passwd 文件中,linux在安装好后会默认创建多个用户,但是这些用户为linux进程用户不能登录
用户信息结构为:(使用指令 cat /ect/passwd 查看)
5)为安全起见,用户真实的密码采用MD5加密算法加密后,保存在/etc/shadow配置文件中,该文件只有root用户可以读取。
与passwd文件类似,shadow文件也是每行定义和保存一个账户的相关信息。第一个字段为用户帐户名,第二个字段为账户的密码。
6)用户组帐号信息保存在/etc/group配置文件中,任何用户均可以读取。用户组的真实密码保存在/etc/gshadow配置文件中。
在group中,第一个字段代表用户组的名称,第二个字段为x,第三个为用户组的ID号,第四个为该用户组的用户成员列表,各用户名间用逗号分隔
7) 用户指令操作
Useradd 用户名 (使用当前的用户名添加一个组,并将创建的用户放入到这个组中)
Passwd 用户名 为当前用户设置密码
Userdel -r 用户名 删除该账户和所有目录结构
Passwd -l 用户名 锁定账户密码
Passwd -u 用户名 解锁账户密码
Passwd -S 用户名 查看用户密码锁定状态
Groups 查看用户属于哪个组
8)用户组操作命令
Groupadd 组名 创建用户组
Groupdel 组名 删除用户组(有用户的组不能删除的,空组可以删除组信息)
Useradd -g 组名 用户名 创建用户并且制定用户所属的组
gpasswd -a 用户账户 用户组名 将某个用户添加到该组
gpasswd -d 用户账户 用户组名 将某个用户移除该组
9)切换用户和操作环境
su - username #用户和操作环境都改变
su username #只切换用户不切换操作环境及环境变量不变。还可用于退出超级权限
10)用户和组常用命令
groups 查看当前登录用户的组内成员
groups 用户名 查看当前用户所在的组
whoami 查看当前登录用户名
文件权限
- rw- r-- r-- root root 0 7月 20 01:03 a.java |
- 第一个字符代表文件(-)、目录(d),链接(l)
- 其余字符每3个一组 r 读 w 写 x执行
rw- 读 写 没有执行权利 (当前的文件拥有者)
r-- 读 没有写和执行的权利(和当前文件拥有者在同一个组的用户)
r-- 读 没有写 和执行的权利(其他用户的权利)
- 第一组rwx:文件所有者的权限是读、写和执行
- 第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行
- 第三组r--:不与文件所有者同组的其他用户的权限是读不能写和执行
也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7
- 1 表示连接的文件数
- root 表示用户
- root表示用户所在的组
- 1213 表示文件大小(字节)
- Feb 2 09:39 表示最后修改日期
- abc 表示文件名
改变权限的命令
chmod 改变文件或目录的权限
chmod 755 文件:赋予abc权限rwxr-xr-x
chmod u=rwx,g=rx,o=rx 文件名:同上u=用户权限,g=组权限,o=不同组其他用户权限
chmod u-x,g+w 文件名: 给abc去除用户执行的权限,增加组写的权限
chmod a+r 文件名:给所有用户添加读的权限
改变所有者(chown)和用户组(chgrp)命令
chown 用户名 文件名:改变abc的所有者为xiaoming
chgrp 组 文件:改变abc所属的组为root
chown 用户 目录:改变abc这个目录的所有者是root
chown ‐R 用户 目录:改变abc这个目录及其下面所有的文件和目录的所有者是root
改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样用root的管理权限可以改变某个用户所在的组
usermod ‐g 组名 用户名
关机、重启、注销
关机:
shutdown -h 0 #<==0秒后关机
shutdown -h now #<==现在关机
shutdown -h 10 #<==10分钟后关机
shutdown -h 23:20 #<==23:20分关机
shutdown -c #<==取消shutdown关机命令
init 0 #<==立马关机(切换运行级别为0,推荐使用)
halt #<==立马关机
poweroff #<==立马关机
重启
shutdown -r now #<==现在重启
shutdown -r 23:20 & #<==23:20分重启,加&符号代表把该命令转到后台处理
reboot #<==立马重启(推荐使用)
init 6 #<==立马重启(切换运行级别为6,推荐使用)
注销用户
logout #<==立马注销
exit #<==立马注销
清屏指令
Clear
Ctrl+l
注意:
Sync:这个指令将数据从内存中同步到磁盘上(关机和重启之前使用)
登录的时候少用管理员,可以使用普通用户登录后然后使用指令
Su -root 指令切换到管理员