******拷贝文件
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: 表示默认启动的运行级别
*****配置主机之间的免密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表示指定解压放置的目录)
安装httpd并确认安装
yum install -y httpd (-y表示默认安装包依赖)
列出所有可用的package和package组
yum list
列出所有已安装的软件包
yum list installed
清除所有缓冲数据
yum clean all
列出一个包所有依赖的包
yum deplist httpd
删除httpd
yum remove httpd
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
启动一个服务: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
#####查看系统中安装的rpm包
rpm -qa (查询所有包) | grep mysql
默认的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/,如果嫌麻烦可以自己写脚本自动挂载
[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命令对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