linux系统的运行级别

linux系统的运行级别

级别说明
0所有系统将终止,关机
1单用户模式,用于系统维护,只有少数进程运行
2多用户模式,网络文件系统服务没有启动
3多用户模式,允许多用户登录,是默认的启动级别
4留给用户自定义的级别
5多用户模式,桌面模式
6所有进程都被终止,系统重新启动

当前级别的切换

当前级别的切换:init +想要切换的级别
查看默认级别:systemctl get-default
设置默认级别:systemctl set-default + 级别
第三级别:Multi-user.target
第五级别:graphical.target
显示系统信息:uname -a
显示cpu架构:uname -m
显示内核版本:uname -r
主机的查看:hostname
永久设置主机名:hostnamectl set-hostname + 主机名
查看ls的使用手册:man ls
查看rm使用手册:man rm
Info ls
Ls --help

文件目录类的命令

浏览目录的命令cd Ls Li
浏览文件的命令cat more less
目录的操作命令mkdir rmdir
文件的操作命令touch rm cp mv in find where is what is
Ls列出文件的列表
LR递归
-a全部的文件,连同隐藏文件一起列出,包括以.开头的文件
-A全部的文件,连同隐藏文件,但是不包括.和…文件
.当前工作路径
当前工作路径的上一层
-d仅列出目录本身的属性
-h将文件的大小以kb,Mb等易读的方式列出
-i列出inde 号码
-L长列表格式列出目录内容,包含文件的属性与权限等数据
-R递归,连同子目录里的文件一起列出
-Ls -Ld****
-Ls -Lh****
-Ls -Li
cd切换目录

创建目录、删除目录、复制以及移动

  • 创建目录 mkdir

    • 格式: mkdir 【选项】<目录名>
    • 建立主目录dir1和子目录dir2 mkdir -p dir1/dir2 -p:先建立父目录后子目录
  • 删除空目录 rmdir

    • 删除空目录dir rmdir dir
    • 删除非空目录dir rm -rf dir
  • 删除文件或目录 rm rmrm -i 的别名

  • 格式: rm [选项] <目标文件路径>

  • 删除一个文件 : rm myfiles

  • 删除当前目录下所有文件: *rm ** *** **是通配符

  • -f 强制删除文件,没有提问 ,强制删除后缀为.txt 的文件 : *rm -f .txt

  • 强制删除dir2目录: rm -rf dir2

  • 复制文件 cp

    • 格式 cp [选项] <源文件路径> <目标文件路径>
    • 将test1.txt复制成test2.txt cp test.txt test1.txt
    • 将test3.txt复制到 /tmp目录中 cp text3.txt /tmp
    • 复制目录需要加递归 -r cp -r dir1 /tmp
  • 移动文件 move

    • 格式: mv [选项] <源文件路径> <目标文件路径>
    • 将test1.txt移动至dir1下并改名为test2.txt : mv test1.txt dir1/test2.txt
    • 将test3.txt移动到/tmp 目录中 : mv test3.txt /tmp
    • 移动目录dir1到/tmp目录中 : mv dir1 /tmp
    • mv具备重命名的功能,将test1.txt改名为test2.txt: mv test1.txt test2.txt
  • touch 命令

    • 创建一个空文件或修改文件的存取/修改时间
    • 格式: touch [选项]<文件名>
    • 创建一个abc空文件 : touch abc
    • 将test文件的最近一次修改内容的日期改为 2010 0210: touch -d 20100210 test

查看文件内容的cat命令,以及其他

  • cat 命令:用于显示文件内容,也可以将数个文件合并成一个文件
    • 格式: cat [选项]<文件名>
      • 显示test.txt内容: cat test.txt
      • 带行号显示test.txt文件的内容: cat -n test.txt
      • 将test.txt的内容追加到test1.txt文件之后 : cat test.txt >> test1.txt
      • 将test.txt和test1.txt文件合并成readme.txt文件: cat test.txt test1.txt >readme.txt
      • 显示 test.txt文件中所有的字符: cat -A test.txt
  • more 命令:
    • more命令一般用于显示内容超过一个页面长度的情况,分页查看文件内容
      • 显示 /etc/named.conf 文本文件的内容: more /etc/named.conf
      • 回车键按行查看,空格按页查看,q退出
  • less命令:
    • less命令与more相似,不同的是他可以按空格向下查看还可以上下键来回滚动文件,结束浏览时q键即可,可输入“/查找字符串”查找相应的内容,n下一个,N上一个
      • 显示指定的文本内容: less named.conf
      • -N带行号显示: less -N named.conf
  • ln 命令:
    • 在文件和目录之间建立链接(快捷方式)
      • 格式: ln [选项] <源文件或目录><链接文件名>
    • 软链接:又称符号链接,指向文件名,在通过文件名间接指向磁盘存储空间,读取数据。若删除源文件,则链接文件失效。
      • 创建一个 链接文件doc,指向目录 /usr/share/doc : ln -s /usr/share/doc doc
    • 硬链接:直指源文件磁盘存储空间,相当于一块空间有两个文件名相对应。若删除源文件,链接文件依然有效,但是不能链接目录,跨文件使用
      • 创建一个硬链接文件hard,指向目录 /usr/share/test: ln /usr/share/test hard
  • find命令:
    • 用来寻找文件或目录
    • 格式: find <路径> [匹配条件]
      • 搜索系统根目录下名为httpd.conf 的文件: find / -name httpd.conf
      • 搜索/etc 目录下名为 httpd.conf的文件并显示结果 : find /etc -name httpd.conf
      • 搜索拥有着为xx的文件: find / -user xx
      • 搜索目录下大小大于xx的文件: find / -size + xx
      • 搜索目录下大小小于xx的文件: find / -size - xx
      • 查找属于组的文件使用 -group name: find / -group xx
      • 搜索/etc目录下普通文件并显示结果,常用类型有d,p,s : find /etc -type f
      • 搜索/etc 目录下大小大于100k的普通文件,同时要求拥有者为lisi : find /etc -type f -size +100k -user lisi
  • whereis 命令,常用于程序名的搜索,而且只搜索二进制文件(参数 -b),man说明文件参数(-m)和源代码文件(参数**-s**)如果省略则返回所有信息
    • 查找二进制可执行程序ls: whereis -b ls
    • 查找ls帮助文档 : whereis -m ls
    • 查找关键字为ls的所有信息: whereis ls
  • whatis 命令用于查询一个命令执行什么功能
    • 查找二进制可执行程序ls所展现的功能: whatis ls
    • 查找man的功能信息: whatis man
  • 查看历史命令,可查看**.bash_history**文件,记录当前用户操作过的命令,在用户家目录下才能看到
    • history 查看最近使用的命令
    • history 10 查看最近使用的10条命令
  • head -2 <文件名> 显示文件前两行的内容,默认为前10行,与tail对立
  • 查询命令的绝对路径: which [命令名称]

文档的查看head、tail:

head -n 3 f1显示文件前三行
head -n -3 f1不显示最后三行
tail -n 3 f1显示文件最后三行
tail -n +3 f1从第三行开始显示到最后
tail -f /var/log/message跟踪日志文件的变化
  • 示例:

    使用cat将uie文档带行号列出来,然后交给head命令显示文档前三行
    [root@localhost~]# cat -n uie | head -n 3
    

文本过滤器 grep:

  • 功能: 将半含关键字的行显示出来

    • grep -c “test” f1匹配f1文件中包含test的关键字的行数
      grep -i “test” f1匹配f1文件中的关键字"test",.忽略大小写
      grep -n “test” f1匹配f1文件中关键字为“test”并显示行号
      grep -ri “test” /etc查找etc目录下包含test关键字的文件

cut命令

  • cat 命令:截取指定列

    • 格式: cut -d “分隔符” -f “列号”

        1. 将/etc/passed拷贝到当前目录
        [root@localhost~]# cp/etc/passwd/root/
        
        1. 以 “:” 作为分隔符,截取passed文件中的第2列

          [root@localhost~]# cut -d ":" -f2 passwd
          
        1. 以“:”作为分隔符,截取passwd文件中第 1/2列

          [root@localhost~]# cut -d ":" -f1,2 passwd
          
        1. 以“:”作为分隔符,截取passwd文件中第1到5列

          [root@localhost~]# cut -d ":" -f1-5 passwd
          

文本排序命令 --sort

  • sort 功能:默认以ASCII方式进行排序([a-z])

    • 选项:

      -u去除重复的行,重复的行显示为一行
      -r降序排序[z-a]
      -n按照数值的大小排序
      -t设定分界符
      -k已制定的列进行排序
    • 示例:

      sort /etc/passwd对/etc/passwd文件升序排序
      sort -r/etc/passwd对/etc/passwd文件降序排序
      sort -n -t : -k3 /etc/passed依据/etc/passwd第三列数值排序,分隔符为“:”
      sort -u test.txt对test.txt文件去重显示并升序排序

字符管理命令 -uniq

  • 功能:对文件进行去重显示操作

  • uniq test3重复的行只显示一行
    uniq -c test3对重复的行显示行数
    uniq -ic test3统计时忽略大小写

输出重定向

  • <<追加
    <覆盖
    cat -d : -f1,3passwd >> f12将passwd中的1,3列剪切追加到f12中
    cut -d : f1,3 passwd > f12覆盖

tee 与 管道命令 |

  • 将cut命令执行结果交给tee,tee将参数分为两份,分别放入f12中后展示给我们

    [root@localhost~]#cut -d : -f1,3 passwd | tee f12
    

字符管理命令 -wc

  • 功能:统计文件的行数,字符数

    • 选项:

      -l统计字数
      -c统计字节数
      -w统计单词数
    • 示例1:统计/etc/passwd文件行数

      [root@localhost~]# wc -l /etc/passwd
      
    • 示例2:统计etc/passwd文件行数和字节数

      [root@localhost~]# wc -Ls /etc/passwd
      
    • 示例3:统计/etc/passwd 与/etc/fstab各文件的行、字、字节数

      [root@localhost~]# wc -lws /ect/passed /etc/fstab
      
  • du: 硬盘的使用情况

    • du -sh [目录]

linux 目录结构,以及/目录下功能划分

/根目录
bin二进制,存放公共的linux命令
sbin存放系统管理命令
root超级用户的家目录
home普通用户的家目录
boot存放系统启动时需要的程序,系统的启动文件和内核
dev存放设备文件
usr程序安装处
etc存放系统各种配置文件
var存放系统常变数据
/目录下功能划分
/bootlinux引导程序放置的目录
/etc配置文件放置的目录
/usr帮助文档,系统命令进程放置的目录
/mnt挂载所用的目录
/tmp临时文件放置的目录
/dev存放设备相关文件的目录
/var系统运行时变化数据的目录
/home用户家目录默认位置
颜色划分
白色二进制文件 普通文档
蓝色目录
绿色可执行程序
青色软链接
红色包文件、压缩文件
黄色块设备文件
绝对路径从根目录下(/)开始表示文件或目录所在的位置
相对路径以当前路径为基点,表示文件或目录的的位置

linux的权限管理

  • 查看文件权限:ls -l ,显示结果共六项信息:
最左侧10个字符表示权限信息
第二项数字表示硬链接数
第三项数字该文件的所属信息,属主和属组
第四项数字表示文件的大小,单位:字节
第五项时间表示上一次内容被修改的时间
第六项表示文件名、目录名
属主文件/目录的所有者(u)
属组文件/目录的所属组(g)
其他人即非属主,也非属组(o)
所有人属主、属组和其他人(a)
  • 最左侧10个字符的含义:
-rwxrw-rwx
文件类型属主权限(u)属组权限(g)其他用户权限(o)
三种用户类型(u/g/o)统一用a表示
  • 文件类型:

    • -代表普通文件,即
      • d:目录
      • l:软链接
      • b:快设备(硬盘,u盘,光驱)
      • c:字符设备
  • linux权限分析

权限说明对应数值说明
r读权限4赋予目录/文件可读权限
w写权限2赋予目录/文件可写权限
x执行权限1赋予目录/文件可执行权限
-无权限0取消相关权限
  • chmod(change mode)命令:

    • 功能:改变文件/目录的权限
    • 格式:chmod [选项] 权限 <目标>
    • 选项:
      • -R : 递归改变目标权限
      • -v:改变权限时显示详细过程
      • -f: 忽略在修改文件时的错误信息
  • 操作运算符:

    • + 增加某个权限
    • - 去除某个权限
    • = 只拥有某个权限
    • 示例:
      • 文件拥有者(所属u)增加执行权限,文件名称为f1: chmod u+x f1
      • 文件拥有者增加执行权限,所属组增加写权限,文件名称为f1 : chmod u+x , g+w , o-r f1
      • 文件所有权限都统一为可读可执行 : chomd a=rx f1
  • 是用数字表示权限

rw-r-xr–
属主权限(u)属组权限(g)其他用户(o)
420401400
654
  • 也可以吧rwx三个权限,当做3bit的二进制处理,有该权限的用1,没有的用0,再把3bit转为十进制

    • 如:
      • r-x => 101 => 4 - 1 =5
      • rw- => 110=>4 2 - =6
      • rw- r- - r- - 的权限为 644
    • 使用chmod修改:
      • chmod 644 f1
  • 更改所属信息的命令: **chown ** 若是只想修改属组保留属主,需要将 : 保留

    • 功能:改变文件/目录的属主和属组
    • 格式:chown [选项] [属主:属组] <目标>
    • 选项:
      • -R : 递归
      • -v : 执行时显示详细信息
    • 例:
      • 改变text.txt属主改为test用户: chown test test.txt
      • 改变test.txt 属组为test组: chown : test test.txt
      • 改变files目录及其子目录,所有的文件属组为user1,属组为test,并显示详细信息:
      • chown -Rv user1:test files
  • 用户权限管理 -chgrp (change group)

    • 功能:改变文件或目录的数组
    • 格式:chgrp [选项] [属组] <目标>
    • 选项:
      • -R : 递归
      • -v : 执行时显示详细信息
    • 如:
      • 更改files的数组为test: chgrp test files

用户的权限管理 - ACL

  • ACL (access control list)用于对不同的用户分配不同的权限,因为linux的chmod只能分配三个角色

  • ACL的种类:

    • 存取ACL(access ACL),针对文件或目录设置访问控制列表,用来设置对文件的读写和操作权限
    • 默认ACL(default ACL),只针对目录设置,如果子目录没有设置ACL将会自动集成默认的ACL
  • 命令: getfacl

    • 功能:查看文件或目录的ACl权限
    • 格式: getfacl [选项] <目标>
    • 示例:
      • 查看本地文件test.txt的访问控制列表 : getfacl test.txt
  • 命令: setfacl

    • 功能:修改文件或目录的ACL权限
    • 格式: setfacl [选项] <目标>
    • 常用选项: (mask)为最大有效权限
-m设置文件的ACL规则
-x删除文件的ACl规则
-b删除ACL规则
-k删除缺省的ACl规则,如果没有则不显示
-d设置默认的ACL规则
-R递归
  • 示例:

    • 让test对test.txt拥有rw权限: setfacl -m u:test:rw test.txt
    • 让blue组对test.txt拥有rw权限: setfacl -m g:blue:rw test.txt
    • 对files目录及其子目录增加账户test的rwx权限: setfacl -R -m u:test:rwx files
  • 设置默认的ACL

    • 对files目录设置默认的ACL。未来新建的子目录与文件将会自动继承files目录的ACL

      • setfacl -m d:u:user1:rw files
    • 在files目录下创建子目录

      mkdir subdir files   
      getfacl
      
  • 删除选项

    • 去掉test对test.txt 的ACL权限 : setfacl -x u:test test.txt
    • 去掉所有的test.txt中的ACL权限: setfacl -b test.tst
  • Lsattr 命令:

    • 功能:显示文件/目录的隐藏权限
    • 格式: lsattr [选项] <目标>
    • 选项:
      • -a : 显示指定目录下所有文件及目录的隐藏属性
      • -R : 递归
    • 示例:
      • 查看 /root下文件及目录的隐藏权限: lsttr -aR /root
  • chattr 命令:

    • 功能: 更改文件/目录的隐藏属性
    • 格式: chattr <选项> <隐藏属性> <目标>
-R递归
-v执行时显示详细信息
+增加某个属性
-去除某个属性
=只拥有某个属性
常用的文本属性(隐藏的)
i只读属性,只能读取,不能修改或删除
a可追加数据,但无法修改,删除,重命名
  • 示例:
    • 将文件test.txt增加i属性: chattr +i test.txt

配置文件

  • 用户账号文件: /etc/passwd
    • 用于保存用户的账号基本信息
    • 文件位置: /ect/passwd
[root@localhost~]# tail -2 /etc/passwd 
test:x:86:86:test user::/bin/nologin 
test1:x:500:500:test student user:/home/test:/bin/bash
账号名称在系统里是唯一的
用户密码此字段存放加密口令(x代表,不用了)
用户标识码(user id)系统内部用它标识用户
组标识码(group id)系统内不用标识用户所属的组
用户相关信息例如用户全名等
用户家目录用户登录后进入的目录
用户shell用户使用的shell,有/bin/bash ,/sbin/nologin(不允许通过本地登录)
[root@localhost~]# tail -2 /etc/passwd 
test1:x:500:500:test student user:/home/test:/bin/bash
  • 注释:一 : 为分隔符,可分为七个部分
text1账号名称
x用户密码占位符(不用了)
500用户的标识码(uid)
500用户所属的原始用户组标识码(gid)
test student user用户账号的一个说明
home/test所对应的家目录
/bin/bsah用户使用的shell
  • 用户账号文件: /etc/shadow
    • 用于保存密码字串,密码有效信息等
    • 文件位置: /etc/shadow
[root@localhost~]#tail -2 /etc/shadow
xfs:!!:14347:0:99999:7:::
teacherabc:$1$BT7tea:14374:0:99999:7:::
用户名用户登录时使用的名字
密码存放密码的口令
最后一次修改密码时间最近修改密码的日期距离1970年元旦的天数
密码不可被修改的天数密码多少天不能修改
密码需要修改的天数需要多久再次变更密码
警告时间密码过期前几天发出警告
密码过期后的账号宽限时间口令过期后该账号能用多久
账号失效时间到期后账号不可用
标志未使用
  • 示例:
teacherabc:$1$BT7tea:14374:0:99999:7:::
teacherabc用户名
1 1 1BT7tea密码加密口令(不可逆)
14374最近修改密码距1970年元旦的天数
0密码多少天内不能更改
99999密码的有效期
7密码失效前7天警告

关于用户账号的操作

增加用户

  • 添加用户账户 -------- useradd
    • 格式: useradd [选项]…用户名…
    • 常用命令选项:
-u指定UID标记号
-d指定家目录,缺省为/home/用户名
-e指定账号失效时间
-g指定用户的原始组名(GID)
-G指定用户的次要组名(或GID号)
-M不为用户建立家目录(程序用户)
-S指定用户的登录的shell
创建一个程序账号,ID(uid与gid小于1000)
  • 示例:

    • 指定的Lisi的uid为1500,原始用户组为root,指定家目录为/mnt1

      • [root@localhost~]# useradd -u 1500 -g root -d/mnt1 Lisi
        
    • 创建mike 用户 ,并加入到zhangsan 组,不允许mike 通过本地登录

      • [root@localhost~]#useradd -G zhangsan -s /sbin/nologin mike
        
    • 创建一个程序账号named1不创建家目录,指定shell为sbin/nologin

      • useradd -M -r -S /sbin/nologin named1
        
    • 对应的用户原始组、次要组必须存在

  • 用户账号的初始配置文件

    • 文件来源:新建用户账号时,用户的家目录会有一系列文件产生,是从/etc/skel目录中复制而来
    • 主要的用户初始配置文件:
/.bash_profile每次用户登录时执行
/.bashrc每次进入新的bashrc执行
/.bash_logout用户每次退出登录时执行

更改用户密码

  • 设置、更改用户的密码 ----passwd

    • 格式:passsd [选项] <用户名>

    • 另一种方法改变密码:将123456设置为lisi的密码

      • echo "123456" | passwd -- stdin lisi
        
        • 与用户账号文件相似
        • -etc/group : 保存组账号基本信息
        • -etc/gshadow : 保存组账号的密码信息
      • 常用命令选项:

-d清空用户密码,使之无需密码就能登录,只针对root生效
-l锁定用户账号
-s查看用户账号状态(是否被锁定)
-w解锁用户账户
  • 用vim可以直接更改用户参数 例如:

    [root@localhost~]#vim /etc/shadow
    

    修改用户账号属性

  • 修改用户账号属性--------usermod

    • 格式: usermod [选项] <用户名>

      • 例:将wufei 改成eagle用户名

      • [root@localhost~]#usermod -l eagle wufei
        
      • 常用选项:

-l更改用户账号的登录名称
-L锁定用户账户
-U解锁用户账号
-u指定UID标记号
-d指定家目录,缺省为/home/用户名
-e指定账号失效时间
-g指定用户的原始组名(GID)
-G指定用户的次要组名(或GID号)
-M不为用户建立家目录(程序用户)
-S指定用户的登录的shell

删除用户账号

  • 删除用户账号-----userdel

    • 格式: userdel [r] <用户名>
    • 添加-r选项时,表示连用户的主目录一起删除
  • /etc/group 格式:

字段含义
组名用户登录时所在的组
组口令(密码)一般不使用(x)
GID组标识号
组内用户列表属于该组的所有用户名表

添加组账号

  • 添加组账号------------ groupadd命令

    • 格式: groupadd [-g GID] <组账号名>
  • 添加、删除组成员------gpasswd

    • 用途:设置组账号密码(极少用),添加、删除组成员

      • 格式:gpasswd [选项] <组账号名>

      • 常用命令选项:

      • -a (add)向组内添加一个用户
        -d (delet)从组内删除一个用户成员
        -M定义组成员列表,用户以逗号分隔
    • 示例:

      将zhangsan用户添加至ujiuye组账号中
      [root@localhost~]# gpasswd -a zhangsan ujiuye
      
    • 将zhangsan 从/etc/group中过滤出来
      [root@localhost~]# grep "zhangsan" /etc/group 
      

    删除组账号

  • 删除组账号----- groupdel

    • 格式: groupdel [组账号名]

查询账号信息

  • Id命令:

    • 用途: 查询用户身份标识
    • 格式: id(用户名)
  • groups 命令:

    • 用途:查询用户所属的组
    • 格式:groups [用户名]
  • 查询账号信息

    • users 、w、who 命令

    • 用途: 查询已登陆的主机的用户信息

    • 用户的切换:

    • .su切换当前登录用户(switch)
      -su 用户名切换用户时不改变shell环境变量
      -su- 用户名切换用户时使用该用户的shell环境
      -su不加用户名的时候表示切换至root用户
      exit退出当前用户登录
      • root用户切换至普通用户无需对方密码,普通用户切换至其他用户需要对方密码
  • sodo:允许普通用户以root身份执行命令,需要root配置生效,输入本人密码即可

    • 编辑sudo配置文件:

      • vi sudo 或 vim /etc/sudoers

      • 格式:用户 主机名=(root) 命令的绝对路径

      • 解释:授权指定用户从指定主机远程登录到本机上以root身份方式运行

      • 例子:

        [root@localhost~]# -user1 ACL=(root) /usr/bin/mount, /use/bin/umount
        [root@localhost~]# -user2 ACL=(root)ACL
        [root@localhost~]# -user3 ACL=(ACL)NoPASSWD:ACL
        
        • 命令的绝对路径可以用which查询到

linux应用程序基础

  • 应用程序与系统命令关系

    • 文件位置:

      • 系统命令:一般在 /bin 和 /sbin 目录中,或为shell
      • 内部指令:通常在/use/bin 和/sur/sbin 目录中
    • 主要用途:

      • 系统命令:完成对系统的基本管理工作,例如ip配置工具
      • 应用程序:完成相对独立的其他辅助任务,例如网页浏览器
    • 适用环境:

      • 系统命令:一般只在字符操作界面中运行
      • 应用程序:根据实际需要,有些程序可在图形界面中运行
    • 运行格式:

      • 系统命令:一般包括命令字,命令选项和命令参数
      • 应用程序:通常没有固定的执行格式
    • 应用程序的目录结构:

    • 保存目录保存目录
      /use/bin普通执行文件
      /usr/sbin服务期执行程序和管理程序文件
      /var/log日志文件
      /usr/share/doc应用程序文档文件
      /usr/share/man应用程序手册页文件
      /etc应用程序配置文件

软件包封装类型

封装类型说明
rpm软件包扩展名为“.rpm”
deb软件包扩展名为".deb"
源代码软件包扩展名为".tar.gz" “tar.bz2” "tar.xz"等格式的压缩包包含程序的原始代码
  • 附带安装程序的软件包: 在压缩包内提供的 install.sh 、 set up等安装程序或以".bin"格式的单个执行文件
  • 绿色免安装的软件包 : 在压缩包内提供已编译好的执行程序文件,解开压缩包后的文件即可直接使用
  • 软件安装的三种方式:
    • rpm 命令安装
    • yum 源安装
    • 源码包安装

rpm安装

  • RPM

    • 格式: bash-4.2.46-31.el7.x86_64.rpm(软件包名称bash,版本号4.2.46,发布次数 31、发行版本el7、硬件平台x86_64、扩展名.rpm)

    • rpm 文件获取方法:

      • 挂在系统安装光盘

        • RPM文件获取方法

        • mkdir /mnt/cdrom    建立cdrom
          mount /dev/cdrom  /mnt/cdrom    把/dev/cdrom挂载到 /mnt/cdrom 
          cd /mnt/cdrom/packages
          
          进入安装包存放路径
          卸载光盘 : umount /mnt/cdrom
          
          • 挂载:把某一个设备连接到目录里,通过访问目录来访问相应的设备
          • Ls | wc -l : 查询有多少个安装包 wc -l 统计个数
  • 软件包管理 -RPM

    • 命令: rpm

    • 功能:安装后缀为 .rpm 的软件

    • 格式: rpm <选项> <软件包全名>

    • 选项:

      -i安装软件包
      -v安装时显示安装信息
      -h以 # 作为进度条显示安装进度
      -e删除软件包
      -U升级软件包,如果升级软件的包没有安装则会安装
      -F升级软件包,如果升级的软件包没有安装,则放弃任务
      –nodeps忽略软件包的关联包
      –force强制安装,忽略错误/提示等信息
      -q查询选项(有许多自选项)
      -qa查询所有已安装的软件包
      -qf查询某个文件或目录下由那个软件包安装产生的
      -ql查询某个软件包的安装文件列表
  • 软件包的安装

    • 使用rpm命令的安装模式可以将软件包内所有的组件放到系统的正确路径

      • 安装软件包命令:

        [root@localhost~]# rpm -ivh zsh -5.0.2-31.el7.x86_64.rpm
        -ivh : 安装时显示安装信息和进度
        zsh : 一种shell
        
  • 软件包的删除

    • 删除模式会将指定软件包的内容全部删除,但并不包括已经更改过的配置文件

    • 删除rpm软件包的命令:

      [root@localhost~]#rpm -e zsh
      
  • 软件包的升级

    • 安装用户所指定的更新版本,并删除已经安装在系统中的相同软件包

    • [root@localhost~]# rpm -Uvh zsh -5.0.2-31.el7.x86_64.rpm
      
  • 软件包查询

    • 若要获取rpm软件包相关信息,可以使用查询模式。使用 -q参数可查询一个已经安装的软件包内容

      • [root@localhost~]# rpm -q zsh
        
    • 命令会显示软件包名称,版本号和次版本号

      • [root@localhost~]# rpm -qa | grep [软件名]       将软件从rpm里过滤出来
        
  • 查询软件包所安装的文件

    • 安装软件包之后软件安装列表可查询

    • [root@localhost~]# rpm -ql package-name
      
      • 如:

        [root@localhost~]# rpm -ql zsh
        -l : 显示文件列表
        [root@localhost~]# rpm -ql zsh | less
        以页面(less)的形式展示出zsh的文件
        
        • 实验操作:

        • 查看当前系统已安装的软件:  [root@localhost~]#  rpm -qa
          将系统安装的软件数目显示: [root@localhost~]#   rpm -qa | wc -l
          查看系统中是否安装了某个软件包:[root@localhost~]#  rpm -qa | grep mail
          查看/etc/passwd文件属于哪个软件 :[root@localhost~]#  rpm -qf /etc/passwd
          通过网络下载软件包安装 :[root@localhost~]#  rpm -ivh +网址
          http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/elepel-release-7-12.noarch.rpm
          
  • 重建RPM数据库

    • [root@localhost~]# rpm --rebuilddb
      [root@localhost~]# rpm --initdb
      
      • 安装有依赖关系的多个软件时,被依赖的软件包需先安装,同时制定多个.rpm包文件进行安装

      • 写在有依赖关系的多个软件时,依赖其它程序的软件包需要先卸载,同时指定多个软件名进行卸载

      • vim -enhanced 依赖于  vim -common
        

yum 命令安装

  • yum 命令形式: yum [options选项] [command子命令] [package…]

    • 选项: -y 不用再确认直接安装

    • 安装: 安装指定的安装包 package1

      • [root@localhost~]#yum -y install zsh
        
    • 安装程序组 group1

      • yum grouplist列表软件组
        yum groupinstall智能卡支持
        /etc/yum.repos.dyum配置文件位置
        yum check -update检查可更新的程序
        yum update全部更新
        yum update zsh更新指定程序包
        yum upgrade zsh升级指定程序包
        yum groupdate “智能卡支持”升级程序组
        yum makecache更改配置后,重建缓存
        yum remove删除程序包
        yum groupremove “智能卡支持”删除程序组
        yum deplist **xorg-xll-ximiit(**软件包名字)查看软件包的依赖关系
        yum info yelp-xsl-3.28.0-1.el7(软件包名字)显示安装包信息
        yum list显示所有已安装和可安装的程序包
        yum list zsh显示指定程序包安装情况
        yum groupinfo <“智能卡支持”>(程序组的名字)显示程序组的信息
        yum search zsh根据关键字(zsh)查找安装包
配置yum源
  • 安装软件前若使用本地yum源需先挂载

    • [root@localhost~]# mount /dev/cdrom /media
      
    • 进入yum源配置文件路径

      • cd /etc/yum.repos.d
        
    • 备份原有配置文件

      • mkdir back
        mv Cent Os_*back
        
    • 编辑自定义的yum源配置文件,后缀必须是 .repo

      • vim cdrom.repo           #cdrom: 设定源的名称
        name = local media            # 解释说明
        baseurl=file:///media         # 指定安装包所在位置  
        # file://  代表本地文件协议      # / media 代表根目录下的media,本地磁盘使用file协议
        
    • enabled = 1      # 启动本项(默认)
      gpgcheck = 0     # 关闭密匙验证
      
  • 编译安装源代码包

    • 确认源代码编译的环境--------需要支持 c/c++ 程序语言的编译器

      • gcc 、 gcc - c++
      • make : gcc – version #查看gcc版本
    • 下载源码包安装文件的步骤:

        1. 解包,习惯上将软件包释放到 **/usr/src/**目录,解包后的源代码文件位置:
        /usr/src/软件名-版本号/
        
      • 过程1. :

        [root@localhost~]# tar xvf keepalived - 2.0.19.tar.gz -C  /usr/src/
        # xvf 的解压、显示
        
        1. 配置,使用源码目录中的configure 脚本,执行 “ ./configure – help ” 可查询帮助
          • 典型的配置选项: –prefix = 软件安装目录
        1. 编译, 执行make命令
        1. 安装,执行 make install 命令
      • 过程2:

        [root@localhost~]# cd/usr/src/keepalived -2.0.19     #切换到源代码所在目录
        [root@localhost~]# ./configure -- prefix=/usr/local/keepalived   #指定安装目录
        [root@localhost~]# yum -y install lrzse                          #安装
        
      • rz : 从 windows 向 linux 上传文件

      • sz : 从 linux 向 windows 上传文件

    • 还可以使用 “&”配置yum 源

      [root@localhost keepalived-2.0.19]# ./configure -- prefix = usr/local/keepalived && make && make install
      配置、编译、安装
      

vi 编辑器的进阶

  • 末行模式下可输入的命令:

    :wq保存退出
    :q!不保存退出
    :set nu(number)显示行号
    :set moun不显示行号
    :100跳转到第一百行
    :/linux查找指定字符,n下一个
    :1,3d删除前三行
    :1,$d删除表一到最后一行
    :3,6 s/name/123123/gg:全部 查找并替换字符
    :1,$ s/name/MIN/g所有的min替换成MIN
    :% s/min/MIN/g所有的min替换成MIN
    :1,5 m101-5行移动到10行之后
    :1,10 copy 201-10行复制到20行之后
  • 命令模式下的快捷键

ZZ保存退出
ZQ不保存退出
G跳转至文档结尾
u撤销,后提一步
yy复制光标所在行
3yy复制光标所在行开始的下三行
p粘贴到光标所在行的下一行
dd删除光标所在行
3dd删除光标所在行开始的下三行
x删除光标所在处的字符
#x删除光标所在处的#个字符
X向前删除字符
#X向前删除#个字符

作业的管理

  • 作业的状态
前台运行在终端页面可见作业运行过程
后台运行在终端界面看不见作业运行过程
后台挂起作业等待其他条件的完成,处于暂停状态
作业的调度:
前台运行作业输入命令直接运行,即进入前台运行状态
前台作业强制关闭ctrl +c
后台运行作业&
挂起前台作业ctrl + z
后台挂起的作业放到前台运行fg X (X代表后台的作业序号)
挂起的作业放到后台运行bg X
jobs[]查看作业序号,[]里面的是作业序号
  • 作业管理

    • 作业关闭的方法: jobs查看作业号,使用kill%结束作业序号,即可关闭作业

    • [root@localhost~]# jobs
      [1] + Running ./test.sh & kill q % 1
      kill q % 1       q:强制停止    1:作业序号         
      
      • find / & >> dev /null &  
        将find命令放置后台运行,将正确的结果放在  dev/null 里
        

linux的计划任务

  • linux定时任务的实现方式:

    • at : 一次性计划任务

    • cron : 周期性计划任务

      • at 由atd服务负责并管理
    • 通过如下指令查看、启动、关闭atd

    • systemctl status atd查看
      service atd status查看
      systemctl start atd启动
      service atd start启动
      systemctl restart atd重启
      service atd restart重启
      systemctl stop atd关闭
      service atd stop关闭

at

  • at 的配置:

    • 命令:at

    • 功能: 一句预定好的时间,执行指定的任务一次

    • 语法:at [选项] [时间]

    • 可接受的时间格式、日期

      • MM (月) / DD (日) / YY (年)

      • MM (月) / DD (日) / YYYY (年)

      • HH (小时) : MM (分钟)

        • 示例:

          [root@localhost~]#  at 23:00 12/31/2020/
          reboot
          at > <EOT>  (输入结束: ctrl + D)
          
  • at 时间规范:

  • 只输入时间,不输入日期,是在今天的对应的时间

  • 是输入日期,不输入时间,被认为是输入日期的当前时间

  • 支持输入一个完整的时间

    at 23:00 12/31/2020
    
  • at 队列管理:

atq查看at队列
at -c [at队列 id]查看某个队列任务的具体命令
atm [队列id] 或者 at -r [队列id]删除队列中指定的任务

cron —周期计划任务

  • cron 的守护进程为 crond

    • 查看crond是都运行:

      systemctl status crond查看
      service crond status查看
      systemctl start crond启动
      service crond start启动
      systemctl reatart crond重启
      service crond restart重启
      systemctl stop crond关闭
      service crond stop关闭
    • cron 周期性计划任务的配置

      • 命令格式: crontab [选项]

      • 功能:以vi编辑器为基础视线周期性计划任务的配置

      • 选项:

        -l查看cron计划任务列表
        -e编辑cron计划任务列表
        -r删除当前用户或指定用户所有cron计划任务列表
        -u为指定用户设置定时任务,只有root可用该选项
    • cron 时间格式:

    • 分钟0-59
      小时0-23
      每月的哪一天1-31
      月份1-12
      星期几0-7 0和7 都代表星期日
      命令的绝对路径/bin/ls-l/etc
      • 命令
        21221*(任意)/bin/ls-l/etc
        • 1月2日,12点2分(无论哪一年)运行命令
        • which [命令] : 查询命令的绝对路径
    • “*”所在时间项为任意时间 如果 星在第一列则代表每一分钟,第二列代表每一小时

      • 定义连续时间:如: 1-5

      • 定义不连续时间: 如: 1,3,5

      • 时间间隔为每五分钟: */5 (在第一列)

      • 示例1:只要在凌晨2点1分就重启

        命令绝对路径
        102***/usr/sbin/reboot
      • 示例二:每周日凌晨两点一分就重启

        命令绝对路径
        102**0/usr/sbin/reboot
    • cron 编写任务名:

      crontab -e以当前账户创建cron计划任务
      crontab -e -u blue以指定用户创建cron计划任务(仅root)
      crontab -l查看当前使用账户的cron队列
      crontab -l -u blue查看其他账户的cron队列(仅root)
      crontab -r清除当前账户所有的cron计划任务
      crontab -r -u blue清楚其他账户所有的cron任务(仅root)
      crontab -e只删除某一项任务

文件打包(归档)----tar

  • 命令: tar

    • 功能: 将文件、目录打包

      • 格式:tar <选项> <打包文件名> <目标>

        • 选项

          -f表示使用归档文件
          -c新建一个打包文件
          -x解包
          -C指定解包的目的目录
          -t显示tar打包文件里的内容
          -A将其他打包中的文件追加到一个打包文件中
          -r追加一个或多个文件到已有的tar包中
          -u如果文件比打包文件中的新则替换
          -k再解开打包文件的时候保持原有的文件
          -v打包/解包是显示详细动作
          –remove-files打包后删除文件
          –delete删除打包中的第一个文件
          –get提取某个文件
    • 示例1:现在file1 file2 file3 三个文件包,打包文件名为 back.tar

      [root@localhost~]# tar -cvf backup.tar file1  file2  file3
      
    • 示例2:解开 backup.tar包

      [root@localhost~]# tar -xvf backup.tar
      
    • 示例3:把backup.tar包解开到/home目录下

      [root@localhost~]# tar -xvf backup.tar -C /home
      
    • 示例4:显示backup.tar的内容

      [root@localhost~]# tar -tf backup.tar
      
    • 示例5:将aa.tar包中的文件追加到 backup.tar中

      [root@localhost~]# tar -Af backup.tar aa.tar
      
    • 示例6:将testc.txt , testd.txt 两个文件追加到backup,tar

      [root@localhost~]# tar -rf backup.tar testc.txt testd.txt
      
    • 示例7:判断testc.txt文件,若比backup.tar包新,则替换

      [root@localhost~]# tar -uf backup,tar testc.txt
      
    • 示例8:将test1.txt test2.txt文件加入a.tar包中,完成打包后,将两个文件删除

      [root@localhost~]# tar -cvf a.tar test1.txt test2.txt --remove -files
      
    • 示例9:删除backup.tar宝中的test1.txt文件

      [root@localhost~]# tar -f backup.tar --deletd test1.txt
      
    • 示例10:提取backup.tar包中的test2.txt,textc.txt

      [root@localhost~]# tar -f backup.tar --get test2.txt testc.txt
      
    • 查看属性:

      [root@localhost~]# tar -tf backup.tar | xargs Ls -L 
      xargs:有些管道无法实现时使用
      

压缩指令 —gzip

  • 功能:将文件/打包文件压缩

    • 格式:gzip <选项> <目标>

      • 选项:默认是-6

        -1压缩速度最快,压缩比最小
        -9压缩速度最慢,压缩比最大
    • gzip a.tar + <目标文件名>

解压缩指令

  • 解压缩指令 gunzip

    • 功能:将文件/把宝文件解压缩

    • 格式:gunzip <选项> <压缩文件>

      • 示例:

        [root@localhost~]# gunzip backup.tar.gz   或者
        [root@localhost~]# gunzip backkup.tgz        #tgz可是为tar.gz的缩写
        
    • gzip -d backup.tar.gz 解压缩,选项 -d 为解压缩

  • 压缩指令: -bzip2

    • 功能: 将文件/打包文件压缩

    • 格式:bzip2 <选项> <目录>

    • 选项:与gzip 基本一致

      -1压缩速度最快,压缩比最小
      -9压缩速度最慢,压缩比最大
  • 查看文本类型:

    • file <文件名称>
  • 解压缩指令:bunzip2

    • 格式: bunzip2 <选项> <压缩文件>

      • 示例:

        [root@localhost~]# bunzip2 b.tar.bz2   或者
        [root@localhost~]# bzip2 -d b.tar.bz2 
        
  • 打包并压缩 tar

    • tar可以实现直接调用相关压缩程序来完成打包及压缩的步骤

        1. 调用gzip/gunzip

          [root@localhost~]# tar -czvf etc.tar.gz [文件名] /etc       压缩
          [root@localhost~]# tar -xzvf etc.tar.gz -C /home           解压缩
          
        1. 调用bzip2/bunzip2

          [root@localhost~]# tar -cjvf etc.tar.gz  [文件名] /etc       压缩
          [root@localhost~]# tar -xjvf etc.tar.gz  -C /home           解压
          

进程管理

  • ps aux** : 查看静态进程

  • top :查看动态进程

  • 结束进程

    • [root@localhost~]# -ps auc | grep [程序名]
      [root@localhost~]#  -kill pid(程序id号)
      [root@localhost~]# -kill -q pid     #强制结束
      
  • 结束相同名称的进程:

    • [root@localhost~]# tar -killall [进程名称]
      [root@localhost~]# tar -killall -q [进程名称]
      

      [root@localhost~]# gunzip backup.tar.gz 或者
      [root@localhost~]# gunzip backkup.tgz #tgz可是为tar.gz的缩写

      
      
    • gzip -d backup.tar.gz 解压缩,选项 -d 为解压缩

  • 压缩指令: -bzip2

    • 功能: 将文件/打包文件压缩

    • 格式:bzip2 <选项> <目录>

    • 选项:与gzip 基本一致

      -1压缩速度最快,压缩比最小
      -9压缩速度最慢,压缩比最大
  • 查看文本类型:

    • file <文件名称>
  • 解压缩指令:bunzip2

    • 格式: bunzip2 <选项> <压缩文件>

      • 示例:

        [root@localhost~]# bunzip2 b.tar.bz2   或者
        [root@localhost~]# bzip2 -d b.tar.bz2 
        
  • 打包并压缩 tar

    • tar可以实现直接调用相关压缩程序来完成打包及压缩的步骤

        1. 调用gzip/gunzip

          [root@localhost~]# tar -czvf etc.tar.gz [文件名] /etc       压缩
          [root@localhost~]# tar -xzvf etc.tar.gz -C /home           解压缩
          
        1. 调用bzip2/bunzip2

          [root@localhost~]# tar -cjvf etc.tar.gz  [文件名] /etc       压缩
          [root@localhost~]# tar -xjvf etc.tar.gz  -C /home           解压
          

进程管理

  • ps aux** : 查看静态进程

  • top :查看动态进程

  • 结束进程

    • [root@localhost~]# -ps auc | grep [程序名]
      [root@localhost~]#  -kill pid(程序id号)
      [root@localhost~]# -kill -q pid     #强制结束
      
  • 结束相同名称的进程:

    • [root@localhost~]# tar -killall [进程名称]
      [root@localhost~]# tar -killall -q [进程名称]
      
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过查看文档和自己的测试,bashdb-4.2.0-7 和centos7的bash-4.2.46版本匹配,并且编译顺利. 使用方法: 解压bashdb [root]#tar xf bashdb-4.2-0.7.tar.gz -C /usr/src 编译安装bashdb 编译安装bashdb有两种方法,区别可以看bashdb的帮助信息. 第一种编译方法: 不结合bash源代码编译和安装bashdb [root]#cd /usr/src [root]#cd bashdb-4.2.0-7 [root]#touch $HOME/missing [root]#touch libtoolT [root]#./configure --prefix=$HOME [root]#make [root]#make install 第二种编译方法: 结合bash源代码编译和安装bashdb 需要准备bash源代码 a).下载bash-4.2.46的src.rpm bash-4.2.46-20.el7_2.src.rpm http://vault.centos.org/7.3.1611/os/Source/SPackages/ b). 提取bash-4.2.46-20源代码 [root]#rpm -ivh bash-4.2.46-20.el7_2.src.rpm [root]#cd $HOME/rpmbuild/SPECS [root]#rpmbuild -bp bash.spec 此时,源代码已经安装到了$HOME/rpmbuild/BUILD目录 c).移动bash的源代码到/usr/src [root]#cd $HOME/rpmbuild/BUILD [root]#mv bash-4.2 bash-4.2.46-20 [root]#mv bash-4.2.46-20 /usr/src d). 准备bash的源码环境 [root]#cd /usr/src [root]#cd bash-4.2.46-20 [root]#./configure && make e). 结合bash编译安装bashdb [root]#cd /usr/src [root]#cd bashdb-4.2.0-7 [root]#touch $HOME/missing [root]#touch libtoolT [root]#./configure --prefix=$HOME --with-bash-src=/usr/src/bash-4.2.46-20 [root]#make [root]#make install 3. 配置bashdb [root]#vi ~/.bash_profile 在最后添加 MANPATH=$HOME/share/man:$MANPATH export MANPATH INFOPATH=$HOME/share/info export INFOPATH [root]#. ~/.bash_profile 设置inc文件路径.[重要.] [root]#mkdir /usr/share/bashdb/ [root]#ln -s ~/share/bashdb/bashdb-main.inc /usr/share/bashdb/ 4.使用bashdb [root]#bash --debugger yourscript.sh var1 var2

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值