部署方案@Linux

1 Linux基础命令

1.1 最基础命令

  • 所有命令后台执行 – 在命令的末尾加 &

  • pwd 查看当前目录

  • ping www.baidu.com

  • 查看ip ifconfig

  • netstat -tunlp|grep 端口--查看占用进程的端口号(ps –ef|grep 端口 也可以)

  • 解压与压缩(zip/tar)

    • 解压zip包 #|$ unzip ZIPNAME.zip

    • 压缩为zip包 #|$ zip ZIPNAME.zip FILE

    • 解压tar包 #|$ tar -zxvf TARNAME.tar

    • 解压到指定目录 #|$ tar -zxvf TARNAME.tar PATH

    • 压缩为tar包 #|$ tar -zcvf TARNAME.tar.gz FILE

1.2 文件管理命令

  • 文件的创建

    • 创建方式1 #|$ touch FILENAME

    • 创建方式2 #|$ vi FILENAME

  • 文件夹创建

    • 普通创建 #|$ mkdir DIRECTORY

    • 创建多级目录,必须加参数-p, 表示目录不存在也创建 #|$ mkdir -p DIRECTORY01/DIRECTORY02/DIRECTORY03

  • 链接的创建

    • 创建一个文件或文件夹的软链接,-s表示软链接 #|$ ln -s FILENAME/DIRECTORYNAME LINKNAME

    • 创建一个文件或文件夹的硬链接,-P表示硬链接 #|$ ln -P FILENAME/DIRECTORYNAME LINKNAME

  • **文件的追加 >>,重定向输出到指定文件 > **

    • 重定向 #|$ echo 'CONTENT' >> FILENAME
  • 自带编辑工具vi的使用

    • 编辑文件内容 # vi filename

      • 进入编辑插入模式 #|$ i

      • 退出编辑模式 #|$ ESC键

      • 保存并退出 #|$ :wq

      • 不保存退出 #|$ :q!

    • 文件的编辑

      vi/vim FILENAME

      快捷键:

      在vi查看的模式下,

      • 删除光标所在的一行 dd

      • 保存文件并退出 ZZ

      • 删除光标覆盖的字符 x

      • 下一行进行插入 o

      • 跳转到最后一行 shift + g

  • 文件内容的查看

    • 查看全部内容,文件内容比较少 #|$ cat FILENAME

    • 翻页查看 #|$ more FILENAME

    • 查看文件末尾的内容,通常与-f参数连用,适合查看系统的日志信息 #|$ tail FILENAME

    • 查看文件开头的内容,适合查看文件的格式,内容模板样式 #|$ head FILENAME

  • 文件的拷贝

    • 拷贝一个文件到一个目录中 #|$ cp FILENAME DIRECTORY

    • 拷贝一个文件的内容到一个新的文件中 #|$ cp FILENAME NEWFILENAME

    • 拷贝一个文件夹到另外一个文件夹中 #|$ cp -R DIRECOTRY NEWDIRECTORY

  • 文件的移动或重命名

    • 同一个目录下就是重命名 #|$ mv FILENAME NEWfILENAME

    • 不同目录下就是移动 #|$ mv FILENAME DIRECTORY

  • 文件的删除

    • 删除目录,如果目录有内容,需要加递归参数 -R,如 #|$ rm -R DIRECTORY

      注意事项:删除的目标最好是绝对路径,不要相对路径

  • 文件的搜索

    • 搜索指定目录下的某个文件 #|$ find -name PATH/FILENAME

    • 模糊搜索指定目录下的某个文件 #|$ find PATH/FILENAME\*

1.3 用户管理

  • 创建用户

    • 新增用户 # useradd USERNAME

    • 修改密码 # passwd USERNAME

      在Linux系统下,默认情况下,创建一个用户的同时,会给用户在系统的目录下创建一个属于自己的用户目录,该目录称为用户主目录/宿主目录

      规则: /home/username

      exp: /home/moyue,用户主目录可以使用 ~ 表示

  • 切换用户

    • 切换用户 #|$ su - USERNAME

1.4 系统管理

  • 系统内核版本信息

    • 使用什么系统 #|$ uname

  • 使用的内核版本 #|$ uname -r

  • 系统的服务器信息(cpu信息) #|$ cat /proc/cpuinfo

  • 系统的内存信息 #|$ cat /proc/meminfo

1.5 磁盘管理

  • 查看磁盘的使用情况 #|$ df -lh

  • 查看当前目录占用的内存 #|$ du

  • 查看指定目录占用的内存大小 #|$ du -sh DIRECTORY

  • 查看创建系统的内存划分情况 # fdisk -l

  • 修复磁盘,自动修复(重启虚拟机遇到提示某个磁盘损坏) # fsck 磁盘名 [fsck: file system check]

  • 查看挂载磁盘信息 # mount

  • 挂载磁盘 # mount 磁盘名 设备名

  • 卸载磁盘 # umount 磁盘名

1.6 内存管理

  • 查看系统内存使用情况 #|$ free

  • 查看系统进程

    查看进程命令 #|$ top

    查看进程更加详细 #|$ top -M


2 Linux系统常用文件

2.1 目录认识

目录 介绍
/usr/bin、bin 存放所有用户可以执行的命令
/usr/sbin、sbin 存放只有root可以执行的命令
/home 用户默认的宿主目录
/proc 虚拟文件系统,存放当前进程信息
/dev 存放设备文件
/lib 存系统程序运行所需的共享库
/lost+found 存放系统出错的检查结果
/tmp 存放临时文件
/etc 存放系统配置文件
/var 包含经常发生变动的文件,如日志文件,计划任务等
/usr 存放所有命令、库、手册等,通常程序会安装在/usr/local目录下
/boot 内核文件及自举程序保存位置
/mnt 临时文件系统的安装点

2.2 环境变量配置文件etc/profile

  • 重新加载环境变量配置文件 # source PROPERTIES

  • 通过回声查看环境变量 #|$ echo $PATHecho $JAVA_HOME

2.3 Host文件 /etc/hosts

配置为: ip地址 主机名 域名

例如: 192.168.169.136 moyue www.moyue.com

主机名称与ip地址映射的好处:可以直接使用主机名称或域名代替ip地址

2.4 查看网卡配置信息

  • 查看网卡 /etc/sysconfig/network-scripts/ifcfg-eth0

    • 如何重启网络设置 #|$ service network restart

    • 如何启动图形管理界面来配置网卡 #|$ setup

2.5 权限文件 /etc/sudoers

在文件的最上插入 USERNAME ALL=(root)NOPASSWD:ALL

修改权限文件如上,则凡是需要root用户的操作的命令,前面加sudo即可

2.6 系统的编码文件 /etc/sysconfig/i18n

修改系统的编码为UTF,解决不能保存中文问题: LANG="en_US.UTF-8"

Windows的默认编码为GBK,Linux的默认编码为UTF-8。在Windows下编辑的中文,在Linux下显示为乱码。为了解决此问题,修改Linux的默认编码为GBK。方法如下:

  • 方法1
    • vi /etc/sysconfig/i18n, 文件内容默认为:
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

修改为:

export LC_ALL="zh_CN.GBK"
export LANG="zh_CN.GBK"
  • 方法2
    • vi /etc/profile

修改为:

LANG="zh_CN.GBK"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh"
SYSFONT="latarcyrheb-sun16"

2.7 防火墙文件 /etc/sysconfig/iptables

查看 # service iptables status

关闭 # service iptables stop

开启 # service iptables start(restart)

永久性设置防火墙关闭/开启 # chkconfig iptables off/on

放行某个端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

2.8 开机执行脚本文件

编辑 /etc/rc.d/rc.local 文件内容,往里面添加开机想执行的内容即可

2.9 修改远程登录进入默认目录

修改远程登录进入默认目录

  • 进入当前用户目录 cd ~

  • 编辑 .bashrc,往里面添加要跳转的目录,比如 cd /usr/local


3 定时调度

在Linux当中,自带的调度功能Crontab,针对用户,每个用户都可以调度自己的任务

  • 列出当前所有的定时任务 #|$ crontab -l

  • 删除所有的定时任务(若要删除部分,直接编辑文件,用#注释即可) #|$ crontab -r

  • 编辑自己的定时任务 #|$ crontab -e

crontab的基本定义: * * * * * command (6个字段,前面固定5个,所有字段之间空格隔开),前面5个代表时间,即:每分、时、日、月、星期执行一次,command代表具体命令

每个星的解释:

* * * * *
分:1-59 时:0-23 日:1—31 月:1-12 星期:0-6
  1. 每2分钟执行一次   */2 * * * * command

  2. 每2小时执行一次   * */2 * * * command

  3. 每2天执行一次     * * */2 * * command

  4. 每2个月执行一次   * * * */2 * command

  5. 每2星期执行一次   * * * * */2 command

  6. 每晚9:30执行一次 30 21 * * * command

  7. 每月1号、11号、21号的2:31执行一次  31 2 1,11,21 * * command

技巧:

  如果是数字,则遇到数字就执行一次

  如果是星星,*代表每单位执行一次,*/2代表每2个单位执行一次,依此类推	

  8. 每天20:00 到23:00, 每半个小时执行一次

  语意翻译: 每30分钟执行一次,在20点21点22点23点的时候执行
  
  即:
	*/30 20,21,22,23 * * * command

  补充:

	20点开始,所以可以认为每半个小时就是每次遇到0和30的时候;

	20到23点这段连续的时间,也可以写作20-23

	因此,上面的命令也可以写作:

		0,30 20-23 * * * command	


4 Shell基础编程

Shell是一段写好的可以执行的脚本,通常以.sh作为后缀名

bin目录下的Shell脚本执行程序:sh和bash

 **sh是bash的一个软链接**

 #|$ cd /bin

 #|$ ll得到

   lrwxrwxrwx. 1 root root      4 Oct  7 05:43 sh -> bash

  由此可以看出,sh是bash的一个软链接[sh -> bash]

通常情况下,再sh脚本的第一行,会指定用哪个脚本来执行它本身 #!/bin/bash 或者 #!/bin/sh

除了第一行,其他行中出现#都代表注释

  • 变量

    • 根据作用域,变量分为:

      本地变量:在shell脚本中声明,只在该脚本有效

      环境变量:又称全局变量,在shell脚本中,所有的进程都有效

    • 变量的赋值

      VARIABLENAME=VALUE

      注意事项:等号两边不能有空格,如果要赋值为空值,可以在等号后边加上一个换行符

    • 显示变量的值

      echo $VARIABLENAME 或 echo ${VARIABLENAME}

      显示所有的变量 set

    • 清除变量

      unset $VARIABLENAME

    • 创建全局变量

      export VARIABLE=VALUE

    注意事项:
      * 全局变量按照惯例全部都应该大写
      * 可被所有的shell环境下访问
      * 如果父工程产生了子工程,则环境变量可被继承并复制
  • 位置参量

    • sh脚本后面所加的参数就是位置参量,多个参数之间用空格隔开那么如果某个参数有空格,那么该参数必须用引号括起来

    • 位置参量是一组特殊的内置变量,通常被shell脚本用来接收命令行接受的参数,或被函数用来保存传递给它的参数

    • 在脚本中,如果需要使用传递过来的位置参量,用$NUM来接收,其中NUM为参数的位置,$1:第一个参数

	注意事项:
		大于9的参数位置都必须用{}包裹,即${10}
		$0: 表示当前脚本的文件名
		$#: 表示实际传入的参数个数
		$*: 将所有的参数拼成一个字符串显示出来,每个参数用一个空格隔开
		$@: 没有加双引号的时候和$*一样,加了双引号有区别
		$$: 脚本运行的当前进程号
		$!: 最后一个运行的进程号
		$?: 显示前面最后一个命令的退出状态,0表示么有错误,其他值为有错误
			备注:linux所有的命令都有一个状态码
  • 数组
    • 数组的定义 arr=(var1 var2 ..)

    • 获得数组的值 ${arr[index]}

      备注:
	获得所有的元素 ${arr[*]}
	获得元素的个数 ${#arr[*]}
  • 给数组中的元素赋值 arr[index]=NEWVAL

  • 时间

    • 显示时间 date

    • 格式化(不会就man或help一下) date +%Y-%m-%ddate +%Y/%m/%d

    • 赋值某个变量 var=$(date)

    • 时间的增加和减少

    var=$(date --date='1 days')      : 明天

    var=$(date --date='-1 days')     : 昨天

    var=$(date --date='1 days ago')  : 昨天

    var=$(date --date='-1 days ago') : 明天
  • 日历

    • cal

    • cal 2016

    • cal 09 2016

  • test判断

  test -e filename
    -e: 该文件/文件夹是否存在[exists]
    -f: 该文件是否存在
    -d: 该文件夹是否存在
    -r: 该文件/文件夹是否可读
    -w: 该文件/文件夹是否可写
    -x: 该文件/文件夹是否可执行		

  test -eq NUMBER
    -eq: -ne: -gt: -lt: -ge: -le: 两个整数之间的数值判断

  test -z string
    -z: 字符串是否为0?若为空字符串,则为true
    -n: 字符串是否非为0?若为空字符串,则为false
    str1 = str2: 两个字符串是否相等
    str1 != str: 两个字符串是否不等

  test 等价
    test -e filename 等价于 [ -e filename]
  • if判断
  if [ balabala ]; then
    balabala
  elif [ balabala ]; then
    balabala
  else
    balabala
  fi
  • 循环
  for循环1

  for var in 1 2 3 4 5
  do
    balabala
  done
  for循环2

  for((i=0;i<${num};i=i+1))
  do	
    balabala
  done
  while循环1

  while [condition]
  do
    balabala
  done
  while循环2

  until [condition]
  do
    balabala
  done
  • $(整体):

    因为$(num1) + $(num2)不是整体,所以需要变成整体 ($(num1) + $(num2))

    编程整体后,使用$()对整体进行解析,才能完成相加 $(($(num1) + $(num2)))

posted @ 2020-01-03 08:57  默月  阅读(154)  评论(0编辑  收藏  举报