Linux常用操作命令+YUM本地仓库配置(YUM基础命令)+bash编程基础知识+高级命令行文本处理工具

######LINUX常见命令

******拷贝文件


cp file.1 /hpme/hadoop/


*******查看文件


cat  file    一次性将文件内容全部输出(控制台)

more file  可以翻页查看,下翻一页(空格),上翻一页(b),退出(q)

less file   可以翻页查看,下翻一页(空格),上翻一页(b),退出(q),上翻一行(↑),下翻一行(↓),可以收索关键字(/keyword)


tail -10 install.log   查看文件尾部10行(主要用于查看日志)

tail -f install.log    小f跟踪文件的唯一inode号,就算文件改名后,还是跟踪原来这个inode表示的文件

tail -F install.log   大f按照文件名来跟踪


head  -10 install.log     查看文件头部的10行


*******查看启动的服务端口占用情况

netstat -nltp


*******后台服务管理

service network status 查看指定服务的状态

service network stop  停止指定服务

service network restart  重启指定服务

service network start   启动指定服务

service  --status-all    查看系统中所有的后台服务


设置后台服务的自启配置

chkconfig    查看所有服务自启配置

chkconfig iptables off   关掉指定服务的自动启动

chkconfig iptables on   开启指定服务的自动启动


********系统启动级别管理

vi /etc/inittab   可以查看启动级别

/etc/inittab文件中  id:3:initdefault: 表示默认启动的运行级别

Linux系统有7个运行级别(runlevel)
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

*****配置主机之间的免密ssh登录

假如 A 要登录 B

**首先生成密钥对

ssh-keygen  (提示,直接回车即可)

**再将A自己的公钥拷贝追加到B的授权列表文件authorized_keys中

ssh-copy-id   B


软件安装

1.如何上传安装包到服务器

***可以使用图形化工具,如:filezilla

或者使用FTP服务传输,前提是服务器上有FTP服务器

***在命令行可以使用SFTP工具,alt+p调出后,用put命令上传到远端服务器,可使用cd/lcd进行目录切换,选择上传到的目录(get命令从远端服务器下载,可使用cd/lcd进行目录切换,选择下载到的目录)。注意:lcd是更改本地路径,cd是更改远端路径,即当put时,服务器是远端,windows是本地,get时则反之。


***压缩解压缩的相关命令

gzip access.log  压缩后文件以zip结尾

解压gz文件:gzip  -d   access.log.zip


***打包解包

tar -cvf  打包后的文件名(以tar结尾) 要打包的文件

tar  -xvf  acedd.tar   解包


***一次性完成打包与压缩的操作

tar -zcvf   my.tar.gz(打包与压缩后的文件名,以tar.gz结尾)    aaa/    (产生压缩包)

tar  -zxvf   my.tar.gz    -C(大写)   apps/           解压缩包(其中-C表示指定解压放置的目录)   


#####YUM的常见命令:YUM类似maven,进行rpm包的管理和下载

安装httpd并确认安装

yum install -y httpd    (-y表示默认安装包依赖)


列出所有可用的package和package组

yum list


列出所有已安装的软件包

yum list installed    

  

清除所有缓冲数据

yum clean all


列出一个包所有依赖的包

yum deplist httpd


删除httpd

yum remove httpd


#######centos 7中使用开源的mariadb代替mysql

1.查找mariabd数据库安装的位置

find / -name mariadb

2.操作Mariadb数据库的命令

systemctl start mariadb.service #启动MariaDB
systemctl stop mariadb.service #停止MariaDB
systemctl restart mariadb.service #重启MariaDB
systemctl enable mariadb.service #设置开机启动


如果不使用yum安装时,可以使用rpm  -ivh 命令进行安装包

如果卸载出现包冲突时,可以使用rpm  -e  冲突包  --nodeps(避免依赖检查)


centos7下防火墙使用firewalld,命令不再是iptables

1、firewalld的基本使用

启动: systemctl start firewalld

查看状态: systemctl status firewalld 

停止: systemctl disable firewalld

禁用: systemctl stop firewalld

防火墙开启一个端口
可以添加命令
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

2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务: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

3.配置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


#####查看系统中安装的rpm包

rpm -qa  (查询所有包)   |  grep  mysql

 

#####配置yum本地仓库

默认的yum是以网络来安装的,在没有网络或者网速不佳的情况下,通过yum来安装软件是一件非常痛苦的事情。其实对于CentOS DVD来说,里面提供的软件就足以满足我们的需要了,而且DVD里的软件版本都是稳定版,下载速度还快,对于学习CentOS来说,将CentOS DVD作为默认yum源可以大大提高学习效率

1、为DVD创建一个挂载目录

[root@localhost ~]# mkdir /media/CentOS

2、在Linux下挂载CentOS DVD(虚拟机挂载DVD不说了,应该都会)

[root@localhost ~]# mount -t auto /dev/cdrom /media/CentOS

3、查看相关配置文件,目录为

[root@localhost ~]# ls -l /etc/yum.repos.d/
-rw-r--r--. 1 root root 1926  7月  3 10:15 CentOS-Base.repo
-rw-r--r--. 1 root root  637  7月  3 10:15 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  626  7月  3 10:15 CentOS-Media.repo

4、禁用yum的网络更新方式,简单地将默认首选的CentOS-Base.repo改名为CentOS-Base.repo.bak即可

[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak

5、配置本地yum源

[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Media.repo

[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
file:///media/cdrom/
file:///media/cdrecorder/
gpgcheck=1
enabled=0

修改为

[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
gpgcheck=1(配置本地YUM仓库时,最好将其设置为0,避免签名检测)
enabled=1

其中baseurl修改为DVD的挂载目录,enabled=1开启本地更新模式

:wq 保存退出

6、清除原有的yum信息

[root@localhost ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning up Everything

7、检查DVD软件列表

[root@localhost yum.repos.d]# yum list
Loaded plugins: fastestmirror
Determining fastest mirrors
c6-media                                                 | 3.7 kB     00:00 ...
c6-media/primary_db                                      | 3.3 MB     00:00 ...

  列出可用的YUM仓库

yum    repolist

8.安装相应的软件

yum install -y httpd

这样以后就默认使用DVD安装软件了,如果想恢复网络安装模式,将 CentOS-Base.repo.bak 更名还原即可。

PS.每次重启系统后需要手工挂载DVD到/media/CentOS/,如果嫌麻烦可以自己写脚本自动挂载


###### Linux  shell脚本编程

[root@Master ~]# sh hello.sh  表示执行shell脚本

pstree 进程以树结构的形式展示

. ./helloworld.sh 表示让脚本在当前bash里面运行(服务器端可以多进程-多个bash)

shell中的变量

Linux shell变量分为系统变量和用户自定义变量(可以通过set命令查看系统变量)

常用系统变量:$HOME 主目录   $PWD当前运行打的目录   $SHELL当前使用的哪种解释器   $USER当前用户

定义变量:等号两侧不能有空格,变量名称一般习惯为大写,双引号和单引号存在区别:在单引号会将所有特殊字符脱意,双引号将空格脱意

unset A  撤销变量A

readonly  B=2 用来声明静态变量B=2,不能使用unset撤销

export 变量名 可以把变量提升为全局环境变量,可供其他shell程序使用

source  /etc/profile  (本质上是将配置文件中的export语句执行一遍)

将命令的返回值赋给变量

A=`ls  -la` 反引号,将命令执行的结果返回给变量A   或者   A=$(ls  -la) 等价于反引号

Shell中的特殊变量

$?表示上一个命令退出的状态(即上一条命令的返回值,返回值不等于执行结果)

$$表示当前进程编号

$0表示当前脚本名称

$n 表示n位置的输入参数(n代表数字,n>=1) 例如: ./testdot.sh hello world  则$1表示hello,$2表示world

$# 表示参数的个数,常用于循环

$*和$@都表示参数列表,即所有的参数


运算符

格式:expr m + n 或者$((m+n))  注意:expr运算符间要有空格,推荐使用第二种方式


for循环

第一种:for N in 列表

              do

                    echo $N

            done

    或者 for N in 列表;do echo $N;done

    或者 for N in {1..3}; do echo $N;done (其中{}里面表示参数个数)

推荐使用 :for N in $*;do echo $N;done实现循环

第二种:

              for((i=0;i<5;i++)) (注意:双括号)

              do

                    echo $i

             done


while 循环

第一种:         

 while expression 

 do

echo

done

第二种:

i=1

while((i<=3))

do

echo  $i

let i++ (使i自增)

done


case语句

 
  

          case  $i  in

start)

echo "starting"

::

stop)   

echo "stoping"

   ::

*)                                  

echo 

esac


read命令:接受交互式的输入

[root@Master ~]# read -p "please enter your name" name
please enter your namewumeng
[root@Master ~]# echo $name
wumeng


if语句

if  [ $name=root ]        (注意:[]中前后要有空格)

then

echo

elif[ $name=hadoop ]

then

echo

else

echo

fi


(条件成立执行&&后语句,否则执行||后语句)

[root@Master ~]# [ a ] && echo ok || echo false  
ok
[root@Master ~]# [   ] && echo ok || echo false
false


常用判断语句

-f 文件存在且是一个常规的文件

-s 文件存在且不为空


####shell自定义函数

1.必须在调用函数地方之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先预编译

2.函数返回值只能通过$?系统变量获得,函数中可以显示加:return返回,如果不加,则将以最后一条命令的运行结果作为返回值。return后跟数值n(0~255)


脚本调试

sh  -vx  helloworld.sh  (不停止,只是输出每条语句的结果)


#####高级命令行文本处理工具

cut命令使用

cut命令可以从一个文本文件或者文本流中提取文本列

[root@Master ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/home/java/jdk1.8.0_111/bin:/usr/hadoop/hadoop-2.5.2/bin:/root/bin
[root@Master ~]# echo $PATH | cut -d ':' -f 5  (以冒号截取$PATH,取第5个)
/home/java/jdk1.8.0_111/bin
[root@Master ~]# echo $PATH | cut -d ':' -f 3,5   (取第3个和第5个)
/usr/sbin:/home/java/jdk1.8.0_111/bin
[root@Master ~]# echo $PATH | cut -d ':' -f 3-       (取第三个和之后的)
/usr/sbin:/usr/bin:/home/java/jdk1.8.0_111/bin:/usr/hadoop/hadoop-2.5.2/bin:/root/bin
[root@Master ~]# echo $PATH | cut -d ':' -f 3-4      (取第三个,到第四个)
/usr/sbin:/usr/bin

sort命令使用

sort命令对File参数指定的文件中的行排序,并将结果写到标准输出。如果File参数指定多个文件,那么sort命令将这些文件连接起来,并当作一个文件进行排序

[root@Master ~]# cat /etc/passwd  |  sort  (对文件排序)
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:991:988::/var/lib/chrony:/sbin/nologin
colord:x:995:993:User for colord:/var/lib/colord:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin


[root@Master ~]# cat /etc/passwd  |  sort -t ':' -k 3  (以冒号划分,则将第三个作为排序标准:默认字符串排序)
root:x:0:0:root:/root:/bin/bash
wumeng:x:1000:1000:wumeng:/home/wumeng:/bin/bash
hadoop:x:1001:1001::/home/hadoop:/bin/bash
qemu:x:107:107:qemu user:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin


[root@Master ~]# cat /etc/passwd  |  sort -t ':' -k 3n    (以冒号划分,则将第三个作为排序标准:使用数字排序)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin


[root@Master ~]# cat /etc/passwd  |  sort -t ':' -k 3nr    以冒号划分,则将第三个作为排序标准:使用数字排序,同时r表示执行倒序排
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
hadoop:x:1001:1001::/home/hadoop:/bin/bash
wumeng:x:1000:1000:wumeng:/home/wumeng:/bin/bash
systemd-bus-proxy:x:999:998:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:998:997:systemd Network Management:/:/sbin/nologin
polkitd:x:997:996:User for polkitd:/:/sbin/nologin
unbound:x:996:994:Unbound DNS resolver:/etc/unbound:/sbin/nologin
colord:x:995:993:User for colord:/var/lib/colord:/sbin/nologin
geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin
saslauth:x:993:76:Saslauthd user:/run/saslauthd:/sbin/nologin

[root@Master ~]# cat /etc/passwd  |  sort -t ':' -k 3 -u  (-u 表示uniq命令,进行去重操作)
root:x:0:0:root:/root:/bin/bash
wumeng:x:1000:1000:wumeng:/home/wumeng:/bin/bash
hadoop:x:1001:1001::/home/hadoop:/bin/bash
qemu:x:107:107:qemu user:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin


uniq命令使用

uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用,也就是说,为了使uniq起作用,所有的重复行必须是相邻的。

[root@Master ~]# cat testfile |sort |uniq -c  (先sort再进行uniq去重,其中-c表示对文件testfile中出现相同的行进行统计)
      2 hello
      2 my
      2 name
      2 world


wc命令比较简单使用,每个参数使用如下:

wc -l   #统计行数

wc -w #统计单词出现的次数(默认空格划分为单词)


sed命令使用

删除:-d

[root@Master ~]# sed '2d' testfile   (2d表示删除第二行,但是cat testfile后可以发现文件不会被修改,加-i,修改文件)
hello
hello
world
my
my
name
name

[root@Master ~]# sed '/hello/'d  testfile   (正则表达式,'/hello/'表示能匹配上hello的行)
world
world
my
my
name
name

替换:-s

[root@Master ~]# sed 's/hel/88888/g' testfile    (将hel替换成88888,其中g表示替换所有匹配行,不加只替换匹配的第一行)
88888lo
world
88888lo
world
my
my
name
name


awk命令使用

[root@Master ~]# last -n 5  (最近登录的5个)
root     pts/3        192.168.1.150    Sun Apr 30 10:08   still logged in   
root     pts/4        192.168.1.150    Sat Apr 29 22:07 - 22:07  (00:00)    
root     pts/3        192.168.1.150    Sat Apr 29 22:07 - 22:38  (00:30)    
root     pts/2        192.168.1.150    Sat Apr 29 16:27 - 10:45  (18:18)    
root     pts/1        192.168.1.150    Sat Apr 29 15:51 - 10:45  (18:54)    

[root@Master ~]# last -n 5 | awk '{print $1}'   (awk默认以空格和TAB划分)
root
root
root
root
root

[root@Master ~]# last -n 5 | awk '{print $1 "\t" $2}'  ("\t"进行结果连接)
root    pts/3
root    pts/4
root    pts/3
root    pts/2
root    pts/1


你可能感兴趣的:(Linux常用操作命令+YUM本地仓库配置(YUM基础命令)+bash编程基础知识+高级命令行文本处理工具)