一、Linux基础
(一)Linux简介
Linux系统核心最初是由芬兰赫尔辛基大学学生Linus Torvalds在1990年设计。后来,Linux周边程序越来越多,在不到三年的时间里,linux成为了一个功能完善,稳定可靠的操作系统。 Linux存在着许多不同的Linux版本,例如RedHat、CentOS、Ubuntu、debian等。Linux系统具有以下几个重要的特点:
1、Linux简洁,仅提供数百个有明确设计目的系统调用;
2、Linux中所有的设备都被当做文件对待,可通过一套相同的系统调用接口对数据和设备的操作; 3、Linux的内核和相关的系统工具软件都是用C语音编写的,Linux在各种硬件体系架构面前具备非常好的移植能力; Linux将所有的进程都当做线程,而创建线程速度快、开销少;
4、Linux提供了一套非常简单但又非常稳定的进程间通信元语,快速简洁的进程创建过程使得Linux程序高质量地完成任务,而简单稳定的进程间通信机制可以保证一组单一目的的程序方便地组合在一起,去解决更为复杂的任务。
(二)Linux基本操作
1、修改主机名和hosts文件
(1)查看主机名
可以使用hostname查看当前主机名称,命令如下:
$ hostname
(2)永久修改主机名
可以使用hostnamectl永久设置主机名,修改后的主机名存储在/etc/hostname文件中。命令如下:
$ hostnamectl set-hostname controller # 设置主机名为controller $ cat /etc/hostname # 用cat 命令在控制台显示文件内容为controller
也可以通过直接修改 /etc/hosts 文件中的主机名来修改主机名称。
还可以使用 Vim 等编辑工具编辑该文件,修改对应 IP 地址后的主机名称。
$ vim /etc/hosts # 注意:在打开文件,并修改主机名后,保存 $ cat /etc/hosts
2、文件与目录操作
(1)切换目录
切换工作文件夹目录用cd命令
$ cd /home # 进入 '/home' 目录 $ cd .. # 返回上级目录 $ pwd # 显示当前工作目录
(2)查看目录中的文件信息
查看目录中的文件信息用ls命令
$ ls -a # 查看当前目录下的所有文件(包括隐藏文件) $ ls -al # 显示文件的详细信息 $ ls -alrt # 按时间显示文件(l表示详细列表,r表示反向排序,t表示按时间排序)
(3)文件的创建和删除
新建、复制、删除文件涉及touch、cp和rm三个命令
$ touch file1 # 新建名为 'file1' 的文件 $ cp filel file2 # 将file1复制为file2 $ cp -a dir1 dir2 # 复制一个目录(包括目录下所有子目录和文件) $ cp -a /tmp/dir1 # 复制一个目录到当前工作目录(.代表当前目录) $ pwd # 显示当前目录名称 $ rm -f file1 # 删除文件名为 'file1' 的文件
(4)目录的创建和删除
创建、修改、删除文件目录涉及mkdir、mv和rm三个命令
$ mkdir dir1 # 创建 'dir1' 目录 $ mkdir dir1 dir2 # 同时创建两个目录 $ mkdir -p /tmp/dir1/dir2 # 创建一个目录数 $ mv dir1 dir2 # 移动/重命名一个目录 $ rm -rf dir1 # 删除 'dirt1' 目录及其子目录的内容
(5)查看文件内容
可以使用cat、more和tac查看文件内容。cat按照文本文件的行顺序以此显示文件内容;tac是cat反向拼写,表达从最后一行开始倒叙依次显示文本文件的内容;more命令可以分页显示文本文件内容。
$ cat file1 # 从第一个字节开始正向查看文件的内容 $ cat file1 # 从最后一行开始反向查看一个文件的内容 $ more file1 # 查看一个长文件的内容
(6)文本内容处理
文本内容处理 在Linux下经常需要从文本文件中查找相关字符串,或比较文件的差异。常用命令为grep和diff命令。
$ grep str /tmp/test # 在文件 '/tmp/test' 中查找 "str" $ grep ^str /tmp/test # 在文件 '/tmp/test' 中查找以 "str" 开始的行 $ grep [0-9] /tmp/test # 查找 '/tmp/test' 文件中所有包含数字的行 $ grep str -r /tmp/* # 在目录 '/tmp' 及其子目录中查找 "str" $ diff file1 file2 # 找出两个文件的不同处 $ sdiff file1 file2 # 以对比的方式显示两个文件的不同
(7)Vim文件操作
Vim是Linux系统常用的文本编辑器。Vim有命令模式(Command Mode)、插入模式(Insert Mode)和底行模式(Last Line Mode)三种工作模式。
命令模式:在此模式下只能控制屏幕光标的移动,进行文本的删除、复制等文字编辑工作,以及进入插入模式,或者回到底行模式。
插入模式:只有在插入模式下,才可以输入文字。按[Esc]键可回到命令模式。打开Vim编辑器时Vim处于命令模式,需要按i键进入插入模式。
底行模式:在此模式下可以保存文件或退出Vim,同时也可以设置编辑环境和进行一些编译工作,如列出行号、搜索字符串、执行外部命令等。
$ vim test.txt
进入Vim界面后,单击 [i] 健,Vim进入插入模式,用户就可以像使用其他编辑器一样编辑文件。编辑完毕后按 [Esc] 退出插入模式。并按 [: ] 键进入底行命令模式。常用底行操作命令如下:
:w 保存当前修改
:q! 不保存并强制退出Vim
:wq 保存当前修改并退出Vim
(8)查询操作
可以通过find命令查找相关的文件或文件目录
$ find / -name file1 # 从 '/' 开始进入根文件系统查找文件和目录 $ find / -user user1 # 查找属于用户 'user1' 的文件和目录 $ find /home/user1 -name *.bin # 在目录 '/home/user1' 中查找以 '.bin' 为扩展名的文件
(9)压缩、解压
可以利用tar命令对文件进行压缩、解压。tar可以解压缩*.tar,*.tar.gz, *tar.bz2文件,其参数z和j分别代表*.tar.gz和*.bz2文件。
$ tar -cvf archive.tar file1 # 把file1打包成archive.tar(-c:建立压缩文档;-v:显示 # 所有过程;-f:使用档案名字,是必须的,也是最后一个参数) $ tar -tf archive.tar # 显示一个包中的内容 $ tar -xvf archive.tar # 释放一个包(-x解压;) $ tar -xzvf archive.tar.gz # 释放一个gz压缩包(-x解压;z表示解压或压缩的为*.gz文件) $ tar -xjvf archive.tar.bz2 -C /tmp # 把archive.tar.bz2压缩包释放到/tmp目录下
(10)修改文件或目录权限
Linux文件被创建时,文件所有者自动拥有对该文件的读、写和可执行权限,以便于对文件的阅读和修改。
Linux系统因对文件安全的设置将用户分成三种不同的类型:文件所有者、同组用户、其他用户。 文件所有者一般是文件的创建者。所有者能允许同组用户有权访问文件,还能将文件的访问权限赋予系统中的其他用户。
每一文件或目录的访问权限都有三组,每组用三位数据表示,分别为文件所有者的读、写和执行权限,和所有者同组的用户的读、写和执行权限,系统中其他用户的读、写和执行权限。
$ chmod 777 test # 把test文件修改为所有用户可读、写、执行,chmod的数字设定法 # 777为三组数字111 111 111的十进制表示形式 $ chmod a+rwx test # 同上,是chmod的文字设定法(a:所有用户;u:用户;g:组用 # 户;o:其他用户;r:读;w:写;x:执行) $ chgrp student /opt/book # 把 /opt/book 的用户组修改为student (需要root权限) $ chown zhangsan /opt/book # 把 /opt/book 的用户所有者修改为zhangsan(需要root权限)
3、新建与删除用户和用户组
(1)新建用户
为Linux系统创建用户的基本命令为useradd和passwd,分别创建用户和设置用户密码。
$ useradd nathan $ passwd nathan
(2)新建用户组
Linux文件系统的安全管理权限有组管理权限,可以通过groupadd命令创建用户组,方便用户管理。
$ groupadd testgroup # 新建test用户组
(3)新建用户的同时增加用户组
在创建用户时为用户xathan增加用户组。
$ useradd -g testgroup xathan # 新建xathan用户并增加到testgroup工作组 # 参数说明:-g 所属组,-d 家目录,-s 所用的Shell
(4)给已有的用户增加用户组
若用户已经存在,可以使用usermod命令把指定用户增加到相应的用户组中。
$ usermod -G groupname username # 参数说明:-G 必须是现有group组中存在的组名
(5)永久删除用户账号和用户组
可以使用userdel和groupdel删除用户帐号和用户组。
$ userdel testuser $ groupdel testgroup $ userdel -r testuser # 删除用户的主目录和邮件池
4、硬盘分区、查看与挂载
Linux用户可以使用df、fdisk、mnt等命令查看、分区及挂载硬盘。
(1)查看硬盘的使用状况
使用df命令查看当前硬盘的使用状况。
$ df -h # -h:将容量显示为易读的格式(如1K、234M、2G等)
(2)硬盘分区
使用fdisk命令可以对硬盘进行分区。
$ fdisk -l # 查看所有分区
列出所有分区后,可以通过以下命令来实现对指定分区的操作:
$ fdisk /dev/sda3 # 使用fdisk管理 /dev/sda3
此时会进入fdisk的命令行界面,输入m后回车可以看到帮助信息,使用w或者q命令可以保存或放弃fdisk的分区操作。分区操作完成后通常要使用mkfs命令进行文件系统的格式化。
(3)使用mount命令挂载硬盘
把/media/rhel-server-5.3-x86_64-dvd.iso挂在到/mnt/vcdrom的命令如下:
$ mkdir/mnt/vcdrom $ mount-o loop -t iso9660 /media/rhel-server-5.3-x86_64-dvd.iso /mnt/vcdrom # 注:-o loop 允许用户以一个普通磁盘文件虚拟一个块设备 # -t iso9660 指定挂载格式为iso镜像
挂载NFS分区(需要配置好NFS 服务),命令如下:
1. $ mount -t nfs 192.168.123.2:/tmp /mnt 2. # 192.168.123.2 为NFS服务器地址
挂载FAT32分区U盘(假设U盘已经插入,且通过fdisk命令得知U盘标识为 /dev/sdb1),命令如下:
1. $ mkdir /mnt/usb 2. $ mount -t vfat /dev/sdb1 /mnt/usb
(三)网络配置管理
1、基本网络配置管理
CentOS中的nmcli网络管理命令行工具(Network Manager Command Tools),比传统网络管理命令ifconfig的功能要更加强大。其命令语法如下:
nmcli [OPTIONS] OBJECT { COMMAND | help }
其中,OBJECT指的是device和connection。device指的是网络接口,是物理设备;而connection是连接,偏重于逻辑设置。多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。其优点是针对一个物理的网络接口,可以设置多个网络连接,比如静态IP和动态IP,再根据需要启用相应connection。COMMAND指的是具体命令。
(1)查看网络连接
$ nmcli connection show
(2)删除链接
$ nmcli connection delete ens33 testcon
(3)添加网络连接
$ nmcli connection add type ethernet con-name connl ifname ens33
(4)配置网络信息
配置connl连接IP为192.168.142.106,并标记前24位为子网掩码(255.255.255.0),网关为192.168.142.2,dns为202.106.0.20。
$ nmcli connection modify connl ipv4.method manual ipv4.addresses 192.168.142.106/24 ipv4.gateway 192.168.142.2 ipv4.dns 202.106.0.20
启用connl连接命令如下:
$ nmcli connection up connl
(5)查看网卡配置文件
1. $ cd /etc/sysconfig/network-scripts/ 2. $ vim ifcfg-connl
2、关闭防火墙
(1)查看防火墙
$ firewall-cmd --list-all
(2)关闭防火墙/禁止开机启动
1. $ systemctl stop firewalld 2. $ systemctl disable firewalld
3、关闭SELinux
SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现,是Linux历史上最杰出的新安全子系统。 SELinux默认安装在CentOS、Fedora和Red Hat Enterprise Linux上。 然而,Selinux会阻碍Hadoop组件的安装与配置,因而需要掌握关闭和启动SElinux的相关方法。
(1)查看状态
$ getenforce
(2)关闭SELinux
可以临时或永久关闭SELinux。临时关闭使用 setenforce 0 命令;永久关闭可以编辑 /etc/selinux/config 文件,将 SELINUX=enforcing 修改为 SELINUX=disabled。修改后需要保存 config 文件并重启才能生效。
1. $ setenforce 0 # 临时关闭 2. $ vim /etc/selinux/config # 永久关闭
(四)其他网络常用命令
1、系统服务管理指令systemctl
Linux Systemctl是一个系统管理守护进程、工具和库的集合,主要负责控制Systemd系统和服务管理器。 通过systemctl –help可以看到该命令主要分为:查询或发送控制命令给Systemd服务,管理单元服务的命令,服务文件的相关命令,任务、环境、快照相关命令,Systemd服务的配置重载,系统开机关机相关的命令。
2、jps查看
jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有Java进程pid的命令,非常适合在Linux/UNIX平台上简单察看当前Java进程的一些简单情况。可以通过它来查看系统
启动的Java进程,默认列出JVM的ID号和简单的class或jar名称,如图所示。
其他示例命令如下:
$ jps –p # 仅仅显示VM 标示,不显示jar、class、main参数等信息 $ jps –l # 输出应用程序主类完整package名称或jar完整名称 $ jps –v # 列出jvm参数
3、rpcinfo查看
RPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计算机程序上请求的服务,用户不需要了解底层网络技术的协议。
rpcinfo命令可查看有关系统上正在运行的RPC服务的信息。
$ rpcinfo -p [IP|hostname] $ rpcinfo -t|-u IP|hostname 程序名称
选项与参数:
-p:针对某IP(未写则预设为本机)显示出所有的port与porgram的信息。
-t:针对某主机的某支程序检查其TCP封包所在的软件版本。
-u:针对某主机的某支程序检查其UDP封包所在的软件版本。
4.查看端口并杀死占用端口的进程
(1)使用netstat命令查看正在使用的端口及关联的进程/应用 普通用户也能够使用netstat命令,不过只有为root用户时才会显示端口对应的进程名称。
(2)使用lsof命令直接列出具体端口号的使用进程/应用 lsof命令可以列出当前网络端口的占用情况,也可查看指定端口的占用情况,命令的执行需要root权限。
(3)使用ps命令通过PID进程号查看进程的详细信息。
(4)使用ps命令查看Java进程的状态。
(5)使用ps命令查看Java进程的状态,-aux显示所有状态。
(6)使用kill-9命令强制杀死进程。