参考《02_Linux安装.docx》,目录
配置以下文件
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="none"
HWADDR="00:21:85:DF:C8:2E"
NM_CONTROLLED="yes"
ONBOOT="yes"
NETMASK="255.255.255.0"
IPADDR="192.168.200.101"
GATEWAY="192.168.200.2"
TYPE="Ethernet"
PEERDNS="yes"
USERCTL="no"
UUID="532ca90b-a106-48e3-8dc8-926eeb2f49ef"
快照克隆:
1、[root@node01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 // 修改Ip地址
2、[root@node01 rules.d]# rm -f /etc/udev/rules.d/70-persistent-net.rules //删除原来网络关联规则
3、[root@node01 rules.d]# vi /etc/sysconfig/network // 修改主机名
4、init 6(软重启建议使用,而reboot更是一个kernel级别的命令,不对应用使用shutdown脚本,只有在出问题的状况下或强制重启时使用reboot)
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.18.101
NETMASK=255.255.255.0
GATEWAY=192.168.18.2
DNS1=114.114.114.114
DNS2=8.8.8.8
启动网卡:service network start
如果是自动获取ip地址,请将上文的BOOTPROTO设置为"dhcp"
vi /etc/resolv.conf : nameserver 192.168.200.2
设置完成后,service network restart,重启网络服务。这个时候,ping一下看看是否有响应了。如果没用响应,那么建议将设置1里面的BOOTPROTO改为"dhcp",然后在ping。连上网后,安装下面的setup,用setup来设置网络,就简单多。
yum provides */bin/setup
yum -y install setuptool
yum install ntsysv system-config-firewall-tui system-config-network-tui
yum -y install wget
# 应用:
#爬虫获取网站的html数据方式: nutch,Python(主流),wget(c语言)
wget -o /tmp/wget.log -P /root/data --no-parent --no-verbose -m -D news.cctv.com
-N --convert-links --random-wait -A html,HTML,shtml,SHTML http://news.cctv.com
su #切换管理员用户
cd /etc/yum.repos.d/ #进入源目录
mv CentOS-Base.repo CentOS-Base.repo.bak #默认源改名,这样默认的就不用使用了。
wget #获得163的源
yum update #更新下,完事!
#selinux(security enhanced linux)安全增强型linux系统,它是一个linux内核模块,也是linux的一个安全子系统。 selinux的主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
vim /etc/selinux/config #文件中的SELINUX="" 为 disabled ,然后重启。
iptables也叫netfilter是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入、流出、流经服务器的数据包进行精细的控制。
****查看iptables状态:service iptables status
****开启/关闭iptables:service iptables start / service iptables stop
****查看iptables是否开机启动: chkconfig iptables --list
***设置iptables开机启动/不启动: chkconfig iptables on / chkconfig iptables off
原理:在iptables中有四张表,分别是filter、nat、mangle和raw每一个表中都包含了各自不同的链,最常用的是filter表。filter是iptables默认使用的表,负责对流入、流出本机的数据包进行过滤,该表中定义了3个链:
- INPOUT 负责过滤所有目标地址是本机地址的数据包,就是过滤进入主机的数据包。
- FORWARD 负责转发流经本机但不进入本机的数据包,起到转发的作用。
- OUTPUT 负责处理所有源地址是本机地址的数据包,就是处理从主机发出去的数据包。
要修改密码才能登陆:passwd hadoop 按提示输入密码即可
**为用户配置sudo权限
用root编辑 vi /etc/sudoers
#在文件的如下位置,为hadoop添加一行即可
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
[hadoop@shizhan ~]$ sudo useradd huangxiaoming
启动服务:/etc/init.d/vsftpd start
有了vsftpd,我们上传shell脚本或者软件就方便了。
以上配置默认无法使用root用户登录ftp服务器。
或者,lrzsz在linux里可代替ftp上传和下载
yum list|grep lrzsz
sudo yum -y install lrzsz.x86_64
# 首先安装lrzsz
yum -y install lrzsz
#上传文件,执行命令rz,会跳出文件选择窗口,选择好文件,点击确认即可。
rz
rz –y (参数 -y 如果linux上有相同的文件, 会覆盖)
#下载文件,执行命令sz
sz
#创建一个目录,用来挂载
mkdir /mnt/cdrom
#将设备/dev/cdrom挂载到 挂载点 : /mnt/cdrom中
mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom/
#取消挂载umount:umount /mnt/cdrom
远程登录:ssh 192.168.18.103
**查看主机名 hostname
****修改主机名(重启后无效) hostname hadoop
**修改主机名(重启后永久生效) vi /etc/sysconfig/network
****修改IP(重启后无效) ifconfig eth0 192.168.12.22
**修改IP(重启后永久生效) vi /etc/sysconfig/network-scripts/ifcfg-eth0
cd 切换目录(change directory)
pwd 显示当前工作目录(print working directory)
help 帮助
ls 显示文件和目录列表(list)
mkdir 创建目录(make directoriy)
cp 复制文件或目录(copy)
内部命令:help + 命令(help cd)
外部命令:man + 命令(man ls 或者 cp --help)
***善于查看man page(manual)等帮助文档
***利用好Tab键:命令行自动补全
***[鼠标中间键] 粘贴突出显示的文本。使用鼠标左键来选择文本。把光标指向想粘贴文本的地方。点击鼠标中间键来粘贴。
***掌握好一些快捷键
ctrl + c(停止当前进程)
ctrl + r(查看命令历史)
ctrl + l(清屏,与clear命令作用相同)
ctrl + d(退出,与exit命令作用相同)
**查看当前所在的工作目录pwd
**查看当前系统的时间 date
**查看有谁在线(哪些人登陆到了服务器)
who 查看当前在线
last 查看最近的登陆历史记录
#不包含hbase-0.98.12.1-hadoop2文件夹
scp -r ./hbase-0.98.12.1-hadoop2 node05:`pwd`
#包含hbase-0.98.12.1-hadoop2文件夹(推荐)
scp -r hbase-0.98.12.1-hadoop2 node05:`pwd`
**切换目录
cd /home #进入 '/home' 目录(绝对路径)
cd .. #返回上一级目录
cd ../.. #返回上两级目录
cd - #返回上次所在目录
cd / #返回根目录
cd 回车 #返回用户的主目录
cd ~/hadoop #进入主目录下的home目录
**创建文件夹
mkdir aaa 这是相对路径的写法
mkdir -p aaa/bbb/ccc
mkdir /data 这是绝对路径的写法
**删除文件夹
rmdir 可以删除空目录
rm -r aaa 可以把aaa整个文件夹及其中的所有子节点全部删除(-r 递归处理recursive)
rm -rf aaa 强制删除aaa (force)
**修改文件夹名称:mv aaa angelababy(mv 移动文件或目录、文件或目录改名)
**创建文件
touch somefile.1 #创建一个空文件
#利用重定向“>”的功能,将一条指令的输出结果写入到一个文件中,会覆盖原文件内容
echo "i miss you,my baby" > somefile.2
#将一条指令的输出结果追加到一个文件中,不会覆盖原文件内容
echo "huangxiaoming ,gun dan" >> somefile.2
cat somefile.2 #显示文本文件内容 (catenate)
more、less #分页显示文本文件内容(常用:less可以用G(大写字母G)直接到最后,跟vi 一样。b和空格翻页)
head、tail查看文本中开头或结尾部分的内容
head -n 5 a.log #查看a.log文件的前5行
查看日志常用:
tail -F b.log #循环读取(follow)
tail -f #等同于--follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止
tail -F #等同于--follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
tailf #等同于tail -f -n 10(貌似tail -f或-F默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所以tailf特别适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以省电
#此时要想暂停刷新,使用【Ctrl】+【S】暂停终端。
#若想继续终端,使用【Ctrl】+【Q】。
#若想退出tail命令,直接使用【Ctrl】+【C】
Linux服务器之性能评估
Linux服务器之CPU过高解决思路
***top 显示当前系统中耗费资源最多的进程
***ps 显示瞬间的进程状态:ps -ef | grep mqsReader
-e /-A 显示所有进程,环境变量
-f 全格式
-a 显示所有用户的所有进程(包括其它用户)
-u 按用户名和启动时间的顺序来显示进程
-x 显示无控制终端的进程
***kill 杀死一个进程 kill -9 pid (彻底杀死进程)
***df 显示文件系统磁盘空间的使用情况
***du -h 显示指定的文件(目录)已使用的磁盘空间,文件大小以K,M,G为单位显示(human-readable)
***free 显示当前内存和交换空间的使用情况
***netstat 显示网络状态信息:netstat -tulna
常用: 一般该指令会遇grep配合使用,比如查找端口22,就用netstat -
tulna | grep 22
或者干脆netstat -an | grep 22
就可以了,查看其它端口类似,当然也可以通过端口状态查找即netstat -anp | grep TIME_WAIT
,即只会显示含有TIME_WAIT
字符串的条目
*** lsof:lsof的作用是列出当前系统打开文件(list open files),不过通过-i
参数也能查看端口的连接情况,-i后跟冒号端口可以查看指定端口信息,直接-i是系统当前所有打开的端口
lsof -i:22 #查看22端口连接情况,默认为sshd端口
如下图:
可以看到当前通过端口22连接到机器的一共有4个(主机名和ip已打码),通过该命令就能清楚知道当前端口状态
(1) netstat -an|grep 8080
(2) lsof -i:8080
区别: 1.netstat——无权限控制,lsof有权限控制,只能看到本用户
2.lsof ——能看到pid和用户,可以找到哪个进程占用了这个端口
3.ss ——用法同netstat类似,但它比netstat更加强大。socket连接数量大,用ss可以快速、有效的执行并得到结果。
ifconfig 网卡网络配置详解 ping 测试网络的连通性
****jps(JavaVirtual Machine Process Status Tool)
jdk提供的一个查看当前java进程的小工具。非常简单实用:命令格式:jps [options ] [ hostid ]
[options]选项 :
-q:仅输出VM标识符,不包括classname,jar name,arguments in main method
-m:输出main method的参数
-l:输出完全的包名,应用主类名,jar的完全路径名
-v:输出jvm参数
-V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件
-Joption:传递参数到vm,例如:-J-Xms512m
**wc 统计文本的行数、字数、字符数(word count)
wc -m 统计文本字符数
wc -w 统计文本字数 word
wc -l 统计文本行数 line
**find 在文件系统中查找指定的文件 find /etc/ -name "aaa"
find / -name httpd.conf #在根目录下查找文件httpd.conf,表示在整个硬盘查找
find /etc -name httpd.conf #在/etc目录下文件httpd.conf
find /etc -name '*srm*' #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件
find . -name 'srm*' #表示当前目录下查找文件名开头是字符串‘srm’的文件
**grep 在指定的文本文件中查找指定的字符串
grep magic /usr/src #显示/usr/src目录下的文件(不含子目录)包含magic的行
grep -r magic /usr/src #显示/usr/src目录下的文件(包含子目录)包含magic的行
grep -i magic /usr/src #ignore 不区分大小写
grep -v magic /usr/src #reverse 反向查找
**ln 建立链接文件(link) -s 对源文件建立符号连接,而非硬连接: ln -sf log2013.log link2013 (相当于快捷键)
假如 A (192.168.18.101) 要登陆 B(192.168.18.102)
在A上操作:
%%首先生成密钥对
ssh-keygen (提示时,直接回车即可)
%%再将A自己的公钥拷贝并追加到B的授权列表文件authorized_keys中
ssh-copy-id 192.168.18.102
补充:时间设置:ntpdate ntp.api.bz
****gzip 压缩(解压)文件或目录,压缩文件后缀为gz:命令格式:gzip [选项] 压缩(解压缩)的文件名
-d将压缩文件解压(decompress)
-l显示压缩文件的大小,未压缩文件的大小,压缩比(list)
-v显示文件名和压缩比(verbose)
-num用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6
****bzip2 压缩(解压)文件或目录,压缩文件后缀为bz2:命令格式:bzip2 [-cdz] 文档名
-c将压缩的过程产生的数据输出到屏幕上
-d解压缩的参数(decompress)
-z压缩的参数(compress)
-num 用指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。系统缺省值为6
****tar 文件、目录打(解)包
-z 是否需要用 gzip 解压缩
-c 建立一个压缩文件的参数指令(create)
-x 解开一个压缩文件的参数指令(extract)
-j 是否需要用 bzip2 压缩
-v 压缩的过程中显示文件(verbose)
-t:查看 tarfile 里面的文件
-f 使用档名,在 f 之后要立即接档名(file)
-C 解压到指定目录
常用: tar –zxcf file.tar.gz // 解压名为file后缀名为tar.gz的文件
查看:tar -tf aaa.tar.gz // 在不解压的情况下查看压缩包的内容
压缩:
tar –cvf jpg.tar *.jpg // 将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg // 将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg // 将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg // 将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
解压:
tar –xvf file.tar // 解压 tar包
tar -zxvf file.tar.gz // 解压tar.gz
tar -jxvf file.tar.bz2 // 解压 tar.bz2
tar –Zxvf file.tar.Z // 解压tar.Z
用vi文本编辑器来编辑生成文件
******最基本用法
vi somefile.4
1、首先会进入“一般模式”,此模式只接受各种快捷键,不能编辑文件内容
2、按i键,就会从一般模式进入编辑模式,此模式下,敲入的都是文件内容
3、编辑完成之后,按Esc键退出编辑模式,回到一般模式;
4、再按:,进入“底行命令模式”,输入wq命令,回车即可
a 在光标后一位开始插入
A 在该行的最后插入
i 在该行的最前面插入
I 在光标当前行开始插入
o 在光标当前行的下一行插入新行
O 在光标当前行的上一行插入新行
:set nu #显示行号
:set nonu #取消行号
gg #直接跳到文件的首行
G #直接跳到文件的末行
:n #到文本的第n行
u #undo,取消上一步操作
Ctrl+r #redo,返回到undo之前
r #替换光标所在处的字符
R #从光标所在处开始替换,按Esc键结束
#查找并替换(在底行命令模式中输入)
%s/sad/88888888888888 效果:查找文件中所有sad,替换为88888888888888
#效果:查找文件中出现的you,并定位到第一个找到的地方,按n可以定位到下一个匹配位置(按N定位到上一个)
/you
dd #删除行,如果 5dd ,则一次性删除光标后的5行
:5,7d #删除指定范围的行
:w filename #(输入“w filename”,将文章存入指定的文件名filename)
:wq #(输入“wq”,因为进入之时已经指定文件名testfile,所以会写入testfile并离开vi)
:q! #(输入“q!”,强制离开并放弃编辑的文件)
yy #复制当前行, 复制多行,则 3yy,则复制当前行附近的3行
p #粘贴
v #进入字符选择模式,选择完成后,按y复制,按p粘贴
ctrl+v #进入块选择模式,选择完成后,按y复制,按p粘贴
shift+v #进入行选择模式,选择完成后,按y复制,按p粘贴
Shift+ zz #保存退出,与“:wq”作用相同
超级用户:(root,UID=0)
普通用户:(UID在500到60000)
伪用户(系统用户):(UID在1到499)比如:系统和服务相关的:bin、daemon、shutdown等
或者,进程相关的:mail、news、games等,为用户不能登陆系统,而且没有宿主目录
保存用户信息的文件:/etc/passwd
保存密码的文件:/etc/shadow
保存用户组的文件:/etc/group
保存用户组密码的文件:/etc/gshadow
用户配置文件:/etc/default/useradd
要修改密码才能登陆 passwd angela 按提示输入密码即可
-u 指定组ID(uid)
-g 指定所属的组名(gid)
-G 指定多个组,用逗号“,”分开(Groups)
-c 用户描述(comment)
-e 失效时间(expire date)
-l 修改用户名 (login)usermod -l a b(b改为a)
-g 添加组 usermod -g sys tom
-G添加多个组 usermod -G sys,root tom
–L 锁定用户账号密码(Lock)
–U 解锁用户账号(Unlock)
删除用户命令:userdel(user delete)
-r 删除账号时同时删除目录(remove)
添加组:groupadd -g 指定gid
修改组:groupmod -n 更改组名(new group)
删除组:groupdel
groups 显示用户所属组
用root编辑 vi /etc/sudoers
在文件的如下位置,为hadoop添加一行即可
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
然后,hadoop用户就可以用sudo来执行系统级别的指令
[hadoop@shizhan ~]$ sudo useradd huangxiaoming
su [user]切换到其他用户,但是不切换环境变量,su - [user]则是完整的切换到新的用户环境。
****linux文件权限的描述格式解读
drwxr-xr-x (也可以用二进制表示 111 101 101 --> 755)
d:标识节点类型(d:文件夹 -:文件 l:链接)
r:可读 w:可写 x:可执行
第一组rwx: 表示这个文件的拥有者对它的权限:可读可写可执行
第二组r-x: 表示这个文件的所属组对它的权限:可读,不可写,可执行
第三组r-x: 表示这个文件的其他用户(相对于上面两类用户)对它的权限:可读,不可写,可执行
****修改文件权限
chmod g-rw haha.dat #表示将haha.dat对所属组的rw权限取消
chmod o-rw haha.dat #表示将haha.dat对其他人的rw权限取消
chmod u+x haha.dat #表示将haha.dat对所属用户的权限增加x
rpm的常用参数
i:安装应用程序(install)
e:卸载应用程序(erase)
vh:显示安装进度;(verbose hash)
U:升级软件包;(update)
qa: 显示所有已安装软件包(query all)
结合grep命令使用:rmp -ivh gcc-c++-4.4.7-3.el6.x86_64.rpm
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
例子(需要上网,没有网络可以建本地源):
yum install gcc-c++
yum remove gcc-c++
yum update gcc-c++
其他常用:
目录
一、Linux 安装
1、网卡设置
2、DNS设置
3、新系统不能用setup,那么安装setup
4、安装wget,必备精品 或者 使用curl
5、换源。默认源实在太慢了,我们改用163的。
6、安装vim,默认自带的是vi。 yum -y install vim
7、关闭SELinux
8、服务管理:iptables防火墙设置
9、添加新用户:useradd hadoop
10、安装vsftpd:yum -y install vsftpd
11、mount 挂载外部存储设备到文件系统中
12、主机名的设置
二、命令的分类
1、内部命令:属于Shell解析器的一部分
2、外部命令:独立于Shell解析器之外的文件程序
3、查看帮助文档: type + 命令区分类型
4、好习惯
三、常用命令
1、日常操作命令
2、文件系统操作
3、服务器性能评估及解决
4、软件运维常用的操作
四、统计和查找命令
五、配置主机之间的免密ssh登陆
六、文件压缩解压缩
七、VI编辑器的使用
1、插入命令:
2、定位命令:
3、替换和取消命令:
4、删除命令:
5、保存命令:
6、常用快捷键:
八、用户和组账户管理
1、用户分类:
2、配置文件:
3、添加用户: useradd angela
4、修改用户命令:usermod(user modify)
5、操作用户组命令
6、为用户配置sudo权限
7、切换用户 :su 用户名
九、文件权限管理
十、软件包管理及安装
1、RPM:RedHat Package Manager(RedHat软件包管理工具)
2、YUM命令