linux入门笔记

Linux

一、linux入门了解

1、操作系统

1)服务器:本质就是计算机
硬件:性能优越
软件:操作系统
2)桌面:
dos→windows
unix→mac   linux
3)服务端:
windows
linux

2、什么是操作系统?

OS,管理硬件和软件资源的程序

3、什么是linux

1)开源免费的的类unix操作系统,主要用于服务器端
开源:开放源代码(可以看到底层代码)
mysql:GPL(开源软件许可证)
2)支持多用户、多任务、支持多线程和多CPU
3)linux兼容unix常用的工具、应用程序和网络协议

4、Linux产生背景

1973年,unix产生(闭源、收费)
1983年,理查德·斯托曼发起自由软件运动(GNU计划)
GPL:GNU    通用公共许可证,可以自由“使用、复制、修改、发布”
1990年,整个GNU计划已经产生很多自由软件,GCC(编译器)bash(命令行界面)等
1991年10月5日,linux(内核)在GPL许可证下正式发布
linux内核:linus,http://www.kernel.org
1992年linux内核和GUN软件正式结合,形成了GUN/Linux操作系统,简称linux操作系统

5、Linux优点

分时操作系统
多数网络协议支持(http,ftp,sftp,smtp,ssh等)、方便的远程管理
强大的内存管理和文件系统管理(一切皆文件)
安全性和稳定性

6、Linux系统架构

内核:主要提供系统服务(不能被直接调用)
shell:壳,接口/界面
命令行shell——linux:sh,bash 
Windows:cmd
图形化shell——linux:gnome,kde

7、内核和发行版

内核:硬件和软件进行交互的平台,主要提供系统服务(不能被直接调用):内存,io,文件系统,进程管理
发行版:内核+外围基础软件(商业公司/社区)
REDHAT:RHEL  ENTOS
DEBIAN:DEBIAN  UBANTU

8、虚拟机软件

虚拟机:利用虚拟化技术来模拟完整的计算机系统
vmware,virtualbox(oracle)

二、centos的安装

三、Linux文件系统和目录结构

1、文件系统

文件系统确定数据存储的方式
windows:NTFS
linux:centos6 ext4 /  centos7 xfs

2、目录结构

目录树:目录+普通文件
linux操作系统没有文件扩展名称,添加后缀只是为了方便管理

常见目录

  • /:根目录,存放具体特定功能目录
  • /bin: /sbin: /usr/bin: /usr/sbin: 可执行二进制文件(命令)
  • /root:root用户的家目录
  • /home:普通用户的家目录(每新建一个普通用户就会在该目录下创建一个同名的文件夹保护该用户独有信息)
  • /dev:设备目录,外部设备连接到linux系统将会以文件的形式存储在dev目录中(cd.dvd–>sr0(cdrom))
  • /etc:系统配置文件存放目录
  • /opt:第三方软件安装目录
    -/usr /usr/share:存放共享数据(区域) /usr/local:软件安装目录
  • /media: /mnt : 常见的挂载(将设备连接到一个已经存在的目录)目录
  • /var:存放变化的文件 /var/log存放log日志

3、终端和常见的命令

1)终端

[root@hadoop01 Decstop]#
【当前用户@主机名称 当前位置】 #:管理员  $:普通用户

2)命令

命令格式:

命令关键字 [选项] [参数]

选项格式:

短格式  -单词简写     ls -a
长格式  --单词全拼    ls --all
组合 ls -a -l => ls -al

3)帮助手册查看

man
使用q退出

4)常见的命令

①磁盘管理

  • cd:实现目录的切换
- 基本格式:cd 目录(绝对路径/相对路径)
- cd directory切换到当前目录下的子目录
- cd .. 返回上一级目录
- cd ../.. 返回上两级目录
- cd ~/cd:返回当前用户的家目录
- cd -:返回到上次的目录
  • pwd:打印当前路径
  • ls:展示目录内容(文件,目录)
ls [选项] [目录] 展示指定目录的内容
ls:展示当前目录内容
    -l:查看文件详细情况(可查看文件类型) 别名:ll
    -a:显示所有文件(包含隐藏文件)
    -A:显示所有文件(.和..不展示)
    -h:友好易读的方式展示,必须和-l一起使用  ll -h
    -R:递归展示所有文件
  • du:查看文件或目录磁盘的占用情况
du 文件
    -a:展示文件大小
  • df:查看磁盘占用情况

②文件管理

  • touch:创建文件或修改文件时间标记
  • file:查看文件类型(根据内容来决定)
  • mkdir:创建文件夹
    -p级联创建
  • cp:复制文件和目录
cp 源文件 目标文件
    -i 覆盖时提示
    -f 强制覆盖
    -r 递归复制
  • mv:移动文件和目录
mv 源文件 目标文件
    -i 覆盖时提示
    -f 强制覆盖
    -r 递归复制
    -u 目标文件不存在,源文件比目标文件要新的时候才移动
  • rm:删除文件或者目录
rm  目标文件
    -i 删除时提示
    -f 强制删除
    -r 递归删除整个目录树
    -rf 递归强制删除
  • rmdir:删除空目录
    -p级联删除
  • cat:打印输出文件
    -n 编号
  • tac:倒序打印输出文件
    -n 编号
  • head:查看开头的若干行(默认10行)
    -n number 指定查看行数
  • tail:查看末尾的若干行(默认10行)
    -n number 指定查看行数
    -f 显示最新追加内容
  • more:翻屏显示
  • less:翻屏显示
  • echo:输出指定字符串或者变量
    -e: 识别字符串中的特殊符号,但是后面的内容需要加上双引号或者单引号   \n  \t
    -n: 不换行输出
    echo ${PATH}:输出变量
    >: 重定向
        >覆盖   
        >>追加——标准输出,等于>>1
  • ln:创建连接
ln 文件 链接文件
    硬链接:
    软连接: -s  更加类似于windows的快捷方式
  • alias:查看别名
alias la='ls -a -l':设置别名
unalias la:取消别名
  • |: 管道符,把前面命令的输出当做后面命令的输入

③vi编辑器

文本编辑器,类unix操作系统自带文本编辑器,vim是增强版本(不一定自带)
#####如何使用
格式:vi 文件

1.vi编辑器的三种模式
命令模式
插入模式
底行模式:    w:保存 q:退出 !:强制退出
1.1命令行模式下的命令

1.1.1光标命令

  • 逐字符移动:↑↓←→ /hjkl
  • 逐个单词移动
w(W):单词首字母向后移动(大写忽略符号)
b(B):单词首字母向前移动(大写忽略符号)
e(E):单个字符
  • ():逐句移动(句子的表示.)
  • {}:逐段移动
  • G:文档的末尾 gg:文档的开始
  • $:行尾 0:行首

1.1.2操作命令

  • a:光标后一位插入 A:行尾插入
  • i:光标前插入 I:行首插入
  • o:光标下一行插入空白行 O:光标所在行插入空白行
  • dd:删除光标所在行,3dd当前光标起删除3行
  • yy:复制,3yy当前光标起复制3行
  • p:粘贴
  • u:撤销
1.2底行模式

1.2.1查找和替换

  • :set nu 设置行号
  • :set nonu 取消行号
  • :number 跳转到指定行
  • :/key 查找指定的内容(n:向后移动,N:向前移动)

1.2.2替换格式

:开始行,结束行 s/旧字符串/新字符串/g

④网络管理

1.网络管理命令
ifconfig:操作网络接口(centos6,centos7:ip addr)
	ifconfig:查看网络接口信息(ip地址,mac地址,子网掩码...)
		-a:查看所有的,包含停用的
	ifconfig 网络接口名称 up/down:启动/禁用网络接口
ping:查看网络的连接状态
host:通过域名查找ip		
netstat:查看进程端口的占用情况
	netsat -nltp:不显示别名/正在监听/tcp协议/显示程序信息
2.网络配置
宿主机和虚拟机之间进行通讯三种模式:
a、桥接模式:桥接模式就是将主机网卡与虚拟机的虚拟网卡利用虚拟网桥进行通讯
b、NAT模式:
①虚拟交换机和虚拟网卡(vmnet8)连接实现虚拟机连接宿主机;
②虚拟交换机和虚拟网卡利用NAT设备连接internet实现网络的访问
c、仅主机模式

修改NAT模式

配置一个静态IP,地址为192.168.2.101

重启网络服务 service network restart

网络接口信息:
vim /etc/sysconfig/network-scripts/ifcfg-eth0

2.主机名称
hostname:查看主机名称
hostname [名称]:修改主机名(临时的)
vim /etc/sysconfig/network (修改后重启)
3.主机映射(主机名称和ip的映射)
Linux:vim /etc/hosts
4.服务管理
service  服务名称(进程名称)start/stop/restart/status
service --status-all 查看所有服务状态
5.防火墙(iptables)
###控制网络“出入”行为
防火墙的基本操作(开启、关闭)
    service iptables start/stop
    chkconfig iptables on/off(开机自启/开机关闭)
###开放端口,关闭端口
    #删除规则
    iptables -D INPUT -p tcp -dport 22 -j DROP
    #加入一条input规则开放80端口
    iptables -I INPUT -p -tcp --dport 80 -j ACCEPT
6.linux启动级别管理
vim /etc/inittab
0:关机
1:单用户
2:多用户无网络
3:全功能多用户(命令行)
4:未使用
5:带有图形界面模式
6:重启
7.远程终端用户

⑤用户和组

5.1什么是用户和组

用户是权限的集合
组:用户组、组织和管理用户

5.2用户的分类

管理员用户:root(uid 0)
系统用户:保证系统运行用户,没有密码(uid——1~499)
普通用户:自定义用户,用户权利受限(uid:500~60000)

5.3查看用户

/etc/passwd
root:用户名
x:密码占位符
0:用户组id
0:组id
root:说明信息
/root:家目录
/bin/bash:shell类型

5.4操作用户

添加用户:useradd 用户(默认分配组,说明信息无)
修改用户:usermod
    -c:设置说明信息
    -G:指定组
    usermod -c 说明信息 用户名
    usermod -G 组名 用户名
删除用户:userdel
    userdel -r 用户名
passwd 用户:修改密码

5.5组的分类

系统组:存放系统用户
普通组:存放普通用户
私有组:创建用户时会创建同名组,此时该组只有一个用户就是私有组,如果向该组添加其他用户就会变为普通组

5.6查看组

cat /etc/group   cat /etc/gshadow

5.7组操作

创建组:groupadd
修改组:groupmod
    -n:修改名称
删除组:groupdel
添加和删除用户:
gpasswd -a hadoop spark:添加用户到组
gpasswd -d hadoop spark:从组中删除用户

⑥配置sudoer权限

1.修改权限文件 vim /etc/sudoer

root ALL=(ALL)   ALL
hadoop ALL=(ALL)   ALL

2.操作

sudo useradd aa

文件权限
drwxr-xr-x:文件类型和权限
链接数(普通文件:链接数1 文件夹:链接数是子目录个数)

文件类型和权限
d:文件类型(-:普通文件 d:目录 l:链接文件 b:二进制 c:字符设备文件)

rwx r-x r-x文件权限

u g o

header 文件 文件夹
r 可读取内容 可以ls
w 可修改文件的内容 可以在其中创建或者删除子节点
x 能否运行这个文件 能否cd进入这个目录


一、二进制发布包

软件已经针对具体平台编译打包发布,只要解压,修改配置即可

1.下载软件包并上传到linux平台(或直接在linux平台下载 wget)

put –r 包(ftp协议)

2.配置环境变量

查看:rpm -qa | grep jdk
卸载:rpm -e --nodeps 包

3.配置环境变量: /etc/profile

export JAVA_HOME=/opt/ jdk1.8.0_73
export PATH=${JAVA_HOME}/bin:${PATH}
source /etc/profile  执行/加载配置文件

4.验证

java –version

二、rpm安装包步骤(以mysql为例):

查询:rpm -q 程序包
      rpm -qa | grep -i(不区分大小写) 程序
      -l:查询安装位置
卸载:rpm -e 程序名称
    --force:强制卸载
    --nodeps:不考虑依赖
安装:rpm -ivh  程序名称(显示进程和过程)
1.上传包到linux平台
2.解包
3.查看旧的版本进行卸载
4.进行安装(server,client)
安装服务:
rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
初始密码:/root/.mysql_secret
查看是否安装成功: rpm -qa | grep -i mysql
5.启动服务
service mysql start
6.连接
mysql -uroot -p
7.设置密码
set password=password('root');
8.设置远程
第一种
将host中的localhost改为%
执行flush privileges;
第二种,使用命令授权
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
(*是指数据库.表;用户@远程绑定的ip;by后面设置的是远程访问的密码)
flush privileges;
9.无法正常启动
ps -aux | grep mysql
kill-9 pid  杀死进程
然后重新启动

完全卸载mysql——rpm方式安装的mysql

a)查看系统中是否以rpm包安装的mysql:
[root@localhost opt]# rpm -qa | grep -i mysql
MySQL-server-5.6.17-1.el6.i686
MySQL-client-5.6.17-1.el6.i686
b)卸载mysql

[root@localhost local]# rpm -e MySQL-server-5.6.17-1.el6.i686
[root@localhost local]# rpm -e MySQL-client-5.6.17-1.el6.i686
c)删除mysql服务
[root@localhost local]# chkconfig --list | grep -i mysql
[root@localhost local]# chkconfig --del mysql
d)删除分散mysql文件夹
[root@localhost local]# whereis mysql 或者 find / -name mysql
mysql: /usr/lib/mysql /usr/share/mysql

清空相关mysql的所有目录以及文件
rm -rf /usr/lib/mysql
rm -rf /usr/share/mysql
rm -rf /usr/my.cnf

三、yum在线安装

1.安装和卸载

yum install -y 程序名
yum install -y nc
yum remove -y 程序名

2.本地yum源配置

yum源:本质就是http服务器+rpm软件包+索引文件
yum源目录: /etc/yum.repos.d/
有个yum源(服务器),希望能从自己的yum源下载软件包

2.1配置本地yum源

搭建yum服务器
    web服务器(httpd)
    ios镜像挂载文件
        ln -s /mnt/cdrom/ /var/www/html/cdrom
在/etc/yum.repos.d/配置repo文件
   [Local]
    name=Local
    baseurl=http://192.168.2.130/cdrom
    gpgcheck=0
    enabled=1
检测:    
    yum repolist:查看yum
    yum list: 查看当前能够安装的程序列表

四、源码编译安装

五、进程管理

1.进程的概念

程序:静态(数据结构+算法+文档)
进程:程序的运行状态,是动态的(一个程序可能有多个进程)
线程:进程中执行任务的最小单元

进程在运行工过程中可能会产生新的进程,进程之间就会产生父子关系。产生进程的进程被称为父进程,被产生的进程称为子进程。

2.进程的生命周期

就绪状态:除了CPU之外其他资源已具备
运行状态:获取到CPU的时间片
阻塞状态:io阻塞操作

3.进程的管理命令

3.1查看进程

ps:查看进程的运行状态(CPU、资源、pid、当前状态)
    ps -aux:查看所有用户的进程
pstree:查看进程树(能够查看进程继承关系)
    -p:能够查看pid
top:查看进程状态(定期更新状态)
jps:查看jvm进程(jdk中的)

3.2杀死进程

kill pid:杀死进程
kill -9 pid:强制杀死进程
pkill pname:杀死进程
pidof pname:根据名称来获取pid

3.3进程调度

ctrl+c:终止进程(只终止前端进程)
ctrl+z:挂起进程
fg:切换为前台进程
bg:切换为后台进程
jobs:查看任务

4.计划任务

at:服务名称atd,指定时刻或者延迟指定时间执行一次任务
crontab:服务名称crond,间隔固定时间周期执行。分时日月周

4.1crontab命令使用

-u:指定用户
-e:编辑某个用户的crontab文件内容。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:删除计划任务,从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。

4.2基本格式

基本格式 : 
*  *  *  *  *  command 
分  时  日  月  周  命令 
第1列表示分钟1~59 每分钟用*或者 */1表示 
第2列表示小时0~23(0表示0点) 7-9表示:8点到10点之间
第3列表示日期1~31 
第4列表示月份1~12 
第5列标识号星期0~6(0表示星期天) 
第6列要运行的命令

4.3计划任务文件(默认)

/var/spool/cron/

六、克隆虚拟机

1.快照

保留虚拟机的状态(备份)

2.虚拟机的克隆

创建链接克隆,占用的空间会较少

3.配置

3.1网卡设备(物理设备 mac地址)

vim /etc/udev/rules.d/70-persistent-net.rules
删除eth0,修改eth1位eth0,并将eth1的macid拷贝出来,以备配置网卡的时候使用
00:0c:29:8a:45:4a
00:0c:29:fa:5c:95

3.2网卡配置(eth0)

vim /etc/sysconfig/network-scripts/ifcfg-eth0
删除uuid
修改mac地址
修改ip地址

3.3主机名称

vim /etc/sysconfig/network

3.4主机映射

vim /etc/hosts

七、ssh免密登录

1.什么是ssh

安全外壳协议,主要目标实现计算机之间加密安全访问

ssh包含两个部分:
    ssh服务端:sshd的守护进程,占22端口
    ssh客户端:ssh程序,scp(远程拷贝),slogin(远程登录),sftp(远程数据传输)等

2. SSH认证机制

2.1基于口令认证(用户名和密码)
2.2基于秘钥认证
3.免密登录的实现
3.1.创建秘钥对(公钥和私钥)
ssh-keygen
3.2发送公钥到授权池
ssh-copy-id hadoop01

八、grep

grep是一种强大的文本搜索工具,他能使用正则表达式搜索文本,并把匹配的行统计出来

1.基本语法

grep 字符串 文件
grep a a.txt
cat a.txt | grep a

2.常见选项

-c:统计符合条件的字符串出现的总行数。 
-i:忽略字符大小写。
-v:显示没有”搜索字符串”内容的那一行。

你可能感兴趣的:(技术学习记录,Linux)