Linux基础与搭建

学习目标

  • 了解Linux的简介与安装
  • 掌握Linux常用的命令
  • 掌握Linux系统上JDK、Mysql、Tomcat的安装

 Linux简介

2.1 Unix简介

Unix是一个强大的多用户、多任务操作系统。

于1969年在AT&丁(美国电话电报公司}的贝尔实验室开发。

UNIX的商标权由国际开放标准组织(The Open Group)所拥有。

UNIX操作系统是商业版,需要收费,价格比Microsoft Windows正版要贵一些。不过UNIX有免费版的,例如:NetBSD等类似UNIX版本。

2.2 linux 简介

Linux起源于一个学生的简单需求。Linus Torvalds,Linux的作者与主要维护者,在其上大学时所买得起的唯一软件是Minix. Minix是一个类似Unix,,被广泛用来辅助教学的简单操作系统。Linus 对Minix不是很满意,于是决定自己编写软件。他以学生时代熟悉的Unix作为原型, 在一台Intel 386 PC上开始了他的工作。他的进展很快,受工作成绩的鼓舞,他将这项成果通过互连网与其他同学共享,主要用于学术领域。有人看到了这个软件并开始分发。每当出现新问题时,有人会立刻找到解决办法并加入其中,很快的, Linux成为了一个操作系统。值得注意的是Linux并没有包括Unix源码。它是按照公开的POSIX标准重新编写的。Linux大量使用了由麻省剑桥免费软件基金的GNU软件,同时Linux自身也是用它们构造而成。

Linux是一套免费的类Unix操作系统

Linux是一套免费使用和自由传播的类Unix操作系统,可以任意修改其源

Linux存在着许多不同的Linux、版本,但它们都使用了Linux内核。

Linux可安装在各种计算机硬件设备中,手机、平板、台式、笔记本、大型机和超级计算机。

Linux操作系统诞生于1991年10月5,芬兰大学生林纳斯一托瓦兹[Linux Torvalds)和后来陆续加入的众多爱好者共同开发完成。

Linux的特点:它是多用户,多任务,丰富的网络功能,可靠的系统安全,良好的可移植性。

Linux的基本思想有两点:第一,一切都是文件;第二每个软件都有确定的用途。

1.1 linux的分类

1.1.1 Linux根据市场需求不同,基本分为两个方向:

1)图形化界面版:注重用户体验,类似window操作系统,但目前成熟度不够

2)服务器版:没有好看的界面,是以在控制台窗口中输入命令操作系统的,类似于DOS,是我们部署服务器的最佳选择

1.1.2 Linux根据原生程度,又分为两种:

1)内核版本:在Linus领导下的内核小组开发维护的系统内核的版本号

2)发行版本:一些组织或公司在内核版基础上进行二次开发而重新发行的版本

1.2 Linux的主流版本

1.2.1 Redhatlinux

Red hat领导着Linux的开发、部署和经营,从嵌入式设备到安全网页服务器,它都是用开源软件作为Internet基础设施解决方案的领头羊。

Red Hat解决方案包括Red Hat Linux、开发人员和嵌入式技术,以及培训、管理和技术支持。(收费)

1.2.2 Ubuntu

Ubuntu(乌班图)是一个以桌面应用为主的Linux操作系统

Ubunt的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。为桌面虚拟化提供支持平台

1.2.3 Centos

CentOS是Linux发行版之一。

由Red  Hat Enterprise Linux提供的源代码编译而成。很多公司使用CentOS替代商业版RedHat 。Red Hat和CentOS差别不大,Red Hat Linux和Centos系统是免费的. Red Hat Linux服务是收费的』比如免费版本不支持在线升级

CentOS每个版本服务都是免费的.

安装虚拟机

2.1 什么是虚拟机

虚拟机:指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。可以使你在一台机器上同时运行二个或更多WindowsLINUX等系统。它可以模拟一个标准PC环境。这个环境和真实的计算机一样,都有芯片组、CPU、内存、显卡声卡网卡软驱、硬盘、光驱串口并口、USB控制器等

2.1.1 VMware Workstation(中文名“威睿工作站”)

  • 是一款功能强大的桌面虚拟计算机软件,收费的。VMware是全球桌面到数据中心虚拟化解决方案的领导厂商

2.1.2 Virtualbox

是一款开源虚拟机软件。VirtualBox、是由德国Innotek公司开发,由Sun出品的软件,在Sun被Oracle收购后正式更名成Oracle VM VirtualBox

2.2 安装虚拟机

双击打开,基本上傻瓜式安装,这里不在介绍。

2.3 虚拟机上安装centos7

2.3.1 创建配置虚拟机

2.3.2 打开虚拟机开始安装

先用鼠标点击,然后用上下箭头选中并回车。

按 回车 键

点开始安装

2.3.3 设置root密码

2.3.4 设置普通用户

安装完成以后,重启liunx

3 Linux 的目录结构

  • Bin存放可执行文件
  • Boot存放用于系统引导时使用的各种文件
  • Dev存放设备文件
  • etc 存放系统配置文件
  • Home 存放用户文件的根目录
  • Lib存放和文件系统中程序运行所需要的共享库及内核模块
  • Proc该目录中的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都在内存中,所以不占用磁盘空间
  • Usr应用程序存放的根目录usr/bin 存放应用程序。 Usr/share  存放共享数据 ,usr/local 存放软件升级包
  • Var 放置系统执行过程中经常变化的文件,如随时更改的日志文件var/log

4 Linux的基本命令

Linux基本没有图形化页面,一般使用命令去控制操作系统,类似dos命令。Linux命令很多,这里只介绍常用的命令。

4.1 目录管理

4.1.1 ls

作用:列出目录内   语法:Is[参数」【文件或目录]

常用: -a或-all列出所有文件和目录.包含隐藏的  -I使用详细格式列表,此命令非常常用  II  /home/ 显示指定目录下的内容  -t用文件和目录的更改时间排序。

-r反向排序

4.1.2 cd

作用: 切换目录 语法:cd 目录

常用: cd ~   换当前用户目录   cd /  切换到根目录   cd – 切换上一次访问的目录  cd .. 切换到上一级目录  cd   缺省当前用户目录

4.1.3 pwd

作用: 显示当前工作目录  语法: pwd

4.1.4 mkdir

作用:创建目录  语法:mkdir参数    -p父目录不存在情况下先生成父目录(parents)   -v显示命令执行过程中的详细信息 常用:mkdir –pv ./a/111

4.1.5 rmdir

作用:删除空目录, 必须是空目录  语法:rmdir 目录名  要想删除非空目录 需使用 rm –rf 目录名

4.2 文件浏览

4.2.1 cat     作用;显示文件内容        语法:cat 文件

4.3 文件或目录操作管理  复制、移动、删除、查找

4.3.1 cp  作用:复制文件或目录   语法:cp [参数] [源文件或目录] [目标文件或目录]

-r 递归处理 ,指将指定目录下的文件及子文件一并处理    常用: cp  –r ./a  ./c  将a 目录下的所有文件拷贝到c目录下

4.3.2 mv 作用:移动或更名现有的文件或目录 语法:mv [参数] [源文件或目录][目标文件或目录]

常用:mv  /a/a1.log   b/a1.log把a目录下的文件剪切到b 目录下    mv /a/a1.log b/b1.log 把a目录下的文件剪切到b目录下,并重新命名为b1.log

mv  a  b 把目录a 改名为b

4.3.3 rm  作用:删除文件或目录 语法:rm [-dfirv] [文件或目录]

-f 强制删除文件目录   -r 递归处理 常用:rm a.log  有询问是否删除 rm –f a.log直接删除,不用询问是否删除  rm –rf a.log 直接级联删除,不用询问是否删除

4.3.4 find

作用:查找文件目录  语法:find [目录][参数]        -name 指定字符串或寻找文件或目录的范本样式  常用:find /usr/ -name ‘ab*’

4.4 文档编辑

4.4.1 Vi 或vim 命令 作用:对文件进行编辑 语法:vim [文件名]

一般操作步骤如下:

1) 输入“vim文件名”进入“一般模式”

2) 按下“i”从一般模式,进入“插入模式”

3) 按下“esc”从“插入模式”退出到“一般模式”

4) 在“一般模式”下,输入“:wq 保存退出编辑。

常用命令:

4.4.2 创建文件

文件的创建(增)

命令:touch 文件名称  ----- 空文件

4.5 系统命令

4.5.1 grep

作用:用于过滤、搜索特定字符 ,可配合正则表达式使用  语法:grep [option] pattern [file]     -c 输出匹配的行数  -i  忽略大小写

4.5.2 ps

作用:用来查看系统进程信息 格式:ps [参数]   -e 显示所有进程  -f 显示UID,PPIP,C,STIME 信息

如:我们启动一个进程

查看该进程

重新打开一个终端

4336 就是该进程的端口

4.5.3 kill

作用:终止一个进程 语法:kill [参数][程序]  常用:Kill -9 进程的ID  9表示强制终止

如,终止上图中的ping 的进程

4.5.4 Ifconfig

作用:显示系统网络命令

常用:

4.5.5 ping

作用:测试网络是否连通   语法:pingIP地址

如:

4.5.6 tar

作用:压缩命令,文件解压缩

语法:tar 命令

一般压缩文件的后缀为.tar.gz

l 压缩

如把test 下的目录下的文件进行压缩,如下面命令

l 解压缩

把文件解压缩到当前目录

把压缩文件解压缩到指定的目录。-C 后跟 要解压缩的路径

C 字母

4.5.7 关机重启

重启:reboot

关机:halt

4.5.8 修改系统语言

Centos 7已经不采用/etc/sysconfig/i18n这一个文件来做配置(cent0s6.5 采用),而改为使用/etc/locale.conf这个来进行语言配置。

使用vim命令进去,vim /etc/locale.conf

进入以后只有简单的一句LANG="en_US.UTF-8" 这个配置

4.5.9 其它常用命令


#以操作防火墙为例子

启动一个服务:systemctl start firewalld.service  #防火墙
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed

配置firewalld-cmd

查看版本: firewall-cmd --version

查看帮助: firewall-cmd --help

显示状态: firewall-cmd --state

查看所有打开的端口: firewall-cmd --zone=public --list-ports

更新防火墙规则: firewall-cmd --reload

查看区域信息:  firewall-cmd --get-active-zones

查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0

拒绝所有包:firewall-cmd --panic-on

取消拒绝状态: firewall-cmd --panic-off

查看是否拒绝: firewall-cmd --query-panic

那怎么开启一个端口呢

第一步:添加

firewall-cmd --zone=public --add-port=80/tcp --permanent

(--permanent永久生效,没有此参数重启后失效)

第二步:重新载入

firewall-cmd --reload

查看

firewall-cmd --zone= public --query-port=80/tcp

删除

firewall-cmd --zone= public --remove-port=80/tcp –permanent

重启网络;

service network restart

4.6 文件权限

权限是Linux中的重要概念,每个文件/目录等都具有权限,通过ls -l命令我们可以 查看某个目录下的文件或目录的权限

示例:在随意某个目录下ls -l

r:代表权限是可读,r也可以用数字4表示

w:代表权限是可写,w也可以用数字2表示

x:代表权限是可执行,x也可以用数字1表示


属主(user)


属组(group)


其他用户


r


w


x


r


w


x


r


w


x


4


2


1


4


2


1


4


2


1

修改文件/目录的权限的命令:chmod

示例:修改/test下的aaa.txt的权限为属主有全部权限,属主所在的组有读写权限

其他用户只有读的权限

chmod u=rwx,g=rw,o=r aaa.txt

上述示例还可以使用数字表示

chmod 764 aaa.txt

4.7 虚拟机网络配置

共三种模式:Bridge桥接模式、NAT模式、Host-only仅主机模式:

4.7.1 桥接模式

虚拟机使用真实网卡进行通信,配置简单;只要和真实计算机在同一个网段内,就可以直接通信;局域网内如果有其他计算机,也可以进行访问。缺点:会占用网段内的一个IP地址。(类似于一台真正独立的计算机)

参考http://blog.csdn.net/ltr15036900300/article/details/48828207

4.7.2 NAT模式

使用虚拟网卡VMnet8进行通信;只能和本机进行通信;在此基础上,虚拟机可通过主机访问互联网

4.7.3 仅主机模式

使用虚拟网卡VMnet1进行通信;只能和本机进行通信;不能访问互联网。

参考:http://blog.csdnnet/ltr15036900300/article/details/4882820

VMware下centos桥接模式静态ip配置

4.8 远程连接工具 用ssh连接该静态ip

实际开发中,Linux服务器都有固定的机房,我们一般要通过远程的方式去连接Linux并操作它,Linux远程的操作工具有很多,企业中常用的有Putty、Xshell、secureCRT、SSH Secure等。

服务器上 ifconfig---得到主机ip,打开ssh连接输入

IP: --------

Root

22

1111111

1、 使用putty 连接

4.9 安装jdk      在ssh中上传下列文件安装

rpm与软件相关命令 相当于window下的软件助手 用来管理软件

4.9.1 卸载openjdk

Centos 默认安装了open jdk , 我们通过命令查看一下

输入 rpm -qa | grep java

-q :表示查询单个文件

-qa :表示查询所有

执行卸载命令: 卸载jdk 1.8 和jdk 1.7

rpm -e --nodeps java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64

rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.102-3.b13.el7_2.x86_64

rpm -e --nodeps  java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64

rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64

4.9.2 上传jdk 到 linux

l 通过工具把windows上的jdk上传到centos。该工具我们使用

点击上图进行 工具安装。

安装完成功以后,运行,输入地址和密码

l 把本机的jdk 上传到linux

页面左侧为windows内容,右侧为centos 目录,选择要上传的文件,右键上传即.

1.1.1 解压缩jd

把压缩文件解压到 指定的目录。 即 /usr/local/

tar jdk-8u144-linux-x64.tar.gz  -C /usr/local/

4.9.3 配置jdk

把下面的文件加入到profile 中,如上图


export JAVA_HOME=/usr/local/jdk1.8.0_144

export PATH=$JAVA_HOME/bin:$PATH

4.9.4 加载配置即使配置生效

source /etc/profile

4.9.5 测试 jdk配置是否成功

出现上面提示则表示成功

4.10 安装mysql

4.10.1 安装mysql

1.下载安装包

本教程提供mysql-5.6.37-linux-glibc2.12-x86_64.tar.gz

2.卸载系统自带的Mariadb

打开Terminal终端:

// 查询出来已安装的mariadb,mariadb是mysql 的一个分支

[[email protected] ~]# rpm -qa|grep mariadb

// 卸载mariadb,文件名为上述命令查询出来的文件

[[email protected] ~]# rpm -e --nodeps [查询出来的文件名]

3、删除etc目录下的my.cnf

[[email protected] ~]# rm /etc/my.cnf

4、执行以下命令来创建mysql用户组

[[email protected] ~]# groupadd mysql

5、执行以下命令来创建一个用户名为mysql的用户并加入mysql用户组

[[email protected] ~]# useradd -g mysql mysql

6、上传安装包

用工具上传到soft

7、把安装包解压放到 /usr/local/ 目录下(通过mv 要移动的文件  /usr/local/)

  1. 解压:tar –zxvf /soft/mysql-5.6.37-linux-glibc2.12-x86_64.tar –C /usr/local/
  2. 改名:切到local 目录下

8、将解压好的文件夹重命名为mysql

mv mysql-5.6.37-linux-glibc2.12-x86_64  mysql

9、进入安装mysql软件目录

[[email protected] ~]# cd /usr/local/mysql

[[email protected] mysql]# chown -R mysql:mysql ./       修改当前目录拥有着为mysql用户

[[email protected] mysql]# ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ 安装数据库

注:若执行以上最后一个命令出现以下问题:

FATAL ERROR: please install the following Perl modules before executing

./scripts/mysql_install_db:Data::Dumper

解决方法 :安装autoconf库

命令: yum -y install autoconf   //此包安装时会安装Data:Dumper模块

安装完成重新执行上述最后一个命令

重新回到上述第三个命令继续操作:

[[email protected] mysql]# chown -R mysql:mysql data 修改当前data目录的拥有者为mysql用户

到此数据库安装完毕!

4.10.2 配置MySQL

1、复制启动脚本到资源目录

[[email protected] mysql]# cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

2、增加mysqld服务控制脚本执行权限

[[email protected] mysql]# chmod +x /etc/rc.d/init.d/mysqld

3、将mysqld服务加入到系统服务

[[email protected] mysql]# chkconfig --add mysqld

4、检查mysqld服务是否已经生效

[[email protected] mysql]# chkconfig --list mysqld

命令输出类似下面的结果:

mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

表明mysqld服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用service命令控制mysql的启动和停止

命令为:service mysqld start和service mysqld stop

5、启动mysqld

[[email protected] mysql]# service mysqld start

6、将mysql的bin目录加入PATH环境变量,编辑 ~/.bash_profile文件

[[email protected] mysql]# vim ~/.bash_profile

在文件最后添加如下信息:

export PATH=$PATH:/usr/local/mysql/bin

然后按ESC键

继续 shift键加冒号打出来=>  :

接下来输入wq回车即可

执行下面的命令是修改的内容立即生效:

[[email protected] mysql]# source ~/.bash_profile

7、以root账户登录mysql,默认是没有密码的

[[email protected] mysql]# mysql -uroot -p

要输入密码的时候直接回车即可。

8、设置root账户密码为root(也可以修改成你要的密码)

mysql>use mysql

mysql>update user set password=password(‘root‘) where user=‘root‘ and host=‘localhost‘;

mysql>flush privileges;

9、设置远程主机登录,注意下面的your username 和 your password改成你需要设置的用户和密码

mysql> GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘root‘ WITH

GRANT OPTION;

10、如果windows客户端要访问mysql .需要执行防火墙的配置

4.10.3 配置防火墙

开放Linux的对外访问的端口3306


firewall -cmd --zone=public –add -port=3306/tcp --permanent

(--permanent永久生效,没有此参数重启后失效)

#重新载入


firewall -cmd –reload

4.11 安装tomcat

1)上传Tomcat到linux上

2)解压Tomcat到/usr/local下

3)开放Linux的对外访问的端口8080


添加

firewall-cmd --zone=public --add-port=8080/tcp --permanent    (--permanent永久生效,没有此参数重启后失效)

重新载入

firewall-cmd --reload

(--permanent永久生效,没有此参数重启后失效)

4)启动关闭Tomcat

进入tomcat的bin下启动:./startup.sh

进入tomcat的bin下关闭:./shutdown.sh

原文地址:https://www.cnblogs.com/LPJ-BLOG/p/12306542.html

时间: 2024-10-14 22:14:14

Linux基础与搭建的相关文章

Linux基础服务搭建及管理

20141010V1 一.网络基础概念: OSI七层协议 TCP/IP协议 三.局域网内常用服务搭建 远程连接服务器(取得shell进行工作) 文字接口明文传输:Telnet.RSH:文字接口加密:SSH:图形接口:XDMCP.VNC.XRDP 加密方法简介: 对称加密 公钥加密私钥解密 单向加密(1雪崩效应 2定长输出) MD5 SHA1 SSH--secure shell protocol 22号端口 Client --> Server 连接步骤:1 服务器建立公钥文件 2 客户端主动连接要

linux基础-VPN搭建

VPN服务搭建: linux端 1.  设置内核转发 sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g'  /etc/sysctl.conf sysctl -p      ===修改后生效 2.  下载pptpd服务 yum -y install pptpd 3.  设置允许登陆数量 echo -e "localip 10.0.0.61\nremoteip 192.168.1.234-238,192.168.1.245&quo

Linux基础网络搭建实验

一.实验目标 利用3台虚拟机,搭建vmnet2和vmnet3两个host-only网络,实现两个网络的互联 二.实验环境   内网 外网 网关 IP 192.168.0.10/24 202.3.4.10/24 eth0:192.168.0.254/24 eth1:202.3.4.254/24 GW 192.168.0.254 202.3.4.254   三.实验步骤 1.添加VMnet2和VMnet3,并取消其DHCP功能 2.内网虚拟机的设置 (1)解决网卡不一致的问题,为其设置静态IP.子网

linux基础环境搭建(2)

打开虚拟机,用Xshell连接之前,首先我们要获取IP的地址 先输入获取 IP的命令 ip addr 获取ipifup (网卡名字) #网卡启动ifdown (网卡名字) #网卡关闭 没有获取到的话 我们要开始按照下面的顺序排查故障: 按照上面的步骤,一步一步排除问题. 有的时候公司不一定全是Xshell 也有ssh 客户端  securecrt 刚搭的环境 我们需要做一些简单的优化: 首先是关闭防火墙 systemctl stop firewalld再取消开机启动的防火墙 systemctl 

大数据中Linux集群搭建与配置

因测试需要,一共安装4台linux系统,在windows上用vm搭建. 对应4个IP为192.168.1.60.61.62.63,这里记录其中一台的搭建过程,其余的可以直接复制虚拟机,并修改相关配置即可. 软件版本选择: 虚拟机:VMware Workstation 12 Pro   版本:12.5.9 build-7535481 Linux:CentOS-7-x86_64-DVD-1804 FTP工具:FileZilla-3.37.4 安装CentOS虚拟机 首先安装虚拟机,成功后重启电脑 新

Linux虚拟机上Hadoop基础环境搭建

1 主要步骤 配置网络 修改主机名 关闭防火墙 关闭SELinux 安装jdk 增加hadoop用户 配置ssh信任 配置hadoop 集群部署规划 5台服务器, 一个主节点:nn1.hadoop, master (HA) 一个从节点:nn2.hadoop,slave 三个工作节点: s1.hadoop.s2.hadoop.s3.hadoop (work1     work2    work3) nn1.hadoop 机器作为操作机. whoami ifconfig 在实际生产里还应有操作机(跳

Linux基础概念-----touch一个新文件背后发生的事情

一个普通用户在Shell下执行了一条命令,这背后发生了什么事情,是个人的一些总结,如果有不对的地方欢迎搭建指正,谢谢! touch /tmp/test.txt ####################################################################################### tom在Shell中执行这条命令,Shell将命令发给内核,并且判断命令是否存在,通过文件系统上的元数据判断tom是否有权限执行,内核从内存中加载出mkdir的指令

Linux之LAMP搭建

Linux之LAMP搭建 简介: A:apache,web服务器,进程名:httpd M:mysql,数据库系统,进程名:mariadb p:php,脚本编程语言,可用于解析网页上的动态资源请求 作用: 提供web应用,构建web应用基础架构 优势: 灵活性:     技术上没有许可证方面的限制,能够以适合的方式灵活地构建和部署应用程序 个性化:     LAMP组建是开源软件,拥有大量的组建.提供额外的功能模块 成本低廉:     LAMP组建都是开源协议,只要遵循GPL协议,可以自由获取和免

asch相关的linux基础知识分享

本文针对的人群:会用putty.SecureCRT.xhsell等工具ssh连接到自己的asch服务器上,但不怎么会执行命令的人.高手请绕路~ 本文主要围绕受托人搭建.维护涉及相关的内容进行Linux基础命令的介绍,看完本文后,你能只用一个ssh远程工具完成asch见证人的搭建和维护,不需要再使用其它工具(如winscp等文件上下传工具) 对官方搭建文档(http://blog.asch.so/2016/07/12/asch-testnet-tutorial/  )的一个解读: wget:lin