1.1 文件创建
命令 | 含义 |
touch *.txt | 重建空文件 |
echo 111>a.txt | 新内容覆盖 |
echo 111>>a.txt | 新内容追加 |
ll -h | 以可读的方式展示文件大小 |
1.2 vi 使用
i | 进入编辑模式 |
o | 在下一行新行进入编辑模式 |
dd | 删除当前行 |
yy | 赋值当前行 |
pp | 粘贴 |
1.3 查看文件命令
- 查看文件内容 cat
- 分页查看 more
- 分页查看(功能更强大)less b上翻一页 空格下翻一页 ↑上一行 ↓一行 gg跳到文档开头 G跳到文件末尾 /查询
1.4 动态查看文件命令
tail -f | (按文件id)查看文件 |
tail -F | (按文件名)查看文件 |
tail -n | 查看后n行 |
head -n | 查看头n行 |
1.5 文件压缩解压缩
gzip a.txt | 压缩文件 |
gunzip aa.gz | 解压文件 |
tar -cvf aa.rar a.txt b.txt | 打包多个文件到一个文件中 |
tar -xvf aa.rar -C | 将打包文件解包 |
tar -zxvf aa.gz | 将压缩包文件解压缩 |
tar -zcvf aa.rar.gz a.txt b.txt | 打包压缩多个文件到一个文件中 |
1.6 文件命令查找
使用相对或绝对命令指定脚本文件,并注意文件有可执行权限
/root/hello.sh ./hello.sh
或者编辑/etc/profile 添加 PATH=$PATH:/root 将文件路径添加到查找路径中
1.8 文件权限
- useradd xiaozhao
- passwd xiaozhao
xiaozhao 创建一个文件,其他用户默认不能修改,但root用户除外
root在xiaozhao目录下创建文件,xiaozhao无修改权限,但有删除权限
1.9 文件权限配置
-rwxr-xr--
- 第一位 d:文件夹 -:文件 l:链接
- rwx 文件拥有者权限
- r-x 文件拥有者所在组权限
- r-- 其他用户权限
也可以用754表示,将二进制表示为10进制
2.0 文件权限修改命令
- chmod u+x a.txt 给文件拥有者添加可执行权限(u/g/o,+/-添加或去除)
- chmod 777 a.txt 给文件设置权限
- chown xiaozhao:xiaozhao a.txt 修改文件拥有者和拥有组
2.1 权限管理(文件夹和文件)
- r:对文件可读,文件夹是否可以ls
- w:对文件可写,文件夹下是否可以增删文件
- x:文件是否可执行,文件夹是否允许cd
2.2 用户权限控制
只能root操作才能操作
1)增加用户
- useradd spark
- passwd spark
2)删除用户
- userdel spark (删除后用户用不了)
- userdel -r spark (-r表示将用户和用户目录全部删除)
3)查看用户组
- groups 查看当前用户所在组
- groups tomcat 查看Tomcat的组信息
4)创建组
- groupadd america
- 将jerry添加在america组中 usermod -g america jerry
- 将tomcat添加到sys和root组中 usermod -G sys,root tomcat
5)删除组
将Tomcat用户从root和sys组删除
- gpasswd -d tomcat root
- gpasswd -d tomcat sys
6)修改用户名
修改tom用户的登录名为tomcat
usermod -l tomcat tom
7)修改组名
将america组修改为am
groupmod -n am america
2.3 用户sudo权限配置
- su xiaozhang 切换到xiaozhang用户下,需要知道xiaozhang密码
- exit 退出xiazhang账户回到原账户
弊端:在xiaozhang下执行的文件或者操作,都属于xiaozhang,后期维护困难。
而且可能会有意外,切换到root目录下,电脑未关,他人操作,造成危险
若用户未在/etc/sudoers配置权限,执行sudo命令,会给系统管理员发邮件,并且用户执行不了,系统管理员可以在
/var/spool/mail/root 下查看
- root管理员给hadoop用户授予sudo权限
用root编辑vi /etc/sudoers
#为hadoop用户添加一行即可 root ALL=(ALL) ALL hadoop ALL=(ALL) ALL
- 然后hadoop用户就可以用sudo来执行系统级命令
sudo useradd xiaohu
2.4 外部数设备挂载
含义:将外部设备内容映射到文件系统中
可以挂载光盘、硬盘、磁盘、光盘镜像等
- 挂载光驱
- mkdir /mnt/cdrom 创建文件夹用来挂载外部系统内容
- mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom
将设备/dev/cdroom(-t iso9660 指定设备类型为iso9660)以只读(-o ro/loop)的方式挂载到/mnt/cdrom文件夹下
- 挂载光盘镜像文件(.iso文件)
- mount -t iso9660 -o loop /home/hadoop/Centos-6.7.DVD.iso /mnt/cdrom
- 注意:挂载的资源再重启后就会失效,需要重新挂载,想自动挂载,需修改/etc/fstab配置文件,例如:
/dev/cdrom /mnt/cdroom iso9660 defaults 0 0
- 卸载 umount
umount /mnt/cdrom
2.5 磁盘空间查看
- ll aaa 展示文件本身大小(描述性信息),当里面文件比较多的话,占用空间就会比较大
- du -sh aaa 查看aaa文件夹有多大(-s(samary)汇总)
- du -sh /* 查看根目录下所有子文件夹大小
- df -h 显示磁盘盘(分区)剩余空间
2.6 系统服务管理
services.msc 查看windows大量后台服务
- service --status-all # 查看系统所有的后台服务进程
- service sshd status # 查看指定的后台服务(ssh服务)进程的状态
- service sshd stop
- service sshd start
- service sshd restart
配后台服务进程的开机自启
- chkconfig --list # 显示服务开机开启状态
- chkconfig httpd on # 让httpd服务开机自启
- chkconfig httpd off # 让httpd服务开机不自启
- chkconfig --list|grep httpd
- chkconfig --level 35 httpd on #设置httpd服务在35模式下开机自启动
2.7 进程管理
- top 类似于任务管理器(展示消耗资源最多的进程资源占用情况)
- free -m(/h)查看剩余的内存空间
- ps -ef 查看所有进程
- ps -ef|grep ssh(搜索指定进程,找出进程号)
- kill -9 2358 #将指定进程号的进程杀死(9是不管什么原因都将进程杀死)
- pstree 显示进程树
- iptables 防火墙服务()
2.8 软件安装及远程登录
hostname xiaozhao 重命名主机名
软件安装
1)远程联网安装
若服务器已联网,则可直接通过yum install 软件名安装即可
若不知道自己应该安装那个,可通过yum list|grep ssh查看远端仓库存储的文件
原理:远端搭建一个web服务器,将软件包放在指定目录下,同时提供软件包目录索引,远程通过http访问的方式,下载相应软件包
及相关依赖
2)本地安装
若服务器没有联网,则可通过搭建本地库的方式进行安装
将光盘挂载到指定目录
mount -t ios9660 -o loop /dev/cdrom /mnt/centosdvd1/
cd /etc/yum.repos.d/
失效原有加载配置
rename .repo .repo.bak *(将当前文件夹下所有以.repo结尾的文件修改为.repo.bak)
cp centos_demia.repo.bak local.repo
vi local.repo
baseurl=file:///mnt/centosdvd1 设置加载地址 gpgcheck=0 设置免校验 enable=1 设置生效
yum install openssh-clients.x86_64 -y(跳过询问,默认执行)安装ssh客户端
ssh (xiaozhao/root/)192.168.33.101
- exit 注销
- halt 关机
- reboot重启
- ipconfig 查看ip地址
- secureCRT 是一个SSH客户端
虚拟机克隆
1.停掉原虚拟机
2.在vmwarede 的机器列表原虚拟机上点右键,选择管理--克隆
3.在新机器中修改网卡硬件信息,及网卡的ip配置(因为克隆后会生成一块新的网卡信息,老的网卡信息也保留,我们要删除老的网
卡信息)
- 修改网卡硬件信息:
vi /etc/udev/rules.d/70-persistent-net.rules
删除eth0那一条,更改eth1为eth0
- 修改ip配置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
- 删除HWADDR,UUID
- 更改IPADDR的值
因为两个机器在相同的网关下,所以可以ping通,也可以跟windows主机ping通
2.9 ssh 免密登录
原理:假如有两台机器 client01,server01,现在client01想免密登录到server01上
1.client01用户生成一对公钥 ssh-keygen
2.client01将公钥拷贝到目标机器server01上 ssh-copy-id 192.168.33.101
3.目标机器server01将client01的公钥放入授权池中~/.ssh/authorized_keys
免密登录流程
1.client01通过ssh命令登录到server01 ssh 192.168.33.101
2.server01检查授权池中是否有client01对应的公钥
3.server01用公钥加密一个随机字符串发送到登录方client01
4.client01用私钥解密字符串并发送回server01
5.server01验证成功,建立远程连接
rm -rf * 删除当前文件夹下的所有文件
- 远程登录
sh root@192.168.33.101
ssh 192.168.33.101
- 远程拷贝文件
scp aa.txt 192.168.33.101:/root
scp -r aaa/ 192.168.33.101:/root(远程拷贝目录)
- 远程执行命令
ssh 192.168.33.101 "echo 1111 > /root/666.txt"
3.0 网络管理
主机名配置
- 查看主机名 hostname
- 修改主机名 hostname hadoop(临时修改)
- 长久修改主机名(重启后永久生效)
修改配置文件 /etc/sysconfig/network
hostname=hadoop
IP地址配置
域名配置
你在浏览器中输入www.baidu.com解析过程如下:
1.首先在从域名映射文件hosts中查找域名对应的ip,若找到,则访问。若未找到则执行2
2.系统访问网络配置中的DNS服务器配置,找到对应的域名服务器,由域名服务器返回要访问的IP地址(所以要想通过域名访问,一
定要配置DNS服务器)
secureCRT 是一个windows上的SSH客户端,
如果不想通过ip访问 ssh 192.168.33.101,
可通过修改windows下的host文件设置域名对应的IP地址,(192.168.33.101 hadoop)
以后就可以通过域名访问了(ssh hadoop)
网络服务管理
后台服务管理
- service network status 查看网络服务状态
- service network stop 停止网络服务
- service network start 启动网络服务
- service network restart
- service --status-all 查看所有服务状态
设置后台服务的自动启动管理
- chkconfig 查看所有拂去其自启配置
- chkconfig iptables off 关掉指定服务的自动启动
- chkconfig iptables on 开启指定服务的自动启动
防火墙管理
- 关闭防火墙:service iptables stop
- 查看防火墙:service iptables status
- 启动防火墙:service iptables start
- 禁止防火墙开机自动启动:chkconfig iptables off
系统中网络进程的端口监听
- netstat -nltp 查看正在执行的网络程序(tomcat/redis等)监听端口
- -n 打印程序名字
- -l 查看监听端口的程序
- -t 基于tcp
- -p 打印端口
httpd 静态资源服务器
- yum list|grep httpd
- yum install httpd.x86_64
- service httpd start
- service httpd status
- netstat -nltp
web服务器搭建流程:
cd /var/www/html
vi hello.html 写文件
通过浏览器访问创建的html页面
service iptables start 开启防火墙,则不能访问
service iptables end 关闭防火墙,可以重新访问
httpd web服务启动后,可通过在浏览器地址栏中输入http:hdp01或http:ip地址,访问web服务器
3.2 定时任务
windows定时任务 附件-任务计划-创建任务
linux crond定时任务
- serive crond status 查看crond任务启动状态
- crontab -e 编写任务执行计划(语法类vi,等同 vi /var/spool/cron/root)
- crontab -r 删除定时任务
- yum install crontabs 远程安装crontab软件
- srevice crond start 启动服务
- service crond stop 停止服务
- service crond restart 重启任务
- service crond reload 重新加载配置
- service crond status 查看服务状态
命令格式
crond [-u user] file
crond [-u user] [-e|-l|-r]
- -u user 设定某个用户的crond服务,默认root当前用户的crond服务
- -e 编辑某个用户的crontab 文件内容
- -l 显示某个用户的crontab文件内容
- -r 删除某个用户的crontab文件内容
- file 是命令文件的名字。表示将file作为contab的任务列表文件载入定时计划中
配置说明
基本格式:
* * * * * command
分 时 日 月 周 命令
- 第1列表示分钟1~59 每分钟用* 或*/1表示
- 第2列表示小时0~23(0表示0点) 7-9表示:8点到10点之间
- 第3列表示日期1~31
- 第4列表示月份1~12
- 第5列表示星期0~6(0表示星期天)
- 第6列表示命令
配置实例:
- */1 * * * * date>>/root/date.txt 每分钟指定一次date命令
- 30 21 * * * /usr/local/etc/rc.d/httpd restart 每晚21:30重启apache
- 45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart 每月1/10/22日4:45重启
- 10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart 每周六、周日的1:10重启
- 0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart 每天18:00至23:00之间每隔30分钟重启
- 0 23 * * 6 /usr/local/etc/rc.d/httpd restart 每周六23:00重启
- * */1 * * * /usr/local/etc/rc.d/httpd restart 每小时重启
- * 23-7/1 * * * /usr/local/etc/rc.d/httpd restart 晚上11点到早上7点之间每小时重启
- 0 11 4 * mon-wed /usr/local/etc/rc.d/httpd restart 每月4号与每周一至周三11:00重启
- 0 4 1 jan * /usr/local/etc/rc.d/httpd restart 一月一号4点重启apache
secureCRT 配置:
- ctrl+l或clear清屏
- alt+p 弹出sftp对话框,将jdk拖拽至对话框(效果类似于put命令)
- 如果遇到中文字符地址,可以在当前对话框上右键单击选择session options->appearance 设置编码方式
shell编程
vi hello.sh
#!/bin/bash ls
两种执行方式
1)chmod +x hello.sh 增加可执行权限
./hello.sh 执行hello脚本
2) 用shell解析hello文件
sh hello.sh
set 显示当前进程中的所有变量 unset A 撤销变量 a=1 a="hello wrold" echo $a echo $a"s"(不能用echo $a+"s") 或echo ${a}s
hello.sh文件内容:
#!/bin/bash echo $a
1)用./hello.sh输出不了a的内容
用. ./hello.sh可以输出a的内容
2)source hello.sh 让hello.sh在当前bash解析,否则会产生子bash来执行(相当于将儿子拉到父亲这一级来执行)
3)export a="hello world" 让当前bash的自变量能被所有子bash访问
./hello.sh可以输出a的内容
/etc/profile文件下
export PATH=$PATH:$JAVA_HOME/bin 作用:让当前bash的所有子bash都能访问path
source /etc/profile 作用:生效文件,要把当前变量定义发送到当前bash这一级
算术运算:
1)用expr
格式expr m + n 或$((m+n)) 注意expr运算符间要有空格
例如计算(2+3)*4的值
1.分布计算
S=`expr 2 + 3` expr $S*4 ## *号需要转义
2.一步完成计算
expr= `expr 2 + 3`*4 echo `expr\`expr 2 + 3\`*4`
2) 用(())
((1+2)) (((1+2)*4)) count=1 ((count++)) echo $count 若想渠道运算结果,需要用$引用 a=$((1+2))
3) 用$[]
a=$[1+2] echo $a
4)用let
i=1 let i++ let i=i+2
if-else实例
vi welcome.sh
#!/bin/bash read -p "place enter your name:" NAME # read 从控制台读入,-p 控制台打印提示语句 , 输入变量赋值给NAME if [ $NAME = root ] # 所有都是命令,if是命令,[]也是命令(相当于test,用来判断是否),=两边也要有空格,否则三个变量 当成一个变量 then echo "hello $NAME,welcome!" elif [ $NAME = edu360 ] then echo "hello $NAME,welcome" else echo "SB,GET OUT HERE!" fi
注意:卸载一行的话,用;封号分割
bash命令,上一行执行出错,下一行仍会继续执行,不会中断
case 实例:
vi casedemo.sh
#!/bin/bash case $1 in start) echo "starting" ;; stop) echo "stoping" ;; *) echo "usage:{start|stop}" esac
执行:sh casedemo.sh start
for 实例:
1.方式1
for N in 1 2 3 do echo $N done
或
for N in 1 2 3;do echo $N;done
或
for N in {1..3};do echo $N;done
2.方式2
for ((i=0;i<=5;i++)) do echo "welcome $i times" done
或
for ((i=0;i<=5;i++));do echo "welcome $i times";done
函数定义
vi funcdemo.sh
#!/bin/sh #func1.sh hello() ## 函数定义 { echo "hello there today's day is `date +%Y-%m-%d`" return 2 ##返回值其实是状态码,只能在[0-255]范围内 } echo "now going to the function hello" hello echo $? 获取函数的return值 echo "back from the function"
注:脚本语言不需要编译,所以先后顺序到一句执行一句,函数定义与执行有
yy赋值当前行
pp粘贴