Linux入门:
-------------------------------------------------------------------------
1、Linux的安装方式:
1)、单独安装(机器就装了一个Linux)
2)、多系统安装(Win7 + Win10 + CentOS6.4 + Ubuntu16.04)
3)、虚拟机(Win10装虚拟机(Vmware/Vbox...):在虚拟机里安装Linux等系统)
虚拟机类似于游戏对战平台,虚拟机里的系统类似于QQ游戏等。
2、自由软件特点
使用的自由
可以不受任何限制地使用软件
研究的自由
可以获得软件源代码、研究软件动作方式
散布的自由
可以自由复制软件及散布给他人
改良的自由
可以自行改良软件并散布改良后的版本
3、磁盘分区
硬盘按照分区的类型划分为:主分区、扩展分区(最多只能有一个)、逻辑分区;
主分区+扩展分区 数量不能超过4
扩展分区不能放数据,必须先划分逻辑分区,然后在逻辑分区放数据
4、设备文件名
在linux中,任何一个硬件都取有对应的设备文件名,常见如下:
IDE硬盘 /dev/hd[a-d]
SCSI/SATA/USB硬盘 /dev/sd[a-p]
光驱 /dev/cdrom或者/dev/hdc或者/dev/sr0
软盘 /dev/fd[0-1]
鼠标 /dev/mouse
5、文件系统类型
Linux常见文件系统类型:ext2/ext3/ext4
Windows常用文件系统类型:ntfs/fat32/exfat/fat16
其中:
ext2:最大支持16TB的分区和2TB的单个文件
ext4:支持1EB的分区和16TB的单个文件。
6、安装建议
0).系统安装方式
单独安装
多系统安装
虚拟机安装(学习阶段建议采用)
1).关于分区
至少需要为linux建立以下3个分区。
Swap分区:充当虚拟内存,当内存低于1G的时候,建议是内存的两倍,当内存大于1G的时候,建议和内存大小一样。
/boot分区:用于引导系统,存放内容不多,建议100M
/(根)分区 :存放大部分数据文件,尽量大,把除了/boot和swao的都交给/分区就可以了
2).安装过程系统安装类型:相当于吃饭的时候各种套餐
①.Desktop 带桌面
②.Minimal Desktop
③.Minimal 最小化,黑窗口
④.Basic Server 有常用服务,(推荐)
.....
3).安装后配置
①.安装了桌面,但是想设置启动进入字符界面: /etc/inittab 里面: id:5:initdefault--->id:3:initdefault
②.防止字符界面中文乱码: /etc/sysconfig/i18n 里面 LANG=zh_CN.UTF-8” 改为LANG=zh_CN.GB18030
常用命令:(3700多个)
--------------------------------------------------------------------------
1、命令格式: 命令关键字 [选项] [参数1,参数2,参数.....]
做饭 米饭 2斤/在姥姥家做
ls -a /
-l
长命令 / 短命令(推荐)
ls --all / ls -a
2、基础命令(系统相关)
uname 显示系统内容信息 -r(内核版本) -a(显示系统所有信息) -m是32试试64)
shutdown -h now 立马关机
halt 停机
poweroff 停电
reboot 重启
logout 注销
exit 退出当前系统,比喻远程登录到别的机器,会退出到自己的机器
echo 输出内容到控制台
日期:
date +%Y%m%d 显示日期
date +%H:%M 显示时间
Date “%Y%m%d %H:%M:%S”
date -s “mm/dd/yyyy hh:mm:ss” 修改日期时间
cal [month] [year] 显示日历
bc 计算器
+ - * / % ^ 运算功能
scale=n 小数位数(只适用于除法)
quit 退出
退出也可以按ctrl + C
clear 清屏
help命令,显示命令使用的帮助文档的,
外部命令: 命令 --help
内部命令:help 命令
man命令,显示命令使用的帮助文档的,
man 命令 按q退出帮助文档
磁盘命令:
df -h
fdisk -l
3、文件目录
pwd:显示当前目录
ls:显示文件或者目录信息
ls -l : 每行显示一个文件和目录信息,等价于 ll
ls -a : 显示所有文件,包括隐藏文件(Linxu中.打头的文件都是隐藏文件)
ls -h : 人性化显示文件信息,比喻能够显示文件的大小为多少M
组合使用:如ls -alh
cd:切换目录
若无参数,则返回宿主目录,否则切换到指定参数目录
上级目录:..
当前目录:.
根目录:/
mkdir:创建目录
mkdir dir1 dir2 dir3 ..... 同时创建多个文件夹
mkdir -p a/b/c/d 父目录不存在的时候创建父目录
rmdir:删除空目录,用的少
rmdir r1 r2 r3 ....
touch:创建空文件
touch file1 file2 file3.....同时创建多个空白文件
cp:复制文件
cp file1 file2 把文件1拷贝成文件2
cp file1 file2 ... dir : 把文件拷贝到目录下,支持通配符
cp -r dir1 dir2:把dir1及子目录及下面的文件复制到dir2
rm:删除文件(夹)
rm file1 file2 file3 .... 删除多个文件
rm a* 删除a打头的所有文件
rm -r 删除非空目录
rm -f 强制删除,不提示
rm -rf 强制删除文件或者文件夹(常用)
mv:移动文件或者是文件重命名
mv file1 file2 当file2不存在的实时,是重命名,当file2是一个目录并且存在的时候,是移动file1文件到file2
mv file1 file2 fil3 ... dir 移动文件到dir,支持通配符*和?
find:查找文件
find 路径 -name 文件名:根据文件名查找,支持通配符*和?
find 路径 -size [+|-] 大小 : 根据大小查找文件,注意单位是块,1块=0.5kb,如查找大于100M文件命令是:find –size +204800
4、文本查看命令:cat/more/less/head/tail/(vi/vim)
cat : 展示文件所有内,不适合内容过多的文本
more: 分屏查看
h(帮助) space(下翻屏) b(上翻屏) enter(下一行) q键(退出)
less 分屏查看(支持搜索,直接输入/content就可以,按n可以到下一个匹配内容)
less: 分屏查看,支持搜索()
e(下一行) y(上一行) f / space(下翻页) b(上翻页) q(退出)
head: 显示前n行,默认显示10行, head -20 文件
tail: 显示最后n行,默认显示10行, tail -20 文件 (查看日志)
5、链接命令ln:
软连接:ln -s 源文件/目录 连接名 : 相当于快捷方式
硬链接:ln 源文件 链接名 复制+同步
区别:
软连接比源文件小很多,硬链接和文件大小一样;
删除源文件,软连接就失效,硬链接可以继续使用
不能给目录创建硬链接。
6、gcc:编译c文件,如:gcc [-o 目标文件名] xx.c 如果没有-o,默认生成a.out
7、挂载命令: mount 硬件设备编号 挂载点(系统文件目录)
挂载步骤:
①.创建一个目录(挂载点),一般建议放在/mnt目录
②.执行挂载命令: mount /dev/cdrom /mnt/mycd
③.使用
④.卸载 umount 设备编号/挂载点 注意不能再挂载点目录里来卸载光驱。
系统账户命令
-------------------------------------------------------
1.相关文件
用户信息文件:/etc/passwd 没有存密码
用户密码文件:/etc/shadow
用户组文件:/etc/group
2.用户相关命令
添加用户:useradd/adduser 用户名
设置密码: passwd [用户名] ,root用户可以给别人设置密码,如果没有跟用户名,给自己修改密码,非root用户设置密码要求密码比较复杂,如: YSYHL9t
查看当前用户: whoami / who am i
查看所有已登录用户:who
查看所有登录用户记录:last
切换用户:su [用户名] 如果不给用户名,就代表切换到root
禁止用户:usermod -L 用户名
解禁用户:usermod -U 用户名
删除用户: userdel [-r] <username> ,如果添加了-r,彻底删除用户相关信息,比喻宿主目录
3.用户组相关命令
1).添加用户的时候,默认会添加一个组,组名就是用户名
2).自己添加用户组,groupadd 组名
3).删除组:groupdel 组名
4).修改用户所在组:usermod -g <groupname> <username>
5).指定初始组:useradd -g <initial_group> <username>
4.发送消息
write username 给单人发
wall "信息" 给所有用户发信息
5.文件权限
认识权限:
d rwx r-x r-x
4+2+1 4+1 4+1
rwxr-xr-x ==== 755
第一组:文件类型 , d(文件夹) ,-(文件,硬链接) ,l(链接)
第二组:文件所有者的权限
读(r)、写(w)、执行(x),如果对应的地方是-,代表不具备相应权限
第三组:用户所在组具备的权限
第四组:其他人具备的权限
修改权限:
加权限 :chmod u|g|o|a+r|w|x 文件名,而且可以任意组合: u(用户),g(组),o(其他人),a(所有人)
如:chmod ugo+rwx a.txt
减权限 :chmod u|g|o|a-r|w|x
数字方式修改:chmod 权限数字组合(如:777) 文件
Vim编辑器:
-------------------------------------------------------
1.从命令模式切换到编辑模式: i(在光标前插入),I(当前行首插入), a(光标后插入),A(行末插入),o(下一行插入),O(上一行插入)
2.从命令模式切换到末行模式:按:
3.从末行或者是编辑模式切换到命令模式,esc
4.在末行模式下:
:q(已保存或未更改)
:wq(保存后退出)
:q!(不保存修改并退出)
6.命令模式常用命令:
^ :到行首
$ :到行尾
:set nu 显示行号
:set nonu 隐藏行号
6G 或者 :6 : 光标定位到第六行
dd : 删除当前行
3dd:从当前行开始删除3行
:3,5d : 删除第3到第5行
u:撤销操作
yy:复制当前行
3yy:从当前行开始复制3行
p:粘贴到下一行
P:粘贴到上一行
G:跳到文件末尾
/内容: 搜索,按n切换到下一个匹配的地方
:%s/old/new/g:全文把old替换成new
:13,16/old/new/g:把13到16行之间的所有old替换成new
7.vim:增强版的vi,编辑的时候带有颜色
网络配置:
-------------------------------------------------------
1.电脑要想上网,必须有网卡,虚拟机有虚拟网卡
2.命令
ifconfig :
①.查看网卡信息
②.设置ip : ifconfig 网卡名 ip地址 临时生效,重启机器就失效
hostname :显示主机名
route: 查看网关
ping : ping [-c 次数] ip地址(如:172.24.25.2) : 连通性测试,默认就一直测试,需要按ctrl+C终止,可以使用-c选项连指定测试次数
traceroute 地址 : 到某个机器之间的所有路由信息
dhclient : 动态分配ip
如果已经执行,可以使用pkill dhclient杀死dhclient进程,然后再执行dhclient来生成ip
重启网卡:service network restart
3.永久修改ip:
①.netconfig | setup (界面,不推荐)
②.修改/etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=....
IP写法:
(桥接模式)执行dhclient获取一个动态ip如172.24.25.x ,我们要写的ip是172.24.25._ ,_ 只能是1到254之间,不要和主机ip冲突
之后service network restart 重启网卡
4.虚拟机网络模式:
NAT模式:vmnet8,访问外网的时候借助于宿主机的网卡
桥接模式:宿主机(192.168.1.1)/虚拟机(dhclient : 192.168.1.2),虚拟机相当于真实的物理机器,能够连外网。静态IP:不能接入互联网,所以不能上网
仅主机:虚拟机使用虚拟网卡vmnet1,虚拟机ip不能够被外网识别,不能和外面通讯,只能和宿主机或者是其他虚拟机之间进行通讯。可以在本机随便设置IP地址,设置成1.1.1.1/6.6.6.6 每位数字在1-255之间
5.防火墙:拦截未授权访问
临时生效:
service iptables stop 关闭
service iptables start 启动
service iptables status 查看状态
service iptables restart 重启
永久生效:
chkconfig iptables on
chkconfig iptables off
6.ssh服务:用于远程连接,如xshell,winscp
service sshd status 检测
service sshd start 启动
service sshd stop 停止
service sshd restart 重启
7.改机器名
vim /etc/sysconfig/network
修改HOSTNAME的值
8.修改主机名/ip的映射关系
vim /etc/hosts
下面添加:
ip 机器名(理论上随便取)
软件安装
-------------------------------------------------------
1、软件包的分类:
源码包:源代码,.c .h ,不能直接使用,需要先使用gcc和make编译生成可执行程序
二级制包:多半是可执行程序
2、软件包提供方式:
tar包:压缩包 xxx.tar xxx.tar.gz
rpm包:相当于exe,我们需要安装 ,在redhat或者是centos
yum:管理rpm包的一种工具
dpkg包:ubuntu/mac 相当于exe
bin包:直接使用的
3、tar安装
1).命令
-c 建立新的归档文件
-x 从归档文件中解出文件
-z 调用gzip来压缩归档文件
-v 处理过程中输出相关信息
常见组合:
压缩文件:
tar -cvf 目标文件名.tar 要被压缩的文件 压缩文件成tar包
tar -zcvf 目标文件名.tar.gz 要被压缩的文件 压缩文件成tar.gz包
解压文件:
tar -xvf 源文件.tar [-C 目标位置] 解压文件,如果没有指定-C,就解压到当前目录,
tar -zxvf 源文件.tar.gz [-C 目标位置] 解压文件,如果没有指定-C,就解压到当前目录,
2) 安装示例
A: 二进制包(jdk)
①.解压
②.配置环境变量(/etc/profile)
vim /etc/profile
在最后面加入:
export JAVA_HOME=/app/jdk1.8.0_144
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
保存退出
source /etc/profile 让配置生效
java -version 来检测
B:源码包(redis后续)
C:tomcat安装
①.解压tomcat
②.启动:
cd /app/apache-tomcat-7.0.73/bin
./startup.sh
③.测试:在主机浏览器输入:虚拟机ip:8080 回车看到猫
④.关闭:./shutdown.sh
4、rpm安装包
1).命令
-i 安装软件
-h 显示安装进度
-U 升级安装
-v 检测套件是否正确安装
常用组合:
安装:
rpm -ivh 安装包
卸载:
rpm -e 软件包 [--nodeps(忽略依赖)]
rpm -q 查询 -qa(查看所有已经安装了rpm包)
2).软件包的获取
①.网上下载
②.光盘(CentOS-6.4-x86_64-bin-DVD1.iso其实已经有很多预置的rpm包)
3).相关命令
管道命令 : 命令1 | 命令2 , 把命令1的结果当做命令2的输入
文本查找命令: grep [-i] abc 查找abc -i选项表示忽略大小写
4).依赖:rpm包安装会有依赖问题,如要装a,a依赖了b,c,就需要先装b,c,然后再装a
树形依赖: a->b->c->d a->b表示a依赖b ,解决办法:按照d,c,b,a安装
环形依赖: a->b->c->d->a 解决办法:rpm -ivh a b c d 同时安装
5).yum:解决rpm软件安装复杂的依赖关系
①.安装:yum -y install 软件名
默认会联网安装
②.本地yum源配置
a.挂载光盘
b.让远程yum源失效
把/etc/yum.repos.d/
CentOS-Base.repo /CentOS-Debuginfo.repo/CentOS-Vault.repo
删除或者重命名
c.编辑CentOS-Media.repo
baseurl=file:///mnt/mycd
# file:///media/cdrom/
# file:///media/cdrecorder/
gpgcheck=1
enabled=1
d.可以像联网一样安装软件了,注意到挂载点/Packages执行yum -y install 安装
③.yum remove 软件(尽量别用)
6).安装示例:
①.gcc
a.配置本地yum源(或者是联网)
b.执行yum -y install gcc (如果是本地yum源,请到/mnt/mycd/Packages)
②.mysql(tar包里面放了好多的rpm包)
a.解压
b.执行rpm -qa | grep mysql查看已经安装的mysql,
rpm -qa | grep -i mysql 不区分大小写查看已经按照的mysql
c.卸载已经安装的mysql : rpm -e mysql-libs-5.1.66-2.el6_3.x86_64 --nodeps
d.安装: rpm -ivh MySQL-client-5.5.48-1.linux2.6.x86_64.rpm MySQL-server-5.5.48-1.linux2.6.x86_64.rpm
e.启动:service mysql start/stop(停止)/restart(重启)
f.设置:/usr/bin/mysql_secure_installation
g.登录mysql -u root -p
h.设置远程用户连接权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges;
shell
Linux 的批处理 写脚本;
系统管理
-------------------------------------------------------
1、系统运行级别
在Linux系统中,使用数字0-6分别代表系统中的7个不同的运行级别
0:停机 (不要设置成默认)
1:单用户模式,用于root用户对系统进行维护,不允许其他用户使用主机
2:多用户模式,此时不能使用网络文件系统
3:完全多用户模式,通常此时主机作为服务器使用
4:未用,系统保留
5:图形界面多用户模式
6:重启 (不要设置成默认)
2、运行级别相关命令
runlevel : 显示当前运行级别
init [0-6]:切换运行级别
修改/etc/inittab文件确定启动时默认级别
3、进程管理命令
ps -ef|-aux : 查看当前活跃进程 进程配合 | grep 进程搜索
top : 跟踪进程实时变化,需要按q退出
pstree: 显示进程树
kill pid 杀掉进程
-9强制执行 (kill -9 进程号)
-1 重启
–t 终端号 踢终端 (用w查看登录用户)
killall 进程名 根据进程名杀
pkill 进程名 根据进程名杀
chkconfig --list 服务名 查看服务在各个运行级别的启动状态,如:chkconfig --list iptables
shell
-------------------------------------------------------------
1.linux可执行程序(脚本)以.sh结尾,说白了,可以把shell脚本理解为一组命令的集合
2.执行脚本:给脚本添加x权限 ,
执行:
脚本在当前目录:./脚本
在其他目录:目录/脚本
bash 脚本名
其他:
-------------------------------------------------------------
1.重定向命令>或者>>
如:echo "hehe" > a.txt 就是把a.txt内容替换为hehe
echo "hehe" >> a.txt 是把hehe追加到a.txt
2.新建文件的方式
touch
vim / vi
echo ""> m.txt
3.软件
1). vmware / vbox : 虚拟机, 相当于一台机器(废铁)
2). 远程登录工具:xshell,SecureCRT,PTY 登录机器敲命令 ,和机器本身的黑窗口作用一样。SSH服务
远程拷贝工具:winscp,FileZilla... 用于在不同的机器上互相拷贝文件
4.远程登录命令
ssh 账号@机器名或者ip
5.远程拷贝命令
scp [-r] 本机文件 账号@机器名或ip:/文件夹
-r选项代表拷贝文件夹
/文件夹如果不指定,会拷贝到账号的宿主目录
set nu 显示行数
:行数 直接跳到对应行数
df-h 磁盘占有
top 显示CPU 占有 磁盘占有
第一位 是d 是文件夹 _代表文件
more 文件名 查看文件
tail - f 查看文件写入
echo "">> 文件名 向文件写入信息