linux学习笔记

linux系统分区

最少要包含三个区:
  • 启动分区 /boot: 200M
  • 根分区 /
  • 交换分区 swap:和内存一样大,或者是内存的1.5倍

vm网络的三种模式:

1.桥接 : 相当于跟宿主机平等地位,在同一个网段,占用网段的ip地址
2.NAT : 相当于是用宿主机做代理,和宿主机不在同一个网段
3.仅主机模式 : 不能上网?和宿主机共享网络?

linux内核以及版本规则

内核主要是负责:
  • 硬件管理
  • 内存管理
  • I/O管理
  • VFS
发行版本都是根据内核做的拓展

一般的版本号规则是:r.x.y

  • r: release version
  • x:偶数:稳定版,奇数:开发中版本
  • y:错误修补次数
  • 例如:2.0.38 ; 2.2.16

linux启动顺序

  1. load bios (hardware information)
  2. read MBR’s config to find out the OS
  3. load the kernel of the OS
  4. init process starts…
  5. execute /etc/rc.d/sysinit
  6. start other moudules(etc/moudules.conf)
  7. execute the run level scripts
  8. execute /etc/rc.d/rc.local
  9. execute /bin/login
  10. shell started…

run level

0 - 系统停机状态
1 - 单用户工作状态
2 - 多用户状态(没有NFS)
3 - 多用户状态(有NFS)
4 - 系统未使用,留给用户
5 - 图形界面
6 - 系统正常关闭并重启

例如:使用命令 init 0 表示关机
通过runlevel命令,可以查看系统当前的运行级别。

面试题: 怎么找回丢失的root用户的密码?
关机重启进入单用户模式,修改root用户密码。(单用户模式,root不需要输入密码)
不能远程ssh连接找回密码

修改默认的运行级别,必须是centos7.0以前的版本 /etc/inittab。7.0以后的版本,有所改变。

常用命令

  • 不知道命令怎么用,可以使用:命令 –help来输出帮助信息。
    例如:
    shutdown –help
    或者
    man shutdown

  • ls -l : 以d开头的是目录,以-开头的是文件

  • ls -lh : -h表示符合人观看的模式输出
  • rm -rf xx: r表示递归,f表示force
  • touch 1 :创建一个文件名称是1
  • cp -r :递归复制文件夹
  • vi命令有两种模式,命令模式和编辑模式。
    在命令模式下输入a表示append,i表示insert
    在编辑模式下按ESC表示退出编辑模式,":wq" :表示存盘退出
    在命令模式下:dd表示删除一行,dw表示删除一个单词。
    在命令模式下,o表示插入一行,大写O表示在上面插入一行。
  • find / -name *local 从/查找文件名称为*local的
  • cp -r test/ /home/
  • \cp -r test/ /home/ 覆盖拷贝.
  • cat -n 显示行号
  • cat -n /etc/profile | more 一页一页显示
  • more 基于vi的全屏显示查看文本,一页一页显示。按回车键是显示下一行,按空格键显示下一页,ctrl+b返回上一页,ctrl+f回到下一页
  • less指令,适合查看大文件,它不是一次性将文件全部加载,是一页一页加载的

  • >指令和>>指令:
    >输出重定向和>>追加
    例如:
    ls -l >a.txt : 将列表写入a.txt覆盖
    ls -l >>a.txt : 将列表写入a.txt追加

  • echo “内容” > 文件
  • echo “内容” >> 文件
  • cal : 输出日历
  • echo $PATH : 输出环境变量path
  • ln指令
    软链接,类似于windows的快捷方式
    ln -s /root linkToRoot : 创建一个软连接linkToRoot指向/root
    删除软件界 rm -rf linkToRoot : 注意不要带斜杠,不要写成linkToRoot/
  • history :查看命令历史记录
    history 10 : 显示10条
    !id : 例如!999 :表示执行history中id为999的命令
  • 时间日期:
    date -s “2018-10-10 11:11:11” 设置当前时间
    date “+%Y-%m-%d %H:%m:%s” 2018-09-02 14:09:1535871550
    cal 2020 : 显示2020年的日历
  • find
    find /root -name hello.txt : 在/root目录下,查找名称为hello.txt的文件
    find /root -user nobody : 在/root目录下,查找用户为nobody的文件
    find / -size +20M : 查找/目录下所有大于20M的文件
    find / -size -20M : 查找/目录下所有小于20M的文件
    find / -size 20M : 查找/目录下所有等于20M的文件
  • locate : 快速定位文件,使用前先updatedb
  • grep: 过滤筛选
  • | :管道,将前面的结果交给后面的指令去处理
    cat hello.txt | grep yes : 查找hello.txt中含有yes的内容
    cat hello.txt | grep -n yes : 查找hello.txt中含有yes的内容,并显示所在行的行号
    cat hello.txt | grep -ni yes : 查找hello.txt中含有yes的内容,,并显示所在行的行号,不区分大小写

  • gzip

  • gunzip
  • zip
    zip -r /home mypackage.zip
  • unzip
    unzip -d /home/package mypackage.zip
  • tar
    tar -zcvf hello.tar.gz hello.txt ks.cfg : 将hello.txt ks.cfg 两个文件打包到hello.tar.gz
    tar -zcvf home.tar.gz /home/ : 将home目录打包成home.tar.gz
    tar -zxvf chengli.tar.gz : 解压到当前目录
    tar -zxvf chengli.tar.gz -C aa/ : 解压到aa目录

  • vim编辑器快捷键:

    1. yy拷贝当前行,5yy 拷贝当前行向下的5行
    2. 粘贴复制的内容:p
    3. dd删除当前行,5dd删除当前行及后面的5行
    4. /表示查找,n表示光标定位下一个查找匹配的位置
    5. 快速到达末尾一行:G,回到首行:gg
    6. 撤销:u
      7.跳转到指定行,先输入行号,例如20,再按快捷键shift+g
  • 关机重启:

    shudown -h now :立即关机
    shudown -h 1: 表示一分钟后关机
    shutdown -r now : 立即重启
    halt : 直接使用,等价于关机
    reboot : 重启
    sync : 把内存的数据同步到磁盘,关机之前我们都应当使用sync,防止数据丢失

  • 用户的登录和注销
    logout: 注销当前用户,只能在3级别下使用,在图形界面是无效的。
  • 用户管理
    linux是一个多用户多任务的操作系统
    linux中每个用户都至少要属于一个用户组,根据用户组来进行权限的分配

  • 添加用户

    useradd [选项] 用户名
    例如:
    useradd xiaoming : 该指令会创建一个用户叫xiaoming,也会默认创建一个用户组叫xiaoming,同时会在home目录下创建一个该用户的家目录
    useradd -d /home/dog xiaohong : 创建用户的同时,指定家目录。此处 /home/dog不能事先存在
    passwd 用户名 : 给用户指定密码

  • 删除用户:
    userdel xiaoming :删除xiaoming,保留家目录
    userdel -r xiaohong : 删除xiaohong,同时删除家目录
  • 查询用户信息:
    id 用户名
    例如: id root 查询root用户的信息
  • 切换用户:
    su - 用户名
    例如: su - xiaoming 切换到小明,高权限切换到低权限用户,不需要输入密码,反之是需要的。假如从root->xiaoming,再切换回root是不需要密码的。

    whoami : 查看当前用户是谁

    • 添加用户组
      groupadd wudang : 添加一个用户组wudang
      gourpdel wudang : 删除wudang组
    • 创建用户时,指定组:
      useradd -g wudang zhangwuji 添加用户的同时,jiang其放到wudang组。wudang这个组要事先创建好
  • 改变用户组:
    usermod -g shaolin zhangwuji :把张无忌移到shaolin组
    usermod -d 目录名 用户名 : 改变用户登录时初始目录

  • 用户和组相关的文件:

/etc/passwd : 用户配置文件
/etc/group : 组配置文件
/etc/shadow : 口令配置文件(密码)

组管理和权限管理:

1.文件:
    所有者
    所在组 : 一般来说,文件所在组就是所有者的组,但是也可以改变
    其他组
2.查看文件的所有者: ls -ahl
3.改变文件所有者: chown 用户名 文件名    
        这里修改文件所有者,文件所在组不会变化
  改变用户所有者同时改变所在组: chown 用户名:组名 文件名
  -R 如果是目录,则表示其下所有目录和文件递归生效

4.改变文件所在组: chgrp 组名 文件名
    -R表示递归子目录和文件都生效
5.文件展示列表的含义:
    -rw-r--r--. 1 zhangwuji shaolin 0 9月   4 09:57 ok.txt
        从左到右依次:
        -   : 文件类型(-:文件;d:表示目录;l:表示软连接;b:块文件,硬盘;c:字符设备,鼠标键盘)
        rw- : 表示文件所有者的权限
        r-- : 文件所在组用户的权限
        r-- : 文件其他组用户的权限
        1   : 如果是文件,表示为硬链接文件,如果是目录,表示该目录子目录的个数(不包括文件个数)
        0   : 表示文件的大小,如果是目录则为4096
        后面的日期表示最后修改时间
6. rwx作用到文件:
    r : 代编可读(read)
    w : 代表可写(write),可写并不代表可以删除该文件,能删除一个文件的前提是对该文件所在的目录有写权限。
    x : 代表可执行(execute)
7. rwx作用到目录
    r : 可读,ls查看目录内容
    w : 代表可以修改,目录内创建+删除+重命名目录
    x : 代表可以进入该目录
8. rwx可以用数字来表示:
    r=4, w=2,x=1 因此rwx=4+2+1=7 

- 修改权限 - chmod
第一种方式: +、-、=变更权限
u:所有者, g:所在组 ,o:其他人,a:所有人(u,o,g的总和)
1)chmod u=rwx,g=rx,o=x 文件目录名
2)chmod o+w 文件目录名 : 给o增加w权限
3)chmod a-x 文件目录名 :给a去除x权限
第二种方式:通过数字来变更权限
chmod u=rwx,g=rx,o=x 文件名
等价于:chmod 751 文件名

crond任务调度

常用指令:
    `crontab -e` 编辑
    `crontab -l` 查询
    `crontab -r` 删除所有调度任务
    service crond restart
    对于简单的任务,可以直接在crontab中设置,复杂的任务需要写shel脚本。
    例1:
        crontab -e
        然后输入: */1 * * * * ls -l /etc/ >> /home/chengli/ok.txt
        每分钟会执行 ls -l /etc/ >> /home/chengli/ok.txt
    例2:
        vim /home/chengli/mytask.sh
        输入:date >> /home/chengli/date.txt
        chomd u+x /home/chengli/mytask.sh
        crontab -e
        输入: */1 * * * * /home/chengli/mytask.sh

磁盘与分区

  • 查看系统分区情况: lsblk -f 或者直接:lsblk
    linux文件系统和磁盘可以理解为是互相独立的,相互之间的关联通过挂载来完成。
    如何增加一块硬盘?
    1. 虚拟机添加硬盘
    2. 分区 : fdisk /dev/sdb
    3. 格式化 : mkfs -t ext4 /dev/sdb1
    4. 挂载 : 先创建/home/newdisk, 然后: mount /dev/sdb1 /home/newdisk
    5. 设置可以自动挂载:
    编辑文件: /etc/fstab
    输入: /dev/sdb1 /home/newdisk ext4 defaults 0 0
    执行命令: mount -a
    6. 取消挂载 : umount /dev/sdb1
    注意取消挂载的时候,不能在挂载目录中,否则会提示当前是设备忙

  • 磁盘使用情况查询
    基本语法: df -lh
    l: 表示只显示本机的磁盘
    h: 表示human,人类易读的方式展示
    展示实例如下:

        文件系统                     容量    已用    可用    已用%    挂载点
        /dev/mapper/centos-root     27G    3.6G     24G   14%       /
        devtmpfs                    1.4G      0    1.4G    0%       /dev
        tmpfs                       1.4G      0    1.4G    0%       /dev/shm
        tmpfs                       1.4G   9.5M    1.4G    1%       /run
        tmpfs                       1.4G      0    1.4G    0%       /sys/fs/cgroup
        /dev/sdb1                   2.0G   6.0M    1.9G    1%       /home/newdisk
        /dev/sda1                   1014M   142M   873M   14%       /boot
        tmpfs                       276M      0    276M    0%       /run/user/0

du -h /目录: 查询指定目录的磁盘占用情况
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth 子目录深度
-c 列出明细的同事,增加汇总值

  • 实用指令:
    ls -l /home | grep "^-" | wc -l  统计/home目录下所有文件的个数,不包括文件夹等
    ls -lR /home | grep "^-" | wc -l  递归统计,包括子文件夹
    tree /home  树壮展示目录结构
  • 网络配置
    1: 通过界面设置(不适合做服务器用,而且一般服务器也不装桌面)
    2:静态配置,指定固定的ip:
    修改:/etc/sysconfig/network-scripts/ifcfg-* : *代表网卡的名称,可以通过ifconfig查询
    添加修改:
    ONBOOT=”yes”
    BOOTPROTO=”dhcp” -> BOOTPROTO=”static”
    IPADDR=根据具体情况填写
    GATEWAY=根据具体情况填写
    DNS=根据具体情况填写
    重启网络服务: service network restart

    • 进程管理(重点)
      ps命令查看当前系统正在运行的进程,一般用的参数是aux
      ps -a : 显示当前终端的所有进程信息
      ps -u : 以用户的格式显示进程信息
      ps -x : 显示后台进程运行的参数

    进程太多可以通过 ps -aux | more 一页一页的查看
    ps -aux|grep tomcat 查看tomcat进程

    ps -ef :以全格式显示所有进程,查看进程的父进程
    -e 显示所有进程
    -f 全格式显示

    kill [参数] 进程id
    -9:表示
    killall 进程名称 : 支持通配符
    例:1. 踢出非法登录用户
    ps -aux|grep sshd 查找进程id
    kill 进程id

    2. 杀掉sshd服务可以禁止所有ssh登录
    3. 杀掉一个终端
        ps -aux|grep bash  :/bin/bash的全部是终端
        必须通过kill -9 才能杀掉
    

    pstree 以树状形式显示进程
    安装: yum install psmisc
    -p : 显示进程id

    服务管理

    service管理指令:
        service 服务名 [start|stop|restart|reload|status]
        在CentOS 7.0后不再使用service,而是systemctl
    
        例:
            1. service iptables status : 查看防火墙状态,仅仅是临时生效,重启后失效,可以通过chkconfig来设定
            2. 查看系统有哪些服务 : /etc/init.d目录下全是 centos7.0之前
    
    chkconfig指令: 可以给每个服务的各个运行级别设置自启动/关闭(centos7.0 之前的版本)
        基本语法
        1)查看服务 chkconfig --list|grep xxx
        2)chkconfig 服务名 --list
        3)chkconfig --level 5 服务名 on/off
    CentOS 7.0以后使用:systemctl list-unit-files
    

    进程监控(动态/静态):

    top 
        -d
        -i
        -p 
    交互操作:
        P : 以PCU使用率排序,默认此项
        M : 以内存使用率排序
        N : 以PID排序
        u : 查看指定用户的进程
        k : 终止指定的进程
    
[root@centos7 system]# top
top - 103903 up  305,  1 user,  load average: 0.01, 0.02, 0.05
Tasks: 118 total,   2 running, 116 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.7 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2823772 total,  2296416 free,   133192 used,   394164 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  2478032 avail Mem 

PID USER   PR  NI  VIRT     RES    SHR S   %CPU  %MEM  TIME+    COMMAND                                            
1   root   20   0  128136   6620   4084 S   0.7  0.2   007.37  systemd  
网络服务监控
    netstat -nap

RPM和yum

  • rpm简单查询指令:rpm -qa|grep xx
    举例:
    [root@centos7 ~]# rpm -qa|grep openssh
        openssh-clients-7.4p1-16.el7.x86_64
        openssh-server-7.4p1-16.el7.x86_64
        openssh-7.4p1-16.el7.x86_64

其中:el7表示适用于7.0系统的版本,x86_64表示64为操作系统,如果是noarch表示是通用版本

  • 查询软件版本:
    rpm -qi 软件包名
    举例:
    [root@centos7 ~]# rpm -qi iproute
    Name        : iproute
    Version     : 4.11.0
    Release     : 14.el7
    Architecture: x86_64
    Install Date: 20180803日 星期五 103842秒
    Group       : Applications/System
    Size        : 1788731
    License     : GPLv2+ and Public Domain
    Signature   : RSA/SHA256, 20180425日 星期三 190553秒, Key ID 24c6a8a7f4a80eb5
    Source RPM  : iproute-4.11.0-14.el7.src.rpm
    Build Date  : 20180411日 星期三 160835秒
    Build Host  : x86-01.bsys.centos.org
    Relocations : (not relocatable)
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    Vendor      : CentOS
    URL         : http://kernel.org/pub/linux/utils/net/iproute2/
    Summary     : Advanced IP routing and network device configuration tools
    Description :
    The iproute package contains networking utilities (ip and rtmon, for example)
    which are designed to use the advanced networking capabilities of the Linux
    kernel.
  • 查询软件包的安装信息:
    rpm -ql 软件包名
    举例:
[root@centos7 ~]# rpm -ql iproute
/etc/iproute2
/etc/iproute2/bpf_pinning
/etc/iproute2/ematch_map
/etc/iproute2/group
/etc/iproute2/nl_protos
/etc/iproute2/rt_dsfield
/etc/iproute2/rt_protos
/etc/iproute2/rt_realms
/etc/iproute2/rt_scopes
/etc/iproute2/rt_tables
/etc/sysconfig/cbq
...
...
...
  • 查询文件属于哪个软件安装的
    rpm -qf 文件名
    举例:
[root@centos7 ~]#  rpm -qf /etc/iproute2
iproute-4.11.0-14.el7.x86_64
  • 卸载rpm包
    rpm -e rpm包名称
    rpm -e --nodeps 包名: 强制删除,不管依赖关系

  • 安装rpm包
    rpm -ivh rpm包全路径名
    i=install:表示安装
    v=verbose:提示
    h=hash:进度条
    安装的前提是有这个rpm安装包,或者挂载光驱加载centos系统盘,挂载之后到/media/下面去找

  • YUM方式

    1. 需要联网
    2. 常用命令:
      1)查询服务器是否有需要安装的软件包:yum list |grep xx
      2)安装 yum install xx : 默认是安装最新版本的软件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值