Linux简介
Linux是一个Unix类操作系统,完全开发源码,多用户多任务,服务器(数据库服务器、Web服务器、应用服务器、日志服务器、图片服务器等等)、嵌入式领域(如路由器等需要Linux才能启动)、移动终端(比如安卓手机等、平板),Linux主流版本有:RedHat、CentOS、Ubuntu、SUSE、FreeBSD
安装Linux系统(选择性掌握)
1)、安装虚拟机软件(VMware,注意不要随意卸载该软件,在Win7系统下建议安装8.0或9.0)
2)、用虚拟机模拟电脑(四类操作系统:windows、Linux、Mac、Dos)
3)、安装Linux系统(掌握)
Linux分区实际上是划分目录结构(Linux只识别文件和目录),必须有"根目录(/)"和"交换目录(swap)"
交换目录(swap):提供虚拟内存,当电脑内存不足,交换目录所占用的磁盘空间会当做虚拟内存来使用
磁盘8G(/dev/sda表示一个SCSI接口的硬盘,/dev/hda表示一个IDE接口的硬盘):
swap: 1G
/: 剩余的全部空间
注:安装Linux操作系统,至少要有8G的磁盘空间(也就说给虚拟电脑至少要分配8G的磁盘空间)
Linux超级管理员账号是:root
Ctrl+C终止一条命令
CTRL+Z停止进程并放入后台
jobs 显示当前暂停的进程
bg %N 使第N个任务在后台运行(%前有空格)
fg %N 使第N个任务在前台运行
默认bg,fg不带%N时表示对最后一个进程操作!
基本命令
4条最简单的命令:
ls / ll / ls -l #查看目录的内容
pwd #查看当前目录的绝对路径
cd #跳到指定位置
clear #清屏
示例:
[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系统是严格区分大小写
bash、csh、ssh
echo $SHELL 输出SHELL变量的值
shell命令行
#(表示超级用户)
$(表示普通用户)
root表示当前操作的用户
localhost表示主机名
~表示当前处在哪个目录中,~表示当前登录的用户的home目录(普通用户登录后默认进入到home目录)
路径: 表示文件或文件夹所在的位置
绝对路径:以 / 开头
相对路径:.表示当前目录;..表示当前目录的上一层
mkdir --help #查看命令的帮助信息
man mkdir #查看命令的详细帮助
一、常用管理命令:
1、reboot #重启
2、shutdown -h 0 或者 init 0 /(halt)#关机
PS:没有注销的命令哦^_^
3、cd 切换路径 change directory
cd - 回到上次所在目录
4、pwd 查看当前路径
5、whoami 查看当前用户
6、uname -r 查linux内核版本号
7、clear 清屏命令
8、tab键 用来路径补全功能
9、netstat -an 查找linux或者windows下所有的端口
二、文件管理命令:
1、ll (ls -l) 查看当前目录下有哪些文件或文件夹
ps: ls -l 的别名就是ll,以 - 开头的,表示文件;以d开头的,表示目录。
2、mkdir 文件夹名 创建文件夹,可以同时创建多个文件夹,如:mkdir d01 d02
3、mkdir -p ./first/second 创建多层文件夹 first和second都不存在情况下建目录
4、touch 文件名 #touch test.txt 创建文件
5、rmdir d101 #删除空目录d101
6、rmdir d102 d103 #同时删除两个空目录d102,d103
7、rmdir -p d104/d105/ #删除d105目录后,若d104是空的,则连d104一起删除
8、rm -rf 文件名或文件夹名 删除文件
9、cp 源文件路径/源文件名 目标路径 拷贝文件 #cp T01/test.txt T02/
10、cp -R 源目录名 目标路径 拷贝文件夹(把文件夹的所有内容一起拷贝)#cp -R T01 T02
-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;
-p :连同档案的属性一起复制过去,而非使用预设属性;
-r :递归持续复制,用于目录的复制行为;
-a :相当于 -pdr 的意思
11、查看文件命令:(install.log)
(1)more 文件名 �按回车一行,空格一页。不能向上下翻行。
(2)less 文件名 按回车一行,空格一页。可以通过上下键上下翻行。按q就退出。
(3)head -n 文件名 查看文件的前n行, n表示你要看的行数。
(4)tail - 文件名 查看文件的后n行
(5)cat 文件名 查看文件的所有内容
(6)cat -n 文件名 查看文件的所有内容,并显示行数
12、> 导入(复制) cat A > B 把A的内容导入到B(把原来的内容覆盖)
13、>> 追加导入 cat A B >>C 把A和B的内容导入C
14、mv 源文件名 目标文件名 文件改名或剪切文件(文件和文件夹一样操作)
#mv move.txt ./test01/mv.txt
15、对文件内容筛选查找,用管道加上:grep 搜索字符串
如:查找系统中有没有启用80端口: netstat -an | grep 80
练习:查找 ifcfg-eth0 中包含“OOT”字符串的信息
16、find 路径 参数 参数值
ps: 参数:-name 后面跟文件名
17、locate 文件名 根据索引表查找文件,效率高,但是需要经常更新索引表,使用updatedb更新索引表
18、wc -l 文件名 统计当前文件的行数 wc -l ./T01/tt.txt
-m 文件名 统计当前文件的字符数 wc -m ./T01/tt.txt
-c d01/f102 统计当前文件的的字节数 wc -c ./T01/tt.txt
三、压缩管理
压缩管理:包(.tar)、压缩文件(.gz)、压缩包(.tar.gz 或 .tgz)
#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/目录中
压缩:
gzip只能压缩单个文件,不能压缩目录、也不能同时压缩多个文件
压缩比:1表示压缩比最小;9表示压缩比最大
2G --> 1G(压缩比小,压缩速度快)
2G --> 500M(压缩比大,压缩速度慢)
gzip -1 f101 #将f101压缩,形成压缩文件f101.gz
gzip -9 f101 #将f101压缩,形成压缩文件f101.gz
查看压缩包:
gzip -l f101.gz #查看压缩文件f101.gz的压缩信息,小写字母l
解压:
gzip -d f101.gz 或 gunzip f101.gz #解压f101.gz文件
对包进行压缩:
tar -cvf t101.tar f101 #首先打包操作
gzip -9 t101.tar #然后将包压缩,最终形成压缩包t101.tar.gz
tar命令只有打包功能,没有压缩功能,它是借助gzip进行压缩
打包并压缩:
tar 参数 目标文件路径和包名 被打包的文件名称
tar -czvf t101.tar.gz T101 #将目录和文件打到当前目录下的t101.tar.gz压缩包中
tar -czvf /opt/t101.tar.gz T101 #将目录和文件打到/opt/t101.tgz压缩包中
tar -tzvf ./t101.tar.gz #查看t101.tar.gz压缩包中的内容
tar -xzvf t101.tar.gz #将t101.tar.gz压缩包中的内容释放到当前目录中
tar -xzvf t101.tar.gz -C /opt/d102/ #将t101.tar.gz压缩包中的内容解压到/opt/d102/目录中
#针对windows平台下的zip压缩包的解压
unzip -d d101/ f101.zip #将f101.zip解压到d101目录下
四:网络配置
ifconfig -a #查ip信息
ping #测试网络是否连通
setup #配置ip、防火墙、服务等信息
service network restart(start\stop) #重启服务
centos7
systemctl restart(start\stop) network
虚拟网卡桥接连接方式
hostname #输出主机名
客户端工具(远程连接Linux服务器):crt、xshell、ssh、puty,通过SSH2(端口是22)协议远程连接到Linux服务器(SSH2协议是在安装Linux操作系统时自带的协议),前2个最常用,支持中文,后2个不支持中文
从一台服务器远程访问另一台服务器
ssh 被访问的机器的用户名@被访问的机器的IP
ssh [email protected]
退出:logout
scp #远程复制文件(夹)
scp -r [email protected]:/root/install.log /root/
五:组&用户&权限
组管理:( cat /etc/group ,查看当前系统存在多少个组)
groupadd g1015 #组必需要有组id,如果没有指定组id,则系统自动分配唯一的组id
groupadd -g 499 g1015 #指定了组id,则系统不会自动组id
groupmod -n g1066 g106 #将g106更名成g1066
groupmod -g 498 g10166 #将组g10166的id更改成498
groupdel g10166 #删除组g10166,若组中有用户,若组中包含用户,则不能删除组(必须确保组是空的才能删除组)
用户管理:(/etc/passwd存储用户基本信息、/etc/shadow存储用户密码信息)
一个用户可以拥有多个多个组:主组(一个有且只能有一个主组)和附属组(0到多个附属组)
用户的密码若是以*号或!开头,则表示该用户不能登录Linux操作系统
useradd u101 #用户登录后,默认进入到其home目录,home目录在/home/目录下(root用户的home目录是/root)
passwd u101 #passwd默认给当前用户设置密码,密码=字母+数字+下划线(_),超过8位,设置密码时,不会显示出来
su - u101 #切换用户
usermod -L u101 #锁定用户,即用户不能登录
usermod -U u101 #解锁用户
userdel -r u101 #彻底删除用户
usermod -a -G groupA user #将user用户加到groupA组中
groups 用户名 #查看用户所在的组
#id u101 #查看用户信息:如uid、所有的组信息等等
权限:Linux中通过控制每一类(有3类用户)用户对文件/文件夹的读、写、执行来实现权限控制
chmod 权限 文件名
rw_rw_r__: 前三个字符表示拥有者的权限,中间三个字符是组权限,后面三个字符其他人。
r: read 可读
w: write 可写
x:execute 可执行
r用数字4表示,w用数字2表示,x用数字1表示。
drwxr-xr-x 2 root root 4.0K 11-06 18:30 Desktop
u:所属用户
g:所属用户所在组的用户
o:组以外的用户
chmod u-w,g+w,o=r Desktop/ #执行完后变成dr-xrwxr--
d:表示该文件为文件夹
第一个rwx,表示该文件所属的用户对其所拥有的操作权限
第二个rwx,表示与该文件所属用户在同组内的用户对其所拥有的操作权限
第三个rwx,表示不与该文件所属用户在同组内的用户对其所拥有的操作权限
第一个root:表示该文件夹属于哪个用户
第二个root:表示该文件夹属于哪个组
drwxr-xr-x(一个组中可以包含0到多个用户)
d表示是个普通文件夹,-表示普通文件
rwx:文件拥有者具备的权限(u),7, 7-2
r-x:文件所属组中的其他用户所具备的权限(g),5, 5+2
r-x:其他用户所具备的权限(o),5, 4
#r=4;w=2;x=1,755
chmod -R 574 Desktop/ 等同于 chmod -R u-w,g+w,o=r Desktop/ (-R表示文件夹及其所有子内容都会发生更改)
最大是777(drwxrwxrwx),最小是000(d---------)
chmod 777 Desktop/ 等同于 chmod a=rwx Desktop/ #a代表所有用户
更改文件的属主:
1、更改单个文件的属主:
语法:chown 用户名 文件名
chown wsg echo.sh
2、更改文件夹的属主:
语法:chown -R 用户名 文件名
chown -R u101 Desktop/ #单独更改文件夹的拥有者(-R表示文件夹的所有子内容全部更改)
3、更改单个文件的属组:
语法:chgrp 组名 文件名
chgrp g1015 echo.sh
4、更改文件夹的属组
语法:chgrp -R 组名 文件名
chgrp -R g1015 Desktop/ #单独更改文件夹的所属组
5、同时更改文件的拥有者和所属组
语法:chown 用户名:组名 文件名
chown u101:g1015 install.log.syslog #同时更改文件的拥有者和所属组
6、同时更改文件夹和文件夹下的所有内容的拥有者和所属组
语法:chown -R 用户名:组名 文件名
chown -R u101:g1015 test01 #同时更改文件的拥有者和所属组
六:扩展命令:
cal #查看日期
date #查看时间
who #查看有哪些用户登录了系统
whoami #查看当前是哪个用户登录了系统
history #查看历史命令
less f101查看文件,按v键进入vi编辑器,:wq保存退出 :q! 强制退出
grep zpp /etc/passwd #到/etc/passwd文件中查找zpp字符串
grep -n "root" /etc/group #查看/etc/group文件中包含root的行并显示行号
cat install.log | grep isdn4k #到install.log文件中搜索内容:isdn4k(grep "isdn4k" install.log)
du -h 文件名 #查文件或目录的大小
#查看文件夹大小 du -h T01
#查看文件大小 du -h tt.txt
echo "" > f101 #清空文件f101中的内容,但仍然有一空行 (>是定向输出符,即将内容输出到指定位置;>>是追加符号)
cat /dev/null > f101 #清空文件f101中的内容,不会有空行
chkconfig --list #列出所有服务(相当于windows下的services.msc所列出的内容)
tcpdump -X -s 0 -w test.cap port 1813 #抓包命令
ps #查看当前终端正在运行的进程
ps -ef #查看系统正在运行的进程
ps -ef | grep bash #查看系统正在运行的进程名包含bash的进程(即查看指定用户的进程)
[root@localhost ~]# ps -ef | grep wushigui
root 3744 2576 0 11:25 ? 00:00:00 sshd: wushigui [priv]
wushigui 3746(当前进程号) 3744(父进程号) 0 11:25 ? 00:00:00 sshd: wushigui@pts/2
wushigui 3747 3746 0 11:25 pts/2 00:00:00 -bash
kill -9 pid #强制终止(pid表示进程号,可以用ps命令查看到进程号)
top #查看当前系统的资源使用率(默认是5秒刷新一次,相当于windows的资源管理器)
d 强制踢出已登录用户:
w #查看在线用户
方式一:
ps -ef | grep 用户名 #查到用户登陆的进程号对应的pid
kill -9 登陆进程号
ps -ef | grep test
kill -9 3611
方式二:killall -9 -u 用户名
killall -9 -u test
方式三:如果一台服务器有在多处用同
diff 文件1 文件2 #比较两个文件的内容
df -h #查磁盘信息
free -m #查内存
sed -ne '3,30p' termp #查看文件制定范围的行(例:第3行到第30行)
awk -F : '{print $1, $5}' /etc/passwd #查看/etc/passwd文件中的第1列、第5列(-F :表示用:号分隔,默认是空格分隔)
awk -F : '{print $1, $5}' /etc/passwd > f101
七:Vi命令扩展(命令模式下的操作):
三种模式:(1)命令模式
(2)编辑模式
(3)末行模式
三种的切换:
命令模式切换到编辑模式:输入i/a。
编辑模式退到命令模式:esc
2、末行模式是以冒号开头。注意:末行模式必须是在命令模式下操作。命令:
(1):set nu 显示行号
(2):set nonu 不显示行号
(3):w 保存
(4):q 退出
(5):wq 保存加退出
(6):n n行数 跳转到指定行
(7):q! 强制退出
(8):w 文件名 另存为
用命令:set ff? 可以看到dos或unix的字样.
用:set ff=unix把它强制为unix格式,也可以用sed 这样的工具来做:
(9):n1,n2s/需要替换的字符串/替换字符串/参数
n1表示从第n1行开始,表示一个具体的数字,比如:1
n2表示从第n2行结束,表示一个具体的数字,比如:20
参数:g表示所有找出字符都替换没有确认。
c表示每一次都确认
i表示忽略大小写,但是i需要跟c或是g一起使用。
:s/is/IS/ #替换当前行第一个is为IS
:s/is/IS/g #替换当前行所有is为IS
(n为数字,若n为点好(即.),表示从当前行开始到最后一行)
:n,$s/is/IS #替换第n行开始到最后一行中每一行的第一个is为IS
:1,5s/is/IS #替换第1行开始到第5行中每一行的第一个is为IS
:n,$s/is/IS/g #替换第n行开始到最后一行中每一行的所有is为IS
:1,$s/is/IS/g #替换第1行开始到最后一行中每一行的所有is为IS
3、命令模式下的命令:
(1)G 到末行 *
(2)gg 到首行
(3)$ 到行尾 *
(4)^ 到行首
(5)ngg 跳转到n行
(6)dd 删除一行,光标所在行
(7)ndd 删除n行,从光标所在行向下删除n行
(8)u 撤销
(9)o 新增一行并进入到编辑模式,向下增加。如果是大写的o,就是向上增加。
(10)i 进入编辑模式,在光标前编辑 *
(11)a 进入编辑模式,在光标后编辑 *
(12)x 删除一个字符。 *
(13)D 删除当前光标所在位置到行尾的内容 *
(14)/搜索字符 字符串搜索,查找下一个,按n, 向下查找。如果向上查找,按N。 *
(15)yy 复制 *
(16)nyy 复制n行,从光标所在的位置往下复制 *
(17)p 粘帖 *