1 Linux简介
Linux是一个Unix类操作系统,完全开发源码,多用户多任务。主要用于服务器(数据库服务器、Web服务器、应用服务器、日志服务器、图片服务器等等)、嵌入式领域(如路由器等需要Linux才能启动)、移动终端(比如安卓手机等、平板)。Linux主流版本有:Ubuntu、RedHat、CentOS、SUSE、FreeBSD。
1967丹尼斯·里奇和肯·汤普逊用汇编语言和B语言写了unix,1973 这两位共同发明了c语言,然后用C语言重写了unix。Unix之后慢慢变成商用收费版。linux之父:林纳斯·托瓦兹(芬兰人)于1991发明了linux,免费开源是他的特点,之后逐渐被大多数机构利用起来,包装修改发布成各种版本的linux。
PS:学到最后,部分同学以为Ubuntu linux操作系统必须安装在VM虚拟机(虚拟机也有很多品牌)里面。其实在公司里面一般是没有VM虚拟机,linux操作系统是安装在一台真实的服务器级别的电脑上(一般几十万的电脑,没有显示器的哦)。同学们windows电脑和VM虚拟机的linux电脑是两台不一样的电脑,分别有两个不同IP地址。
2 安装Linux系统(选择性掌握)
1)、安装虚拟机软件(VMware,注意不要随意卸载该软件,在Win7系统下建议安装8.0
或9.0)
2)、用虚拟机模拟电脑(四类操作系统:windows、Linux、Mac OS、Dos)
3)、安装Linux系统(掌握)
Linux分区实际上是划分目录结构(Linux只识别文件和目录),必须有"根目录(/)"和"交换目录(swap)"
交换目录(swap):提供虚拟内存,当电脑内存不足,交换目录所占用的磁盘空间会当做虚拟内存来使用
磁盘8G(/dev/sda表示一个SCSI接口的硬盘,/dev/hda表示一个IDE接口的硬盘):
swap: 1G
/: 剩余的全部空间
注:安装Linux操作系统,至少要有8G的磁盘空间(也就说给虚拟电脑至少要分配8G的磁盘空间)
Linux超级管理员账号是:root
大家之后的操作切换到root用户: suroot
Ctrl+C关闭一条命令,Ctrl+Z撤销一条命令
3 linux常见命令
3.1 基本命令
ls 或者 ll 或者ls -l #查看目录的内容 (list列表)
lsattr 查看文件属性命令 (attribute属性)
pwd #查看当前目录的绝对路径,显示当前所在目录 (print work directory 打印当前工作
目录,folder文件夹)
cd #跳到指定位置 (changedirectory 改变目录)
clear #清屏
directory 目录
folder 文件夹
示例:
[root@localhost bin]#pwd
/usr/bin
[root@localhost bin]#cd ../sbin
[root@localhost sbin]#pwd
/usr/sbin
[root@localhost sbin]#cd../../opt
[root@localhost opt]#pwd
/opt
[root@localhost opt]#ls d05/
[root@localhost opt]#ls ./d05/
Linux系统是严格区分大小写
Linux支持三种格式的shell脚本,分别是bash、csh、ssh,其中bash是最常用的。
echo $SHELL 输出SHELL变量的值 (echo 回声)
echo $x 输出X的变量值 x为变量名
环境变量分为系统环境变量和用户环境变量,env查看到所有环境变量set 查看所有环境和本地定义的临时变量
PATH 系统到PATH变量中寻找目录
[root@localhost ~]#(表示超级用户) 或 [u101@localhost bin]$(表示普通用户)
切换用户:
su 用户名;
root表示当前操作的用户
localhost表示主机名等价于127.0.0.1
~表示当前处在哪个目录中,~表示当前登录的用户的home目录(普通用户登录后默认进入到home目录)
路径:表示文件或文件夹所在的位置
绝对路径:以 / 开头
相对路径:(不以 / 开头) . 表示当前目录;.. 表示当前目录的上一层目录
文件名:1 带路径的(具有唯一性)(全名);2 不带路径的。(纯名)
第一个/表示根目录,之后的/表示目录之间的分隔符号。/下斜线,\上斜线。
PS:一个文件有相对路径,也有绝对路径(绝对路径具有唯一性)。
mkdir --help #查看命令的帮助信息
man mkdir #查看命令的详细帮助manual手册,指南
-rwxr--r-- 1 root root 145 Aug 13 11:21 f1.txt
r:read 读
w:write 写
x:execute 执行
(以d开头的,表示目录;以 - 开头的,表示文件)
ll 第一段 权限二:对于文件夹是代表字目录数,对于文件是硬链接 三:四:属主,属组,五:文件或文件夹本身大小 六七:时间日期 八:名称
3.2 常用管理命令
1、reboot #重启
2、shutdown -h 0 或者 init 0 /(halt -- 不建议用)#关机
PS:没有注销和开机的命令哦^_^
3、cd 切换路径(change directory 改变目录) #cd /etc/sysconfig
4、pwd 查看当前路径(print work directory 打印当前工作目录)#pwd
5、whoami 查看当前用户 #whoami
6、uname -r 查linux内核版本号 #uname -r
7、clear 清屏命令 #clear
8、tab键 用来路径补全功能和智能提醒
9、netstat -an 查找linux,windows(netstat -ano) 下所有的端口 #netstat -an
3.3 文件管理命令
1、ls (ll或者ls -l) #查看当前目录下有哪些文件或文件夹
ps: ls -l 的别名就是ll
2、mkdir 文件夹名 #(make directory制作目录)创建文件夹,可以同时创建多个同级文件
夹,如:mkdir d01 d02
3、mkdir -p ./first/second #创建多层文件夹,first和second都不存在情况下建目录
4、touch 文件名 #touch test.txt 创建文件
5、rmdir d101 #删除空目录d101 (rm:remove 删除)
6、rm -rf 强制删除文件名或文件夹名
7、cp 源文件路径/源文件名 目标路径 拷贝文件(只是文件) #cp T01/test.txt T02/
cp:copy
8、cp -R 源文件夹路径/源目录名 目标路径 拷贝文件夹或文件#cp-R T01 T02
9、mv 源文件路径/源文件名 目标文件夹 (mv:move)剪切文件、剪切文件并重命名
(文件和文件夹一样操作)
#将./T01/tt.log文件移动到./T02,并重命名为 t.log
[root@localhost test01]# mkdir -p T01/T02
[root@localhost test01]# touchT01/T02/tt.log
[root@localhost test01]# mkdir T03
[root@localhost test01]# mv T01/T02/tt.log T03/t.log
10、查看文件命令:(install.log) 按q退出
(1)more 文件名 按回车一行,空格一页。不能上下键翻行。(也不能通过?号往上查找)
(2)less 文件名 按回车一行,空格一页。可以通过上下键上下翻行。按q就退出。
(3)head -n 文件名 查看文件的前n行, n表示你要看的行数。(光标默认跳出文件)
(4)tail -n 文件名 查看文件的后n行。(光标默认跳出文件)
(5)cat 文件名 查看文件的所有内容(光标默认返回整个文件,并且跳出该文件)
(6)cat -n 文件名 查看文件的所有内容,并显示行号(默认返回文件尾,并且光标跳出文件)
查看.log日志文件常用less(空格一页) ,view(空格就走一格)
less、view:?查找光标的上面,/查找光标的下面
sed -ne '3,30p' 文件名 #查看文件指定范围的行(例:第3行到第30行)
PS: ./表示当前目录。./可以省略。
vi编辑器命令扩展(命令模式下的操作):vim
三种模式:(1)命令模式
(2)编辑模式
(3)末行模式(命令模式基础上)
三种的切换:
命令模式切换到编辑模式:输入i或者a。 (insert,after)编辑模式退到命令模式:esc
1、编辑模式命令:
在vi中先按esc退到命令模式,再按u可以撤销一次操作;
u 撤销上一步的操作;
Ctrl+r 恢复上一步被撤销的操作;
2、末行模式是以冒号:开头。注意:末行模式必须是在命令模式下操作。命令:
(1):set nu 显示行号 nu:number
(2):set nonu 不显示行号
(3):w 保存write
(4):q 退出quit
(5):wq 保存并退出
(6):q! 强制退出(不保存,并退出)
(7):n n表示行数 跳转到指定行,如 :5 -- 跳转到第五行
(8):w 文件名 另存为 例子 :w lk.txt--- 把当前文件保存为lk.txt
less、view或者vi打开某个文件后,用 / 或者?号查找字符串。
3、命令模式下的命令:
yy 复制行
p 粘帖
i或a 光标前插入,光标后插入
:n1,n2s/需要替换的源字符串/替换为目标字符串/参数
n1表示从第n1行开始,表示一个具体的数字,比如:1
n2表示从第n2行结束,表示一个具体的数字,比如:20
参数:1、g表示所有找出所有目标字符都替换,并没有确认。
2、c表示目标范围所有行的首个目标字符替换,并每一次都确认。
3、i表示忽略大小写,但是i需要跟c或是g一起使用,g、c也可以一起使用。
i:ignore忽略
4、g c没有时,默认目标范围所有行的首个目标字符替换,并没有确认。
5、g c表示找出所有目标字符都替换,并每一次都确认。
(n为数字,若n为点好(即.),表示从当前行开始到最后一行)
:n, $s/is/IS #替换第n行开始到最后一行中每一行的第一个is为IS
:1,5s/is/IS/ #替换第1行开始到第5行中每一行的第一个is为IS
#Is iS
:n,$s/is/IS/g #替换第n行开始到最后一行中每一行的所有is为IS
:1,$s/is/IS/g #替换第1行开始到最后一行中每一行的所有is为IS
重点:替换包含特殊字符的内容,如,把字符串 li"n/u"x 置换为Linux,此时需要用到置换符 \(转义符号)
:1,$s/li\"n\/u\"x/Linux/g #把特殊字符用\置换成普通字普通字符
11、 >覆盖导入。 >>追加导入。
cat A > B #把A文件的内容覆盖导入到B文件(把原来的内容覆盖)
cat A >> B #把A文件内容追加导入B文件 ; cat A B >>C 把A、B文件内容追加导入C
echo "helloword" > f101; #把字符串helloword覆盖导入到f101文件。
echo "helloword" >> f101; #把字符串helloword追加导入到f101文件。
PS:任何一个文件都要指明他的路径(绝对或者相对),不然计算机会找不到。
文件若不存在,则会被自动创建。
清空文件内容:
echo "" > f101 #清空文件f101中的内容,但仍然有一空行
cat /dev/null > f101 #清空文件f101中的内容,不会有空行
PS:echo针对字符串,cat针对文件内容。
(>是定向输出符,即将内容输出到指定位置;>>是追加符号)
12、对文件内容筛选查找,用 "管道:|" 和 grep 命令,查找包含目标字符串的该行所有内容
如:查找系统中80端口的监听信息: netstat -an | grep "80"
cat ./linux.txt | grep"more"
13、find 路径 参数 参数值 (查询文件)
参数:-name 后面跟文件名 #表示根据文件名进行查询
-size 后面跟文件大小 #表示根据大小进行查询
查找home下文件名为leke.txt的文件。
find /home/ -name leke.txt
查找home下大小为100M以上的文件。(+100k,-100M)
find /home/ -size +100M
14、wc -l 文件名 (line)统计当前文件的行数 wc -l ./T01/tt.txt
-m文件名 统计当前文件的字符数 wc -m ./T01/tt.txt
-c 文件名 统计当前文件的的字节数 wc -c ./T01/tt.txt
对于中文字符1W=2B(gbk编码表),对于英文字符1W=1B。(W:word单词,字符)
3.4 压缩管理
压缩管理:包(.tar)、压缩文件(.gz)、压缩包(.tar.gz或 .tgz)
1 tar命令打包:(对多个文件一起打包,文件用空格隔开)
tar参数目标文件路径/包名 被打包的文件名称
tar -cvf t101.tar f101 #将目录f101和文件打到当前目录下的t101.tar包中
tar -cvf /opt/t101.tar ./d101 #将当前目录d01打到/opt/t101.tar包中
tar -tvf t101.tar #查看t101.tar包中的内容
tar -xvf t101.tar #将t101.tar包中的内容释放到当前目录中
tar -xvf t101.tar -C /opt/d102/ #将t101.tar包中的内容释放到/opt/d102/目录中
2 压缩:
gzip只能压缩单个文件,不能压缩目录(文件夹)。(压缩后,源文件不存在了)
压缩比:1表示压缩比最小;9表示压缩比最大
2G --> 1G(压缩比小,压缩速度快)
2G --> 500M(压缩比大,压缩速度慢)
gzip -1 (数字1) f101.txt #将f101压缩,形成压缩文件f101.txt.gz
gzip f101.txt
gzip -9 f101.txt #将f101压缩,形成压缩文件f101.txt.gz
查看压缩文件:
gzip -l (小写字母l )f101.txt.gz #查看压缩文件f101.txt.gz的压缩信息,
解开压缩文件:
gzip -d f101.txt.gz 或gunzip f101.txt.gz #解压f101.txt.gz文件
对包进行压缩:
tar -cvf t101.tar f101 #首先打包操作
gzip -9 t101.tar #然后将包压缩,最终形成压缩包t101.tar.gz
tar命令只有打包功能,没有压缩功能,它是借助gzip进行压缩
3打包并压缩:(一键打包并压缩)
tar 参数 目标文件路径和包名 被打包的文件名称
tar -zcvf t101.tar.gz T101 #将目录和文件打到当前目录下的t101.tar.gz压缩包中
(vf必须放后面,不然会报错)
tar -zcvf /opt/t101.tar.gz T101 #将目录和文件打到/opt/t101.tgz压缩包中
tar -ztvf ./t101.tar.gz #查看t101.tar.gz压缩包中的内容
tar -zxvf t101.tar.gz #将t101.tar.gz压缩包中的内容释放到当前目录中
tar -zxvf t101.tar.gz -C /opt/d102/ #将t101.tar.gz压缩包中的内容解压到
#/opt/d102/目录中
#针对windows平台下的zip压缩包在linux系统里面的解压
unzip -d d101 f101.zip #将f101.zip解压到d101目录下
3.6 网络配置
ifconfig -a #查ip信息
ping #测试网络是否连通
service network restart(start\stop) #重启网卡服务
虚拟网卡桥接连接方式
hostname #输出主机名
3.7 组&用户&权限
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。
所有者:一般指文件的创建者
文件所在组:当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
其他组:除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
组管理:(cat /etc/group ,查看当前系统存在的组)
groupadd g1015 #组必需要有组id,如果没有指定组id,则系统自动分配唯一的组id
groupadd -g 168 g1016 #指定了组id,则系统不会自动组id
groupdel g1066 #删除组g1066,若组中有用户,若组中包含用户,则不能删除
组(必须确保组是空的才能删除组)
groupmod - n g1066 g1016 #将g1016更名成g1066
groupmod -g 500 g1066 #将组g1066的id更改成498
用户管理:(cat /etc/passwd存储用户基本信息;cat /etc/shadow存储用户密码信息)
一个用户可以拥有多个组:主组(有且只能有一个主组)和附属组(0到多个附属组)
用户的密码若是以*号或!开头,则表示该用户不能登录Linux操作系统
useradd u101 #u101用户登录后,默认进入到/home/u01目录下
userdel -r u101 #彻底删除用户
passwd u101 #passwd默认给当前用户设置密码,建议密码为123456设置密码时,不会
显示出来
su u101 #切换用户 (*)
改变用户所在的组:
usermod -g 组名用户名
权限:Linux中通过控制每一类用户(有3类用户)对文件/文件夹的读、写、执行来实现权限控制
rw_rw_r__: 前三个字符表示拥有者的权限,中间三个字符是组权限,后面三个字符其他人。
r: read 可读
w: write 可写
x:execute 可执行
r用数字4表示,w用数字2表示,x用数字1表示。
drwxr-xr-x 2 root root 4.0K11-06 18:30 Desktop
d:表示该文件为文件夹
第一个rwx,表示该文件所属的用户对其所拥有的操作权限
第二个rwx,表示与该文件所属用户在同组内的用户对其所拥有的操作权限
第三个rwx,表示不与该文件所属用户在同组内的用户对其所拥有的操作权限
第一个root:表示该文件夹属于哪个用户
第二个root:表示该文件夹属于哪个组
u:所属用户(拥有者) user (默认三种权限都有,仅限于文件夹)
g:所属用户所在的组内用户 group (默认仅没有写的权限,仅限于文件夹)
o:组以外的用户 other (默认仅没有写的权限,仅限于文件夹)
#修改权限:
格式:
chmod 权限文件名 (change,modify)
chmod u-w,g+w,o=r /home/linux.txt #执行完后变成dr-xrwxr--
chmod u-r 文件名
drwxr-xr-x(一个组中可以包含0到多个用户)
d表示是个普通文件夹,-表示普通文件
rwx:文件拥有者具备的权限(u),7
r-x:文件所属组中的其他用户所具备的权限(g),5
r-x:其他用户所具备的权限(o),5
#r=4;w=2;x=1,755
假设qq文件夹的默认权限是drwxr-x---
chmod -R 574 /home/lktest/qq等同于 chmod -Ru-w,g+w,o=r /home/lktest/qq
(-R针对文件夹,-R表示文件夹及其所有子内容都会发生更改)
最大是777(drwxrwxrwx),最小是000(d---------)
chmod 777 Desktop/ 等同于 chmoda=rwx Desktop/ #a代表所有用户
总结:
1 更改文件的权限:chmodu-w,g+w,o=r 文件名
2 更改文件夹的权限:chmod -R u-w,g+w,o=r 文件名
3 拥有者默认权限rwx,组内用户默认r-x,组外用户默认没有任何权限。(不一定)
--------------------------------------------------------------------------------------------------------------------
1、更改单个文件的属主(拥有者):
语法:chown 用户名 文件名
chown u102 linux.txt
2、更改文件夹的属主(拥有者):
语法:chown -R 用户名 文件名
chown -R u101 /home/qq #单独更改文件夹的拥有者(-R表示文件夹
的所有子内容全部更改)
3.8 扩展命令
cal #查看日历calendar
date #查看日期
who #查看有哪些用户登录了系统
whoami #查看当前是哪个用户登录了系统
history #查看历史命令
grep "zpp" /etc/passwd #到/etc/passwd文件中查找zpp字符串(字符串可省
略双引号)
grep -n "root" /etc/group #查看/etc/group文件中包含root的行并显示行号
du -h 文件名 #查文件或目录的大小
#查看文件夹大小 du -h T01
#查看文件大小 du -h tt.txt
ps -ef #查看系统正在运行的进程(process)
ps -ef |grep "bash" #查看系统正在运行的进程名包含bash的进程(即查看指定用户的进程)
kill -9 <pid> #强制终止(pid表示进程号,可以用ps命令查看到进程号)
强制踢出已登录用户:
方式一:
ps -ef | grep 用户名 #查到用户登陆的进程号对应的pid
kill -9 登陆进程号
方式二:根据用户名来踢
killall -9 -u 用户名
d:disk磁盘,f:free剩余的,m:memory内存。
du -h 文件名 #查文件或目录的大小
df -h #查磁盘信息/空间(*)
free -m #专业查内存
vmstat #查看CPU\IO\虚拟内存
top #查看当前系统的资源使用率(默认是5秒刷新一次,相当于windows的资源管理器)
3.9 远程连接&安装软件
客户端工具(远程连接Linux服务器):SecureCRT、SecureFX、xshell、ssh、putty,通过SSH2(端口是22)协议远程连接到Linux服务器(SSH2协议是在安装Linux操作系统时自带的协议),前2个最常用,支持中文,后2个不支持中文
ssh:secure shell 安全壳
我们敲的命令也叫shell命令(shell脚本)。
安装程序命令:
1.安装ssh远程连接服务:(我们选择本地安装方式)
先把ssh文件夹拖拉复制到/home/lktest/目录下。
执行本地安装命令:sudo dpkg -i /home/lktest/ssh/*;
测试ssh服务端有没有安装成功:ssh localhost;
如果出现如下的Welcome to Ubuntu .....的信息,代表安装成功了。
(注意!!!ssh localhost命令前后要敲两次才会显示Welcometo信息)
(在线安装:sudo apt-get install openssh-server)
然后在tools文件夹里面的linux文件夹找到SecureCRT.rar。打开SecureCRT(无需解压,直接点击),远程连接linux:
按照如下图操作:
PS:sudo:以超级管理员的权限来运行。
(sudo dpkg -i /home/lktest/ssh/*; 这句话的意思是安装ssh目录下的所有安装包,* 代表所有内容。pkg:package包,d:debin(软件的一种格式), i:install安装,sudo:以超级管理员的权限运行,do:运行,su:superuser)
2.安装vim编辑器(vi编辑器的高级版本):
2.1通过secureFXP远程连接linux,把vim文件夹拖拉上传到/home/lktest目录下面。
按照下图操作:
2.2 执行安装命令:sudo dpkg -i /home/lktest/vim/*;
安装完就可以使用vim命令来代替vi命令打开文件了。
3.10 SecureCRT乱码解决
用SecureCRT工具连接linux电脑,
当打开某个文件乱码时,按照如下操作。