一、用户

1、介绍

我们都知道linux中有root用户和普通用户,但是同样是普通用户,为什么有些用户的权限却不一样呢?
其实这就类似于我们的QQ群,root用户就是QQ群主,他拥有最高的权利,想干什么就干什么,
其他人都是普通用户,某一天,群主看这个小伙子不错,于是群主给了一些权限这个小伙子,
于是这个小伙子就成了QQ群的管理员,这个小伙子就比其他用户多了一些权限。

注意:root用户需要慎用,尤其是rm命令,必须慎用!!!因为root能把自己给搞死。。。

2、关于用户的一些命令

  1. 1. id
  2. id 用户名 查看用户的身份信息
  3. 例如: id root 查看root用户的身份信息
  4.  
  5. 2. 查看当前用户是谁
  6. whoami
  7.  
  8. 3. 创建用户
  9. root用户才能创建用户,创建的都是普通用户。
  10. useradd 用户名 # 创建用户
  11. passwd 用户名 # 给用户设置密码
  12.  
  13. 注意:由于系统服务的用户,默认是在1-1000以内的,因此新建的用户uid是从1000开始的
  14.  
  15. 4. 删除用户
  16. -f 强制删除用户
  17. -r 同时删除用户以及家目录
  18.  
  19. userdel -r 用户名
  20.  
  21. 5. 用户身份切换
  22. su - 用户名
  23. 注意:
  24. 中间的横杠,表示完全环境变量切换
  25. root切换成普通用户,不需要密码,反之需要密码
  26.  
  27. 6. 退出当前用户会话
  28. logout

二、组

1、介绍

1. 多用户和组
现代操作系统一般属于多用户的操作系统,因此一台机器可以有多个用户,这些用户能同时登录这台计算机,进行各自的操作,相互之间不受影响。
但是这些用户的权限是有限制的,称为普通用户,且如果用户太多,管理起来就不方便,从而引入root用户。
root用户是唯一的,且拥有系统的所有权限。root用户所在的组称为root组。“组”是具有相似权限的多个用户的集合。

2. root的权限
Linux系统的特性就是可以满足多个用户,同时工作,因此Linux系统必须具备很好的安全性。
在安装Linux系统(CentOS,redhat)的时候,可以设置root管理员密码,这个root管理员就是所有UNIX系统中的超级用户,
它拥有最高的系统所有权,能够管理系统的各项功能,如添加/删除用户,启动/关闭进程,开启/禁用硬件设备等等。

3. 用户id(uid)
在Linux系统中,用户也有自己的UID身份账号且唯一
系统管理员root的UID为0
系统用户UID为1~999,Linux安装的服务程序都会创建独有的用户负责运行。
普通用户UID从1000开始:由管理员创建。

4. 组id(gid)
为了方便管理属于同一组的用户,Linux 系统中还引入了用户组的概念。通过组id,我们可以把多个用户加入到同一个组中,从而方便为组中的用户统一规划权限或指定任务。
例如一个公司拥有多个部门,每个部门都有很多员工,每个部门就组成了一个个的组,这个组内的所有人都拥有类似的权限。

Linux管理员在创建用户时,将自动创建一个与其同名的用户组,这个用户组只有该用户一个人

2、添加组

  1. 1. groupadd
  2. groupadd命令用于将新组加入系统。
  3.  
  4. 2. 格式
  5. groupadd [参数] 组名称
  6.  
  7. 3. 主要参数
  8. -g gid:指定组ID号。
  9. -o:允许组ID号,不必惟一。
  10. -r:加入组ID号,低于499系统账号。
  11. -f:加入已经有的组时,发展程序退出。
  12.  
  13. 4. 组的信息
  14. 组的信息存放在/etc/group文件里面
  15. 例如:
  16. root:x:0:
  17.  
  18. /etc/group 文件中,每一行就代表一个用户组,其格式是使用 3 个冒号隔开的 4 列。
  19. 第一列是用户组名
  20. 第二列代表密码(但是并不使用)
  21. 第三列代表用户组的数字ID
  22. 第四列是组成员,这里为空,说明还没有任何用户属于这个组。
  23.  
  24. 5.应用实例
  25. 建立一个新组
  26. groupadd -g 1002 zbj # 创建了一个组名为zbj,组id为1002的组
  27.  
  28. /etc/group 文件中:
  29. zbj:x:1002:
  30.  
  31. 添加组成员
  32. usermod -G 组名 用户名 # 把这个用户名添加到某个组

3、删除组

  1. groupdel 组名

三、sudo命令

  1. 1、作用
  2. sudo命令,就是让普通用户可以使用root的身份去执行命令
  3.  
  4. 2、参数
  5. -V 显示版本编号
  6. -h 会显示版本编号及指令的使用方式说明
  7. -l 显示出自己(执行 sudo 的使用者)的权限
  8. -v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
  9. -k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
  10. -b 将要执行的指令放在背景执行
  11. -p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
  12. -u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
  13. -s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
  14. -H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root
  15. command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令
  16.  
  17. 3、使用sudo命令的配置过程
  18. 1.编辑 sudoers 文件,添加用户
  19. vim /etc/sudoers # 使用vim命令编辑配置文件
  20. visudo # 提供语法检测,更为友好
  21.  
  22. 2.添加clj用户,让它可以使用root身份
  23. /root 找到以下行:
  24. ## The COMMANDS section may have other options added to it.
  25. ##
  26. ## Allow root to run any commands anywhere
  27. root ALL=(ALL) ALL
  28.  
  29. 在这行下面添加:
  30. clj ALL=(ALL) ALL #允许clj在任何地方,执行任何命令
  31.  
  32. 3.使用clj用户登录,测试sudo命令
  33. clj登录 > sudo ls /root/
  34. # 会提示输入clj这个用户的密码,输入即可

四、文件与目录权限

Linux权限的目的是:保护账户的资料

Linux权限主要依据三种身份来决定:
user/owner:文件使用者,文件属于哪个用户(属主)
group:文件属于哪个组(属组)
others:既不是user,也不再group,就是other,其他人

1、什么是权限

在Linux中,每个文件都有所属的所有者,和所有组,并且规定了文件的所有者,所有组以及其他人对文件的,可读,可写,可执行等权限。

对于目录的权限来说,可读是读取目录文件列表,可写是表示在目录内新增,修改,删除文件。可执行表示可以进入目录。

2、权限的详解

  1. 例如:
  2. ll test.py
  3. -rw-r--r--. 1 root root 318 Jan 9 15:40 test.py
  4.  
  5. -rw-r--r--
  6. 第一个字母为文件类型,后续9个字母,每3个一组,是三种身份的权限:
  7. - rw- r-- r--
  8. 文件类型 (属主权限) (组权限) (其他人权限)
  9.  
  10. 实际上是两部分:
  11. 第一部分就是文件类型
  12. 其他三部分都是权限
  13.  
  14. 文件类型:
  15. - 普通文件
  16. d 文件夹
  17. l 快捷方式,软连接 link 快捷方式
  18.  
  19. b 块设备,存储媒体文件为主
  20. c 代表键盘,鼠标等设备
  21.  
  22. 权限:
  23. r read可读
  24. w write可写
  25. x executable可执行
  26. - 没有权限
  27.  
  28. 注意:rwx的顺序就是这样的,不能是rxwwxr等,只能是rwxrw-、-wx等写法
  29.  
  30. 对文件的权限来看
  31. r 可读文件的内容,例如:cat命令
  32. w 可修改文件的内容,例如:vim命令
  33. x 可执行,如同 .sh .py
  34.  
  35. 对于目录的权限来看
  36. 可读是表示可读取目录文件列表,可写是表示在目录内新增,修改,删除文件。可执行表示可以进入目录。
  37. r 可以查看文件夹内容,例如:ls命令
  38. w 可以进入目录,创建文本,例如:touch
  39. x 可进入目录,例如:cd
  40.  
  41. -rw-r--r--. 1 root root 318 Jan 9 15:40 test.py 完整的信息:
  42. 1.权限,第一个字母为文件类型,后续9个字母,每3个一组,是三种身份的权限
  43. 2.文件链接数 1
  44. 3.文件拥有者-属主 root
  45. 4.文件拥有组-属组 root
  46. 5.文件大小 318
  47. 6.最后一次被修改的时间日期 Jan 9 15:40
  48. 7.文件名 test.py

3、更改权限

  1. 1. chmod命令(change mode 更改权限)
  2. u user 属主
  3. g group 属组
  4. o other 其他
  5. a 所有,就是u g o
  6.  
  7. chmod [身份]   [参数]   [文件]
  8.    u(user)   +(添加)  
  9.    g(group)  -(删除)
  10.    o(other)  =(赋值)
  11.    a(all)
  12.  
  13. 添加权限
  14. chmod u+r file
  15. chmod u+w file
  16. chmod u+x file
  17. chmod u+rwx file
  18.  
  19. chmod g+r file
  20. chmod g+w file
  21. chmod g+x file
  22. chmod g+rwx file
  23.  
  24. chmod o+r file
  25. chmod o+w file
  26. chmod o+x file
  27. chmod o+rwx file
  28.  
  29. chmod ug+rwx file
    chmod go+rwx file
  30.  
  31. chmod a+rwx file # 给属主属组和其他人都设置rwx
  32.  
  33. 删除权限:
  34. + 修改成 - 即可,用法一样
  35.  
  36. 2. 权限与数字的转换
  37. r w x
  38. 4 2 1
  39.  
  40. 可一次性修改权限
  41. chmod 777 test.py # 把test.py这个文件的属主、属组和其他人的权限都改成:rwx
  42.  
  43. rwx = 4+2+1 = 7
  44. r-x = 4+1 = 5
  45. rw- = 4+2 = 6
  46.  
  47. --- = 0
  48.  
  49. chmod 000 test.py # 把test.py这个文件的属主、属组和其他人的权限都改成:---
  50.  
  51. chmod 123 test.py # 把test.py这个文件的属主、属组和其他人的权限都改成:--x -w- -wx
  52.  
  53. chmod 43 test.py 相当于 chmod 043 test.py
  54. chmod 3 test.py 相当于 chmod 003 test.py

4、修改文件权限属性

普通用户只能修改自己的文件名,时间与权限
因此修改其他用户权限,只能用root用户

  1. 1. chown修改属主
  2. chown root clj.txt # 把clj.txt这个文件的属主修改成root
  3.  
  4. 2. chgrp修改属组
  5. chgrp root clj.txt # 把clj.txt这个文件的属组修改成root

5、软连接(快捷方式)

  1. 1. 语法
  2. ln -s 目标文件 快捷方式路径/快捷方式名称
  3.  
  4. 2. 例如
  5. /opt下有test.py,里面只有一句:print("I am test.py")
  6. ln -s /opt/test.py /tmp/t # 为test.py文件生成快捷方式,快捷方式存放在/tmp目录下,快捷方式名为 t
  7. 创建完成后,t即代表了test.py
  8. 此时执行命令: ll t
  9. 结果:lrwxrwxrwx. 1 root root 12 Jan 9 20:14 t -> /tmp/test.py
  10. 可以发现首字符变成了 l 代表是软连接
  11.  
  12. 使用快捷方式:
  13. 在/tmp下:python t # 输出: I am test.py
  14. 在其他目录: python /tmp/t # 输出: I am test.py

6、制作bin可执行命令

  1. """
  2. /bin :系统的一些指令
  3. /sbin: 超级用户指令系统管理命令,这里存放的是系统管理员使用的管理程序 
  4.  
  5. /usr/bin:用户安装的一些可执行程序,系统升级有可能会被覆盖.
  6. /usr/sbin:超级用户才能使用的可执行程序,系统升级有可能会被覆盖.
  7.  
  8. /usr/local/bin:给用户放置自己的可执行程序,不受系统升级影响,用户编译安装软件时,一般放到/usr/local目录下
  9. """
  10.  
  11. # 0.创建自己的bin可执行文件思路
  12. 把某个脚本用软链接的方式指定到/usr/local/bin目录下即可
  13.  
  14. # 1.在某个目录下创建一个python脚本
  15. # 一般制作自己的可执行文件,都存放在/usr/local目录下
  16. cd /usr/local
  17. vim test.py
  18.  
  19. # test.py写入一些代码测试,例如:
  20.  
  21. #!/usr/bin/env python
  22. # -*- coding: utf-8 -*-
  23. import sys
  24. print sys.argv
  25.  
  26. # 2.修改文件的权限,改为可执行
  27. chmod 755 test.py
  28.  
  29. # 3.创建软链接(使用绝对路径)
  30. ln -s /usr/local/test.py /usr/local/bin/test
  31.  
  32. # 测试,在任何目录下可直接执行
  33. cd /tmp
  34. test 1 2 3

五、其他

0、tar压缩解压命令

  1. tar命令参数:
  2. -x:解压
  3. -c: 建立压缩档案
  4. -t:查看内容
  5. -r:向压缩归档文件末尾追加文件
  6. -u:更新原压缩包中的文件
  7.  
  8. 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
  9. -f 指定档案文件名或设备名,这个选项通常是必选的
  10. -z:有gzip属性的
  11. -j:有bz2属性的
  12. -Z:有compress属性的
  13. -v:显示所有过程
  14. -O:将文件解开到标准输出
  15.  
  16. 示例:
  17. 1. 压缩
  18. tar -zcvf 路径/heihei.tar.gz clj.txt # 把clj.txt这个文件压缩成heihei.tar.gz
  19. tar -zcvf 路径/haha.tar.gz clj.txt test.py # 把clj.txt和test.py这两个文件压缩成haha.tar.gz
  20.  
  21. 2. 解压
  22. tar -zxvf heihei.tar # 解压heihei.tar.gz
  23.  
  24. 小结:
  25. *.tar tar xvf 解压
  26. *.gz gzip -d或者gunzip 解压
  27. *.tar.gz和*.tgz tar xzf 解压
  28. *.bz2 bzip2 -d或者用bunzip2 解压
  29. *.tar.bz2tar xjf 解压
  30. *.Z uncompress 解压
  31. *.tar.Z tar xZf 解压
  32. *.rar unrar e解压
  33. *.zip unzip 解压

1、其他解压缩命令

  1. tar
  2. 解包:tar xvf FileName.tar
  3. 打包:tar cvf 路径/FileName.tar DirName(要打包的文件)
  4. (注:tar是打包,不是压缩!)
  5.  
  6. .gz
  7. 解压1gunzip FileName.gz
  8. 解压2gzip -d FileName.gz
  9. 压缩:gzip FileName
  10.  
  11. .tar.gz .tgz
  12. 解压:tar zxvf FileName.tar.gz
  13. 压缩:tar zcvf 路径/FileName.tar.gz DirName

  14. .bz2
  15. 解压1bzip2 -d FileName.bz2
  16. 解压2bunzip2 FileName.bz2
  17. 压缩: bzip2 -z FileName

  18. .tar.bz2
  19. 解压:tar jxvf FileName.tar.bz2
  20. 压缩:tar jcvf FileName.tar.bz2 DirName

  21. .bz
  22. 解压1bzip2 -d FileName.bz
  23. 解压2bunzip2 FileName.bz
  24. 压缩:未知
  25.  
  26. .tar.bz
  27. 解压:tar jxvf FileName.tar.bz
  28. 压缩:未知

  29. .Z
  30. 解压:uncompress FileName.Z
  31. 压缩:compress FileName
  32.  
  33. .tar.Z
  34. 解压:tar Zxvf FileName.tar.Z
  35. 压缩:tar Zcvf FileName.tar.Z DirName
  36.  
  37. .zip
  38. 解压:unzip FileName.zip
  39. 压缩:zip 路径/FileName.zip DirName

  40. .rar
  41. 解压:rar x FileName.rar
  42. 压缩:rar a 路径/FileName.rar DirName
  43.  
  44. 5.使用实例
  45.  
  46. 实例1:将文件全部打包成tar
  47.  
  48. 命令:
  49.  
  50. tar -cvf log.tar log2012.log
  51.  
  52. tar -zcvf log.tar.gz log2012.log
  53.  
  54. tar -jcvf log.tar.bz2 log2012.log

2、netstat查看网络端口

  1. 1. 语法
  2. linux查看网络端口的命令netstat
  3. netstat [参数]
  4.  
  5. 2. 参数
  6. -a (all)显示所有选项,netstat默认不显示LISTEN相关
  7. -t (tcp)仅显示tcp相关选项
  8. -u (udp)仅显示udp相关选项
  9. -n 拒绝显示别名,能显示数字的全部转化成数字。(重要)
  10. -l 仅列出有在 Listen (监听) 的服務状态
  11.  
  12. -p 显示建立相关链接的程序名(macOS中表示协议 -p protocol)
  13. -r 显示路由信息,路由表
  14. -e 显示扩展信息,例如uid
  15. -s 按各个协议进行统计 (重要)
  16. -c 每隔一个固定时间,执行该netstat命令。
  17.  
  18. 3. 示例
  19. 列出所有端口: netstat -a
  20. 列出所有tcp端口: netstat -at
  21. 列出所有udp端口: netstat -au
  22.  
  23. 常用:netstat -tunlp

3、ps命令查看进程

  1. 1. 查看linux进程信息
  2. 命令:ps # 相当于windows的任务管理器
  3.  
  4. 2. 参数:
  5. -e 显示所有进程
  6. -f 全格式
  7.  
  8. 3. 示例
  9. ps -e 显示所有进程,且显示进程所使用的环境变量。
  10. ps -f ASCII字符显示树状结构,表达程序间的相互关系
  11.  
  12. f
  13. ps -ef 是用标准的格式显示进程!!!
  14. UID PID PPID C STIME TTY TIME CMD
  15. root 2 0 0 15:41 ? 00:00:00 [kthreadd]
  16. root 87794 87790 0 17:18 pts/0 00:00:00 -bash
  17.  
  18. 其中各列的内容意思如下:
  19. UID //用户ID、但输出的是用户名
  20. PID //进程的ID
  21. PPID //父进程ID
  22. C //进程占用CPU的百分比
  23. STIME //进程启动到现在的时间
  24. TTY //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
  25. CMD //命令的名称和参数
  26.  
  27. 4. 其他参数显示不同的格式
  28. -a 显示所有进程
  29. -u 用户以及其他详细信息
  30. -x 显示没有控制终端的进程
  31.  
  32. ps -aux 是用BSD的格式来显示,跟ps -ef相类似!!!

4、Kill命令杀死进程

  1. kill命令用来删除执行中的程序或工作,kill还可将指定的信息送至程序。
  2.  
  3. 1. 语法
  4. kill [参数] 进程号
  5.  
  6. 2. 参数
  7. -a:当处理当前进程时,不限制命令名和进程号的对应关系
  8. -l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称
  9. -p:指定kill 命令只打印相关进程的进程号,而不发送任何信号
  10. -s <信息名称或编号>:指定要送出的信息
  11. -u:指定用户
  12.  
  13. 3. 注意
  14. kill命令可以带信号号码选项,默认信号是15
  15.  
  16. 4. 信号
  17. HUP 1 终端断线
  18. INT 2 中断(同 Ctrl + C
  19. QUIT 3 退出(同 Ctrl + \)
  20. TERM 15 终止
  21. KILL 9 强制终止
  22. CONT 18 继续(与STOP相反, fg/bg命令)
  23. STOP 19 暂停(同 Ctrl + Z
  24.  
  25. 只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略
  26.  
  27. 5.示例
  28. # 列出所有信号名称
  29. kill -l
  30.  
  31. # 先用ps查找进程,然后用kill杀掉
  32. ps -ef|grep vim # 这条信息中可以找到vim这个进程的进程号,我这里测试时是14800
  33. kill 14800
  34.  
  35. # 彻底杀死进程
  36. kill 9 14800

5、killall命令批量杀死进程

通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这 些进程会比较麻烦,
此时可以使用 killall 命令来批量结束某个服务程序带有的全部进程。

killall其实就是ps命令和kill命令的结合

  1. 1. 参数
  2. -Z 只杀死拥有scontext 的进程
  3. -e 要求匹配进程名称
  4. -I 忽略小写
  5. -g 杀死进程组而不是进程
  6. -i 交互模式,杀死进程前先询问用户
  7. -l 列出所有的已知信号名称
  8. -q 不输出警告信息
  9. -s 发送指定的信号
  10. -v 报告信号是否成功发送
  11. -w 等待进程死亡
  12. --help 显示帮助信息
  13. --version 显示版本显示
  14.  
  15. 2. 示例
  16. # 例如nginx启动后有2个进程
  17. killall nginx # 一次性杀死有关nginx的进程
  18. killall -9 bash # 一次性杀死有关bash的进程
  19.  
  20. # 向进程发送指定信号
  21. killall -TERM ngixn 或者 killall -KILL nginx

6、pkill

pkill 支持正则匹配的kill命令
和killall用法差不过,都是批量杀死进程

pkill vim    # 一次性杀死所有关vim的进程

7、SELinux功能

  1. 1. 介绍
  2. SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,大多数生产环境也是关闭的做法,安全手段使用其他方法。
  3. 大多数ssh连接不上虚拟机,都是因为防火墙和selinux阻挡了。
  4.  
  5. 2. 修改配置文件,永久关闭selinx
  6. # 1.修改前备份
  7. cp /etc/selinux/config /etc/selinux/config.bak
  8.  
  9. 注意:/etc/selinux/config是真正的selinux的配置文件,而 /etc/sysconfig/selinux是一个它的软连接
    即:ln -s /etc/selinux/config /etc/sysconfig/selinux,修改配置的时候,选择其中一个修改即可,是一样的。
  10. # 2.找到配置文件
  11. vim /etc/selinx/config
  12. 找到:SELINUX=enforcing这一行
  13. 修改为:SELINUX=disabled
  14.  
  15. # 3.重启服务器,永久生效
  16.  
  17. 3. 临时关闭(重启失效)
  18. # 获取selinux状态
  19. getenforce
  20.  
  21. # 参数
  22. setenforce 参数
  23.  
  24. 数字0 表示permissive,给出警告,不会阻止,等同disabled
  25. 数字1 表示enforcing,表示开启
  26.  
  27. # 修改
  28. setenforce 0 # 临时关闭

8、iptables防火墙

  1. centos7默认使用firewall作为防火墙
  2.  
  3. 1. 查看
  4. systemctl status firewalld # 查看防火墙状态
  5. systemctl is-enabled firewalld.service # 检查防火墙是否启动
  6.  
  7. iptables -L 查看防火墙规则
  8. iptables -F 清空防火墙
  9.  
  10. 2. 临时关闭
  11. # 下次开机会自动重启防火墙服务
  12. systemctl stop/start/restart firewalld # 关闭/开启/重启firewalld服务
  13. iptables -F 清空防火墙
  14.  
  15. 3. 永久关闭
  16. # 把服务停了,然后再关闭开机自动开启防火墙的服务,可实现永久关闭。
  17. systemctl stop/start/restart firewalld # 关闭/开启/重启firewalld服务
  18. iptables -F 清空防火墙
  19. systemctl disable/enable firewalld # 永久关闭/开启防火墙

9、Linux中文乱码问题

  1. linux设置支持中文
  2.  
  3. 1.linux系统的编码设置为utf8
  4. 1.设置一个文件/etc/locale.conf
  5. 命令:vim /etc/locale.conf
  6. 修改内容:LANG="zh_CN.UTF-8"
  7. 2.写入新的变量
  8. source /etc/locale.conf
  9. 3. 查看系统当前字符集
  10. echo $LANG
  11.  
  12. 2.设置远程登录软件xshell的编码也为utf8
  13. 保证xshell也是utf-8 就行

10、df查看磁盘空间的命令

  1. df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
  2.  
  3. 1. 语法
  4. df 参数
  5.  
  6. 2. 参数
  7. -h或--human-readable:以可读性较高的方式来显示信息;
  8. -k或--kilobytes:指定区块大小为1024字节;
  9. -T或--print-type:显示文件系统的类型;
  10.  
  11. 3. 示例
  12. 查看系统磁盘设备,默认是KB为单位:
  13. df
  14.  
  15. 使用-h选项以KB以上的单位来显示,可读性高:
  16. df -h

11、DNS服务

  1. 1. 解释
  2. DNSDomain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
  3. 通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。
  4.  
  5. 2. dns解析原理
  6. 1.当用户在浏览器输入 www.baidu.com的时候
  7. 2.第一步去本地dns缓存中查找域名记录
  8. 3.如果没有就去 /etc/hosts文件中,查找是否有本地解析记录
  9. 4.如果没有就去 /etc/resolv.conf 配置文件中指定的dns服务器中查找记录,如果没有,就是公网根本没有注册这个域名
  10.  
  11. 3. 一些知名的DNS服务器
  12. 114.114.114.114 114dns服务器
  13. 223.5.5.5 阿里的dns服务器
  14. 223.6.6.6 阿里的dns服务器
  15. 119.29.29.29 腾讯的dns服务器
  16.  
  17. 4. linuxdns配置文件
  18. 1,/etc/hosts 优先级最高,本地dns记录解析 ,如果买不起域名,就用这个,做本地测试开发
  19. 命令:vim /etc/hosts
  20. 增加的内容:127.0.0.1 www.baidu.com
  21.  
  22. 这样写的话,你在你的服务器上访问www.baidu.com永远只能访问到自己的127.0.0.1ip地址
  23. 相当于在本地自定义了一个域名解析
  24.  
  25. 2,/etc/resolv.conf
  26. 在本地找不到,就会去这个配置文件中找你用于域名解析的服务器DNS
  27.  
  28. cat /etc/resolv.conf # 查看默认使用的DNS
  29. # dns服务器地址
  30. nameserver 202.96.128.86 # 主dns
  31. nameserver 202.96.134.166 # 备dns
  32.  
  33. 可以修改DNS服务
  34. 命令:vim /etc/resolv.conf
  35. 修改内容:
  36. nameserver 223.5.5.5
  37. nameserver 119.29.29.29
  38.  
  39. 5. nslookup域名查找命令
  40. 支持交互式的
  41. 直接 nslookup
  42. 然后在交互模式下输入网址进行域名解析
  43.  
  44. 参数形式的
  45. nslookup www.baidu.com

12、linux的计划任务

  1. 到了某个设置的时间,自动的执行某个任务
  2.  
  3. 1. 语法
  4. crontab 参数
  5.  
  6. 2. 参数
  7. -e:编辑该用户的计时器设置;
  8. -l:列出该用户的计时器设置;
  9. -r:删除该用户的计时器设置;
  10. -u<用户名称>:指定要设定计时器的用户名称。
  11.  
  12. 3. 配置信息
  13. # crontab的配置文件
  14. /etc/crontab
  15.  
  16. # 存放定时任务的文件
  17. /var/spool/cron
  18.  
  19. 4. 注意事项
  20. 第一点:
  21. 写计划任务时,命令必须加上绝对路径,
  22. 比如你要设计一个定时任务,要使用到echo这个命令,那么你不能直接写echo
  23. 你要写echo这个命令的绝对路径:/usr/bin/echo
  24. 可用which echo 找到echo命令的绝对路径
  25.  
  26. 第二点:
  27. 确保crontab服务运行
  28. systemctl status crond
  29. ps -ef|grep crond
  30.  
  31. 第三点:
  32. 检测crontab是否开机启动
  33. systemctl is-enabled crond
  34.  
  35. 5. crontab任务配置基本格式
  36. * * * * * command
  37. 分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,07代表星期天)  命令
  38.  
  39. 星号(*):代表所有可能的值,比如第一个写 * 代表每一分钟,第二个写 * 代表 每个小时
  40. 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9
  41. 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6
  42. 正斜线(/):可以用正斜线指定时间的间隔频率,
  43. 例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10
  44. 如果用在minute字段,表示每十分钟执行一次。
  45. */3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com 每隔三分钟执行下时间同步

  46. 6. 练习
  47. # 每天的下午4点28分执行重启nginx的命令
  48. 命令的绝对路径
  49. 28 16 * * * systemctl restart nginx
  50.  
  51. # 每小时的3,15分执行命令
  52. 命令的绝对路径
  53. 3,15 * * * * 命令绝对路径
  54.  
  55. # 在上午8-11点的第3和第15分钟执行
  56. 命令的绝对路径
  57. 3,15 8-11 * * * 命令
  58.  
  59. # 每晚21:30执行命令
  60. 命令的绝对路径
  61. 30 21 * * *
  62.  
  63. # 每周六、日的下午1:30执行命令
  64. 命令的绝对路径
  65. 30 13 * * 6,0
  66.  
  67. 7. 设计定时任务示例
  68. 1crontab -e 进入编辑定时任务
  69. * * * * * /usr/bin/echo "爱就像蓝天白云" >> /tmp/love.txt
  70.  
  71. 2, 查看定时任务
  72. crontab -l
  73.  
  74. 3,确保crontab服务运行
  75. systemctl status crond
  76. ps -ef|grep crond
  77.  
  78. 4,检测crontab是否开机启动
  79. systemctl is-enabled crond
  80.  
  81. 8. 取消定时器任务
  82. crontab -r
  83.  
  84. 9.开始/停止/重启
    systemctl start/stop/restart crond
  85.  
  86. 10.设置开机是否启动
    systemctl enable/disable crond

13、linux下的环境配置文件

1.Linux的环境配置文件---- ~/.bashrc文件

~代表用户的家目录,如,root用户的家目录是:/root, 其他用户的家目录是:/home/用户名

.bashrc文件主要保存个人的一些个性化设置,如命令别名、路径等。也即在同一个服务器上,只对某个用户的个性化设置相关。它是一个隐藏文件,需要使用ls -a来查看。

.bash_history: 记录之前输入的命令

.bash_logout: 当你退出时执行的命令

.bash_profile: 当你登入shell时执行

.bashrc: 当你登入shell时执行

后两个的区别:'.bash_profile'只在会话开始时被读取一次,而'.bashrc'则每次打开新的终端时,都要被读取。

这些文件是每一位用户对终端功能和属性设置,修改.bashrc可以改变环境变量PATH、别名alias和提示符。

2.Linux的环境配置文件---- /etc/profile

除了可以修改用户目录下的.bashrc文件外,还可以修改如“/etc/profile”、“/etc/bashrc”、“/etc/profile.d”

但是修改/etc路径下的配置文件将会应用到整个系统,属于系统级的配置,而修改用户目录下的.bashrc则只是限制在用户应用上,属于用户级设置

两者在应用范围上有所区别,建议如需修改的话,修改用户目录下的.bashrc,即无需root权限,也不会影响其他用户

3.例子

设置PATH和PS1环境变量

  1. # 我的服务器上再安装了一个python3版本,因此需要重新设置PATH环境变量
  2. vim /etc/profile # 系统级的设置
  3. # 在文件的末尾添加上下面这段代码
  4. PATH=/opt/node-v8.6.0-linux-x64/bin:/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/ruby/bin
  5.  
  6. # 还能继续修改,修改PS1,改变终端命令提示符
  7. PS1="\[\e[01;31m\]\u@\h \[\e[01;36m\]\w \[\e[01;32m\]\\$ \[\e[00m\]"

设置连接linux服务器后默认进入到某个目录下

  1. # 个性化配置
  2. vim ~/.bashrc
  3.  
  4. # 写入下面这段代码
  5. # 开机默认进入/opt
  6. cd /opt
  7.  
  8. # 也可以设置系统级别的
  9. vim /etc/profile
  10.  
  11. # 写入下面这段代码
  12. # 开机默认进入/opt
  13. cd /opt

14、软件包管理

  1. 1. 什么是软件包
  2. 程序(软件)组成部分:
  3. 二进制程序 可执行命令
  4. .so文件
  5. 配置文件 .conf
  6. 帮助文件 readme /usr/share/man
  7.  
  8. 软件包顾名思义就是将应用程序、配置文件和数据打包的产物
  9.  
  10. 2. 各种系统的软件包格式
  11. windows
  12. .exe 直接运行即可
  13.  
  14. macos叫做
  15. .dmg格式的
  16.  
  17. centos系列的的软件包格式是
  18. .rpm 格式
  19.  
  20. DebianUbuntu的软件包格式是
  21. .deb格式
  22.  
  23. 3. rpm
    用法:rmp [选项]
  24. -a:查询所有套件;
  25. -b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;
  26. -c:只列出组态配置文件,本参数需配合"-l"参数使用;
  27. -d:只列出文本文件,本参数需配合"-l"参数使用;
  28. -e<套件档>或--erase<套件档>:删除指定的套件;
  29. -f<文件>+:查询拥有指定文件的套件;
  30. -h或--hash:套件安装时列出标记;
  31. -i:显示套件的相关信息;
  32. -i<套件档>或--install<套件档>:安装指定的套件档;
  33. -l:显示套件的文件列表;
  34. -p<套件档>+:查询指定的RPM套件档;
  35. -q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
  36. -R:显示套件的关联性信息;
  37. -s:显示文件状态,本参数需配合"-l"参数使用;
  38. -U<套件档>或--upgrade<套件档>:升级指定的套件档;
  39. -v:显示指令执行过程;
  40. -vv:详细显示指令执行过程,便于排错。

  41. rpm常用的安装命令:
    rpm -ivh xxx.rpm(rpm包) # 直接安装,如果要安装的软件已经存在,则不执行安装
    rpm --force -ivh xxx.rpm # 忽略报错,强制安装
    rpm -U xxx.rpm # 覆盖式安装,如果要安装的软件存在,则覆盖(也叫升级)
  42.  
  43. rpm的卸载命令:
    rpm -qa # 列出所有安装过的软件
    rmp -ql xxx # 查询是否安装了xxx软件
    rmp -e xxx # 卸载xxx软件
  44.  
  45. rpm的显著缺点:
  46. rpm管理软件包的命令,很难用,需要手动解决依赖关系
  47. 例如:
  48. rpm -ivh mysql-5-3-4.rpm 提示我少了什么。。。
  49. 我去把少的东西安装好之后。。。。又告诉我少了什么。。。。
  50.  
  51. 4. yum命令
  52. yum命令是在FedoraRedHat以及SUSE中基于rpm的软件包管理器,可以自动处理依赖性关系,
  53. 并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装,如同python中的 pip 工具。

  54. 5. yum源的解释
  55. yum就是为了解决依赖关系而存在的。yum源就相当是一个目录项,
  56. 当我们使用yum机制安装软件时,若需要安装依赖软件,
  57. yum机制就会根据在yum源中定义好的路径查找依赖软件,并将依赖软件安装好。
  58.  
  59. 也就是说,yum会从指定的地方(相关网站的rpm包地址或本地的rpm路径)自动下载RPM包并且安装,能够很好的解决依赖关系问题。
  60.  
  61. 6. 为什么要重新配置yum
  62. 因为yum默认的仓库软件包不多,而且默认配置的是centos的国外仓库地址,
  63. 我们把它修改为阿里云的yum仓库,可以加速下载。
  64. 阿里云的yumhttp://mirrors.aliyun.com,找到你对应的系统,点击帮助。
  65.  
  66. 注意:!!!只有以 .repo的文件结尾,才会识别为是一个yum仓库
  67.  
  68. 7. 步骤
  69. 0. 进入yum源目录
  70. cd /etc/yum.repos.d/
  71.  
  72. 1.备份旧的yum
  73. mkdir allbak
  74. mv * allbak
  75.  
  76. 2.下载新的阿里云yum源(主仓库)
  77. wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
  78. -O 指定下载后的文件,存放到某个路径,且改名
  79.  
  80. 配置第三方软件源,epel源(备用仓库)
  81. wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  82.  
  83. 3.清空旧的yum缓存
  84. yum clean all
  85.  
  86. 4.生成新的阿里云的yum缓存
  87. yum makecache
  88.  
  89. 5.安装一个软件,测试一下
  90. yum install redis -y #查看redis是从哪个yum源来的
  91. -y 一路默认的yes
  92.  
  93. 6.只有通过yum安装的软件,才可以通过systemctl 管理
  94. systemctl start/stop/restart/status redis
  95.  
  96.  
  97.  
  98. 8. yum参数
  99. -h:显示帮助信息;
  100. -y:对所有的提问都回答“yes”;
  101. -c:指定配置文件;
  102. -q:安静模式;
  103. -v:详细模式;
  104. -d:设置调试等级(0-10);
  105. -e:设置错误等级(0-10);
  106. -R:设置yum处理一个命令的最大等待时间;
  107. -C:完全从缓存中运行,而不去下载或者更新任何头文件。
  108.  
  109. 9. yum常用命令
  110. yum repolist all 列出所有仓库
  111. yum list all 列出仓库所有软件包
  112. yum info 软件包名 查看软件包信息
  113. yum install 软件包名 安装软件包
  114. yum reinstall 软件包名 重新安装软件包
  115. yum update 软件包名 升级软件包
  116. yum remove 软件包名 移除软件包
  117. yum clean all 清楚所有仓库缓存
  118. yum check-update 检查可以更新的软件包
  119. yum grouplist 查看系统中已安装的软件包
  120. yum groupinstall 软件包组 安装软件包组
  121.  
  122. yum两种卸载方式:
    1,只卸载软件包
    yum remove xxx # 只卸载这个软件包本身
  123.  
  124. 2,卸载软件包和它的依赖
    yum history list xxx # 查询安装的xxx信息(可以看到一个ID选项)
    yum history undo xxx_ID # 根据上面查询到的ID完全卸载xxx包,即卸载这个软件包和它的依赖包

  125. 10.yum命令用不了
    有些版本的yum命令是有bug的,
    http://www.rpmfind.net/linux/RPM/centos/7.6.1810/x86_64/Packages/yum-3.4.3-161.el7.centos.noarch.html重新下载一个yum包(下载的是一个rmp包),需要用rpm安装,rpm -U xxx.rpm
  126. 11. 系统服务管理命令
  127. 只有通过yum安装的软件,才可以通过systemctl 管理
  128. systemctl start/stop/restart/status redis
  129.  
  130. systemctl stop/start network
  131. systemctl enable redis # 开启加载redis
  132. systemctl disable redis # 禁止redis开机自启

15、如何开启服务器的22端口(ssh)

  1. 1.ifconfig # 查看ip网卡信息,记住eth0,eth1对应哪个ip地址
  2. root@aliyunzbj /tmp o ifconfig
  3. eth0: flags=2256<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  4. inet 192.168.10.53 netmask 255.255.255.0 broadcast 192.168.10.255
  5. ...
  6.  
  7. eth1: flags=2257<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  8. inet 192.168.26.66 netmask 255.255.255.0 broadcast 192.168.26.255
  9. ...
  10.  
  11. lo: flags=82<UP,LOOPBACK,RUNNING> mtu 65536
  12. inet 127.0.0.1 netmask 255.255.255.0
  13. ...
  14.  
  15. 2.查看当前的iptables防火墙配置
  16. root@aliyunzbj /tmp o iptables-save
  17.  
  18. ...
  19. -A INPUT -i lo -j ACCEPT
  20. -A INPUT -i eth0 -j MANAGE-INPUT # MANAGE-INPUT代表eth0网卡的防火墙策略
  21. -A INPUT -i eth1 -j USER-INPUT # USER-INPUT代表eth1网卡的防火墙策略
  22. ...
  23. # 这里可以看到MANAGE-INPUT即eth0网卡开启了22端口,但是下面的策略并没有看到USER-INPUT(eth1)开启22端口
  24. -A MANAGE-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
  25. ...
  26.  
  27. 3.给网卡eth1添加22端口
  28. # 可以直接复制上面的策略,把MANAGE-INPUT改成USER-INPUT即可
  29. root@aliyunzbj /tmp o iptables -A USER-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
  30.  
  31. 4.再次查看策略
  32. root@aliyunzbj /tmp o iptables-save
  33.  
  34. ...
  35. -A INPUT -i lo -j ACCEPT
  36. -A INPUT -i eth0 -j MANAGE-INPUT # MANAGE-INPUT代表eth0网卡的防火墙策略
  37. -A INPUT -i eth1 -j USER-INPUT # USER-INPUT代表eth1网卡的防火墙策略
  38. ...
  39. -A MANAGE-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
  40. -A USER-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
  41. ...

linux文件目录权限和系统基础优化命令(yum源配置)的更多相关文章

  1. Linux 系统基础优化和常用命令

    目录 Linux 系统基础优化和常用命令 软连接 tar解压命令 gzip命令 netstart命令 ps命令 kill命令 killall命令 SELinux功能 iptables防火墙 Linux ...

  2. Linux系统基础优化及常用命令

    Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ifconfig 查询.设置网卡和 ...

  3. 8,Linux系统基础优化及常用命令

    Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ifconfig 查询.设置网卡和 ...

  4. 运维 07 Linux系统基础优化及常用命令

    Linux系统基础优化及常用命令   Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令 ...

  5. Linux实战教学笔记06:Linux系统基础优化

    第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...

  6. Linux系统基础优化

    一.关闭防火墙iptables:                (1)关闭                 /etc/init.d/iptables stop                (2)检查 ...

  7. Linu之linux系统基础优化和基本命令

    Linux系统基础优化和基本命令 网络参数设定命令 ifconfig: 查询,设置网卡和ip等参数 ifup,ifdown: 脚本命令,更简单的方式 ip: 符合指令,直接修改上述功能 编辑网卡配置文 ...

  8. linux系统基础优化及高级操作命令

    Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ifconfig 查询.设置网卡和 ...

  9. 你一定要知道的关于Linux文件目录操作的12个常用命令

    写在前面: 1,<你一定要知道的关于Linux文件目录操作的12个常用命令>是楼主收集的关于Linux文件目录操作最常用的命令,包括文件或目录的新建.拷贝.移动.删除.查看等,是开发人员操 ...

随机推荐

  1. arcgis api 3.x for js 共享干货系列之二自定义 Navigation 控件样式风格(附源码下载)

    0.内容概览 自定义 Navigation 控件样式风格 源码下载 1.内容讲解 arcgis api 3.x for js 默认的Navigation控件样式风格如下图:这样的风格不能说不好,各有各 ...

  2. asp.net/wingtip/UI和导航

    ASP.NET Web窗体可以让web应用创建动态内容.静态网页的知识和HTML.CSS一模一样,区别在于ASP.NET网页包括了ASP.NET可以识别并处理的服务器端的内容.对于静态页面(.html ...

  3. 浅谈OA系统与Portal门户的区别

    随着社会信息化的发展与进步,OA办公自动化软件打破了传统复杂的办公方式,使各个行业实现了高效的无纸化办公.由此一来OA快速成长为继财务软件.ERP软件之后的第三大管理软件.随着企业信息化系统的不断增多 ...

  4. Flask框架搭建REST-API服务

    一.目的 为了能够将测试工具部署成RESTful-API服务,这样就能通过接口的方式提供统一测试工具服务,使用人员就不用构建application而产生的各种环境问题.使用问题. 适合人群:Pytho ...

  5. elasticsearch常用命令

    elasticsearch的rest访问格式: curl -X<REST Verb> <Node>:<Port>/<Index>/<Type> ...

  6. JavaScript中闭包的写法和作用详解

    1.什么是闭包 闭包是有权访问另一个函数作用域的变量的函数. 简单的说,Javascript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内.而且,这些内部函数可以访问它们所在的外 ...

  7. VMware虚拟机系统无法使用桥接联网

    1.环境 VMware 14.1.1 虚拟系统:Windows Server 2008 32位 2.解决办法 打开虚拟网络编辑器 有红框中的提示出现时,就点击更改设置 点击桥接模式,在VMnet信息中 ...

  8. LeetCode算法题-N-ary Tree Preorder Traversal(Java实现)

    这是悦乐书的第268次更新,第282篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第135题(顺位题号是589).给定一个n-ary树,返回其节点值的前序遍历.例如,给定 ...

  9. docker其他参考资料

    https://yeasy.gitbooks.io/docker_practice/image/build.html https://blog.csdn.net/weixin_42596342/art ...

  10. 设计模式之Template Method模式

    作用:将具体的处理交给子类 什么是Template Method模式? Template Method模式是指带有模板功能的模式,组成模板的方法被定义在父类中,且这些方法为抽象方法.子类去实现父类中的 ...