zoukankan      html  css  js  c++  java
  • 运维

    --

    运维  云计算 架构 大数据  


    在linux os上用开源软件(或商业软件或自已开发的软件)实现企业级应用


    闭源
    开源 


    物联网  互联网+  大数据  人工智能  虚拟化  云  容器    

    ================================================================

    操作系统OS

    windows
    linux


    unix --- linux

    unix
    AIX IBM
    HP-UNIX HP
    solaris SUN (ORACLE)

    linux (内核+软件)
    rhel
    redhat centos
    fedora

    opensuse
    ubuntu
    debian
    ......

    ===================================================================


    os安装

    1,光驱  安装盘(用iso文件使用nero这种软件刻录到光盘上)
    2,u盘 用iso文件使用nero这种软件刻录到U盘上
    3,硬盘 
    4,网络 手动
      自动


    BIOS 里主要的设置
    intel VT 技术 (支持虚拟化的,在windows上使用虚拟机也要打开这个选项)

    (BIOS EFI UEFI)顺序 

    分成下面几种安装场景:
    1,硬盘里的原有windows想要保存的人
    干掉一到两个盘(在windows磁盘管理器里删除掉,使之成为未分配空间),大概留出200G甚至以上的未分配来安装双系统


    2,不能成功安装双系统的人(可能电脑太新或太老,兼容有问题),那么先用windows下的虚拟机来使用linux

    建议物理机分区方式:
    /boot 200M
    / 100G-150G
    swap 4G
    /soft 50G-100G 存放笔记和软件等
    /vm 100G-150G 存放vmware虚拟机


    ===============================================================================


    # ll rhel-server-6.5-x86_64-dvd.iso
    -rwxr-xr-x 1 root root 3853516800 Jul 18 10:42 rhel-server-6.5-x86_64-dvd.iso


    ===============================================================================

    # dhclient eth0 --自动dhcp获取ip地址(此ip是临时获取,不是固定的,重启电脑后可能要再次获取)
    # ping 172.16.19.253 --测试一下网络能否和此ip通迅

    # wget http://172.16.19.253/1.sh --下载此文件,默认下载到当前目录 (此文件是一个帮助你自动配置yum的脚本)

    # sh 1.sh --执行此脚本 (执行完后就配置好了yum)


    # yum install firefox tigervnc -y --安装浏览器,vnc客户端  -y参数代表直接确认


    # vncviewer 172.16.19.253 --然后就可以远程vnc连接我了,密码为123456


    ==================================================================================

    linux终端 (操作命令的工具)

    打开终端的方法:
    方法一:桌面 鼠标右键 --》 open in terminal
    方法二:alt +F2 --> 输入 gnome-terminal

    ctrl+shift+加号 放大
    ctrl+减号 缩小
    ctrl+shift+t 再开一个终端


    方法三:字符界面(文本界面)
    切换方法 ctrl+alt+F2到F6 ctrl+alt+F1是切换到图形界面


    图形界面打开的终端,设备文件对应/dev/pts/0,/dev/pts/1......等
    字符界面的终端,设备文件对应/dev/tty1,/dev/tty2......等

    ================================================================================


    linux可以把它看作是 linux= kernel + N个开源soft

    www.kernel.org 内核官方网站

    ==========================================


    # ls /
    bin dev lib media net root share tmp
    boot etc lib64 misc opt sbin srv usr
    cgroup home lost+found mnt proc selinux sys var


    目录结构:是一个树状的目录结构,最底层的目录是/(根目录)
    bin(binary):放命令,一般是普通用户能使用的命令
    sbin(super binary): 放命令,只能是管理员能使用的命令

    usr(user):放用户数据的(编译安装的软件,用户的软件源码,等等,相当于是一个用户的根)
    dev(device):设备目录(linux下有一句话可以这样说,任何设备都是文件)
    lib或lib64(library):放库文件
    root:超级管理员的家目录
    home:其它普通用户的家目录
    tmp(temporary):临时目录,存放很多软件运行的一些临时文件(此目录建议新手不要去做任何的操作)
    boot:存放开机启动有关的一些文件
    etc:大部分的软件的配置文件都会存放在这

    proc: 这两个是伪文件系统,记录系统动态的一些信息(当前系统的各种状态:比如 cat /proc/cpuinfo查看cpu相关的信息;cat /proc/cpuinfo |grep -E "vmx|svm"查看cpu是否支持vmx或svm指令集)
    sys:
    (以前就只有一个proc,现在分成了两个proc就是processes的缩写,sys是system的缩写)

    var:一个比较综合的目录,存放了日志,pid文件,邮件等等
    selinux:存放selinux(security enhanced linux)规则的目录


    mnt
    media
    misc 三个空目录,一般用于挂载用的


    opt 空目录,用于安装扩展软件包


    [root@li Desktop]# pwd --查看你当前在哪个目录
    /root/Desktop --这个就是你的桌面

    =============================================================================

    /dev/sda 代表第一个硬盘
    /dev/sdb 代表第二个硬盘
    /dev/sdc 代表第三个硬盘...以此类推

    还有一些其它不同类型或不同接口的硬盘可能叫/dev/hda,/dev/vda等


    s代表(如sata,scsi,sas,U盘,移动硬盘等设备)
    h代表ide硬盘
    v代表virtio硬盘(kvm虚拟化会用到)


    /dev/sda1 代表第一个硬盘的第一个分区

    windows c盘 d盘 e盘 .......
    linux 管理员不能直接访问分区,分区需要挂载到一个目录,然后管理员通过访问挂载的目录去访问分区里实际存放的数据


    # df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/sda1 194M 47M 137M 26% /boot
    /dev/sda2 97G 74G 18G 81% /

    假设我现在就是下面这样的分区情况,如果我拷贝一个100M大小的文件到/boot目录下,请问这100M会占哪一个分区的空间?
    答案:
    占/dev/sda1分区的空间

    如果我umount /boot后,再拷贝到/boot目录,请问这100M会占哪一个分区的空间?
    答案:
    umount后,那么/boot没有分区挂载了,那就属于/目录对应分区了,也就是/dev/sda2这个分区

    如果拷贝到/opt/目录呢,请问这100M会占哪一个分区的空间?
    答案:
    同上,只要没有单独的分区挂载的目录,全部都属于/目录对应的分区(我这里为/dev/sda2)

    ==========================================================================

    文件系统:组织和管理文件的软件

    windows: FAT32,NTFS
    linux:ext2,ext3,ext4(rhel6默认),xfs(rhel7默认),Reiserfs(suse默认),btrfs,zfs等


    问题:
    linux上能否使用所有的文件系统呢?
    答案:
    linux的内核会把所有的和计算机相关的技术都会支持(文件系统只是它其中的一个小部分而已),但是你使用的内核不一定都支持(因为内核都是经过了功能选择配置的,不是所有功能都选上了)


    redhat的内核就把支持ntfs格式的功能去掉了,那么你要支持ntfs格式的U盘挂载,怎么做?
    方法一:重编内核再加上支持ntfs的功能
    方法二:不用重编内核,安装一些软件就像打补丁的方式再让内核支持ntfs


    # fdisk -l --查看当前系统上的设备

    Disk /dev/sda: 500.1 GB, 500107862016 bytes --这是我的硬盘500G
    255 heads, 63 sectors/track, 60801 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x90ad9350

    Device Boot Start End Blocks Id System
    /dev/sda1 * 1 26 204800 83 Linux
    Partition 1 does not end on cylinder boundary.
    /dev/sda2 26 12774 102400000 83 Linux
    /dev/sda3 12774 13029 2048000 82 Linux swap / Solaris
    /dev/sda4 13029 60802 383732736 5 Extended
    /dev/sda5 13030 25778 102400000 83 Linux
    /dev/sda6 25778 32152 51200000 83 Linux
    /dev/sda7 32152 47902 126508032 83 Linux
    /dev/sda8 47902 54429 52434959 83 Linux
    /dev/sda9 54430 56979 20480000 83 Linux


    Disk /dev/sdb: 31.0 GB, 31001149440 bytes --这是一个连接的U盘
    3 heads, 9 sectors/track, 2242560 cylinders
    Units = cylinders of 27 * 512 = 13824 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0xd6fdd6fd

    Device Boot Start End Blocks Id System
    /dev/sdb1 * 29052 2242560 29882368 7 HPFS/NTFS --这里是这个U盘分区的文件系统格式

    ===================================================================================


    命令基础


    内部命令 --bash软件自带的命令
    终端相当于bash的接口


    终端
    |
    shell(壳) bash ksh csh

    内核
    |
    硬件



    man cd

    bash, :, ., [, alias, bg, bind, break, builtin, caller,
    cd, command, compgen, complete, compopt, continue,
    declare, dirs, disown, echo, enable, eval, exec, exit,
    export, false, fc, fg, getopts, hash, help, history, jobs,
    kill, let, local, logout, mapfile, popd, printf, pushd,
    pwd, read, readonly, return, set, shift, shopt, source,
    suspend, test, times, trap, true, type, typeset, ulimit,
    umask, unalias, unset, wait - bash built-in commands, see
    bash(1)


    外部命令 --除了内部命令以外的都叫外部命令


    ==================================================================================


    命令帮助


    man ls --退出键为q(常规的一些退出方式:q,exit,quit,logout,ctrl+c,ctrl+d)
    info ls

    ls --help

    help cd --只有内部命令才能用

    ls /usr/share/man/ --man文档的位置

    /usr/share/man/man1/ls.1.gz

    man的数字只是一个分类而已,不用太在意


    ------------------------------------


    命令串讲


    ls
    ls -l 或 ll --详细列表形式查看
    ls -a --查看到隐藏文件(在linux下就是以.开头的文件)
    # nautilus /root/ 以图形的方式打开/root目录,这样是看不见以.开头的文件的

    ls -l -a 或 ls -a -l 或 ls -al 或 ls -la

    ls -S 从大到小排
    ls -Sr 从小到大排
    ls -t 按时间排


    # which ls --查看ls命令路径和别名情况
    alias ls='ls --color=auto'
    /bin/ls


    # dir --没色彩
    # alias dir='dir --color=auto' --做个别名
    # dir --有了

    unalias dir --取消别名

    # ls -l /etc/fstab
    -rw-r--r-- 1 root root 1077 Jun 7 17:34 /etc/fstab


    -  普通文件
    d  目录
    p pipe管道文件
    s socket文件(socket是一种程序的连接方式)
    l 链接文件(symbolic link,符号链接,软链接;类似windows的快捷方式)
    b block块设备文件
    c character字符型设备文件

    # file /dev/tty1 --file命令也可以查看一个文件的类型
    /dev/tty1: character special

    # file /dev/sda1
    /dev/sda1: block special


    =============================================================================


    文件查看有关的基础命令 cat head tail more less tac rev


    # cat /etc/inittab  --查看文件所有内容

    # head /etc/inittab --查看文件前十行内容
    # tail /etc/inittab --查看文件后十行内容
    # head -3 /etc/inittab --指定查看文件的前三行
    # tail -3 /etc/inittab --指定查看文件的后三行 
    # tail -f /var/log/messages --动态监控文件的末尾(/var/log/message日志文件是系统最常见的日志文件,会记录系统大部分的通知或错误信息)
    (常用于监控日志文件,因为日志文件都是从上往下记录,并且是变化的。那么动态监控文件末尾其实就是随时可以看到日志最近的变化)


    小实验;
    第1步:一个终端 tail -f /var/log/messages
    第2步:另一个终端logger -t "任何的标题信息" " 任何的正文信息"  --logger就是一个可以往/var/log/messages文件里写日志信息的命令(t是tag的意思,也就是标签或标题的意思)
    第3步:再观察第一个终端的变化


    # more /etc/rc.sysinit --回车向下移一行,空格向下移一页,q键退出
    # less /etc/rc.sysinit --向上向下箭头可以移,page up 和page down键移页,q键退出


    [root@li ~]# cat /test/1.txt
    12345
    23456
    34567
    45678
    56789
    [root@li ~]# tac /test/1.txt --上下行倒序
    56789
    45678
    34567
    23456
    12345
    [root@li ~]# rev /test/1.txt --左右字符倒序
    54321
    65432
    76543
    87654
    98765


    ========================================================================


    文件操作有关的命令 cd pwd mkdir touch cp mv rm


    # mkdir /test --创建目录;mkdir -p /a/b/c/d/ 使用-p参数可以一次创建多级目录
    # ls -l -d /test
    drwxr-xr-x 2 root root 4096 Jul 20 10:15 /test
    # cd /test
    # pwd
    /test


    # touch file1
    # stat file1
    File: `file1'
    Size: 0 Blocks: 0 IO Block: 4096 regular empty file
    Device: 802h/2050d Inode: 20 Links: 1
    Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
    Access: 2017-07-20 10:19:34.242423555 +0800
    Modify: 2017-07-20 10:19:34.242423555 +0800
    Change: 2017-07-20 10:19:34.242423555 +0800


    block 块,操作系统块是一次IO(input and output)的单位,系统块默认大小为4096字节;以后oracle里也会学到块的概念,oracle块默认为8192字节
    inode 是文件系统给文件的一个编号,类似于文件的一个门牌号码

    一个优化有关的问题:
    块大好,还小好?
    块大,一次IO数据量大,IO吞吐量大,空间浪费较多
    块小,正好和块大相反

    # ll -i file1 --i参数可以看到文件的inode
    20 -rw-r--r-- 1 root root 0 Jul 20 10:19 file1

    我想创建多个文件怎么做?
    第一种: touch a b c
    第二种:touch {1..10}
    第三种: seq 11 2 20 | xargs touch --seq产生一个序列, |符号是管道(表示把前面的结果传到后面);xargs是把前面的多行结果转成一行
    第四种:写shell脚本做循环

    cd 切换目录命令
    cd ~ 或 cd --切换到当前用户家目录
    cd - --切换到上一次的目录

    . 代表当前目录
    .. 代表上级目录

    # pwd
    /test
    # cd /usr/share/man --绝对路径,相对根目录的路径
    # cd ../usr/share/man/ --相对路径,相对当前目录的路径

    cp 拷贝命令

    cp 源 目标


    对比下面这两条的区别
    # cp /etc/fstab /test
    # cp /etc/fstab /test/


    mv 重命名和粘贴命令

    mv 1 2 --重命名
    mv /test/3 /test/4


    小实验:
    # ll -i 1
    2883587 -rw-r--r--. 1 root root 0 Jul 15 10:56 1

    # cp 1 2
    # ll -i
    total 0
    2883587 -rw-r--r--. 1 root root 0 Jul 15 10:56 1
    2883588 -rw-r--r--. 1 root root 0 Jul 15 10:56 2

    # mv 1 3
    total 0
    2883588 -rw-r--r--. 1 root root 0 Jul 15 10:56 2
    2883587 -rw-r--r--. 1 root root 0 Jul 15 10:56 3

    这个实验说明:cp一个文件,新文件有新的inode,mv 一个文件,inode不变(准确来说,是在同一个分区里mv才不变,不同分区还是会变)

    批量重命名
    # pwd
    /test
    # rm * -rf --此命令非常危险,用的时候一定要注意
    # touch {1..100}.php
    问题:把这100个.php结尾的文件重命名成.html结尾

    man rename

    # rename .php .html *.php --把当前目录下所有.php结尾的文件后缀都替换成.html
    # rename .html .php {20..50}.html --指定只改一定范围的文件


    rmdir rm 删除命令

    rmdir只能删除空目录
    rm能删除任何文件

    rm -rf /test/ --r参数表示递归,f参数表示不用确认


    题目:
    如何把/etc/skel/目录里以.开头的隐藏文件拷到/test/目录

    # cp /etc/skel/* /test/ -rf --错误用法,*号不能代表隐藏文件
    # cp /etc/skel/.* /test/ -rf --错误用法, .*也包括..,也就是会把上级目录的东西也拷过去


    # cp /etc/skel/.[a-Z]* /test/ -rf --正确做法(这里是用到了特殊的正则表达式来实现的)

    扩展:
    因为cp命令在拷贝大文件时没有进度条,所以很多新手会不知道什么时候才能拷完,我这里用shell脚本写了一个新的cp命令,可以有进度条


    # wget http://172.16.19.253/newcp -O /bin/newcp --下载此文件并拷贝到/bin下(参数为大写的O字母)
    # chmod 755 /bin/newcp --确认有能执行的权限
    使用方法:
    # newcp /share/soft/rhel-server-6.5-x86_64-dvd.iso /test/

    --注意:我这个叫newcp的脚本目前只能拷文件,不能拷贝目录(等你学完shell脚本,可以自行修改)

  • 相关阅读:
    构建前端第8篇之---Webstom搭建ES6运行环境
    方法重写
    继承的成员变量的访问特定
    继承的理解
    总结与新的开始
    python 小案例demo07
    python 小案例demo06
    python 小案例demo05
    python 小案例demo05 升级版石头剪刀布
    python 小案例demo04
  • 原文地址:https://www.cnblogs.com/yczlove/p/7326708.html
Copyright © 2011-2022 走看看