Linux 学习

1.1 文件创建

命令 含义
touch *.txt 重建空文件
echo 111>a.txt 新内容覆盖
echo 111>>a.txt 新内容追加
ll -h 以可读的方式展示文件大小

 

1.2 vi 使用

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 外部数设备挂载

含义:将外部设备内容映射到文件系统中
可以挂载光盘、硬盘、磁盘、光盘镜像等

  • 挂载光驱
  1. mkdir /mnt/cdrom 创建文件夹用来挂载外部系统内容
  2. mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom

    将设备/dev/cdroom(-t iso9660 指定设备类型为iso9660)以只读(-o ro/loop)的方式挂载到/mnt/cdrom文件夹下

  • 挂载光盘镜像文件(.iso文件)
  1. mount -t iso9660 -o loop /home/hadoop/Centos-6.7.DVD.iso /mnt/cdrom
  2. 注意:挂载的资源再重启后就会失效,需要重新挂载,想自动挂载,需修改/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粘贴

posted on 2018-09-26 10:47  布衣小工  阅读(155)  评论(0编辑  收藏  举报

导航