linux文件目录权限和系统基础优化命令(yum源配置)
一、用户
1、介绍
我们都知道linux中有root用户和普通用户,但是同样是普通用户,为什么有些用户的权限却不一样呢?
其实这就类似于我们的QQ群,root用户就是QQ群主,他拥有最高的权利,想干什么就干什么,
其他人都是普通用户,某一天,群主看这个小伙子不错,于是群主给了一些权限这个小伙子,
于是这个小伙子就成了QQ群的管理员,这个小伙子就比其他用户多了一些权限。
注意:root用户需要慎用,尤其是rm命令,必须慎用!!!因为root能把自己给搞死。。。
2、关于用户的一些命令
- 1. id
- id 用户名 查看用户的身份信息
- 例如: id root 查看root用户的身份信息
- 2. 查看当前用户是谁
- whoami
- 3. 创建用户
- root用户才能创建用户,创建的都是普通用户。
- useradd 用户名 # 创建用户
- passwd 用户名 # 给用户设置密码
- 注意:由于系统服务的用户,默认是在1-1000以内的,因此新建的用户uid是从1000开始的
- 4. 删除用户
- -f 强制删除用户
- -r 同时删除用户以及家目录
- userdel -r 用户名
- 5. 用户身份切换
- su - 用户名
- 注意:
- 中间的横杠,表示完全环境变量切换
- root切换成普通用户,不需要密码,反之需要密码
- 6. 退出当前用户会话
- 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. groupadd
- groupadd命令用于将新组加入系统。
- 2. 格式
- groupadd [参数] 组名称
- 3. 主要参数
- -g gid:指定组ID号。
- -o:允许组ID号,不必惟一。
- -r:加入组ID号,低于499系统账号。
- -f:加入已经有的组时,发展程序退出。
- 4. 组的信息
- 组的信息存放在/etc/group文件里面
- 例如:
- root:x:0:
- 在 /etc/group 文件中,每一行就代表一个用户组,其格式是使用 3 个冒号隔开的 4 列。
- 第一列是用户组名
- 第二列代表密码(但是并不使用)
- 第三列代表用户组的数字ID
- 第四列是组成员,这里为空,说明还没有任何用户属于这个组。
- 5.应用实例
- 建立一个新组
- groupadd -g 1002 zbj # 创建了一个组名为zbj,组id为1002的组
- 在 /etc/group 文件中:
- zbj:x:1002:
- 添加组成员
- usermod -G 组名 用户名 # 把这个用户名添加到某个组
3、删除组
- groupdel 组名
三、sudo命令
- 1、作用
- sudo命令,就是让普通用户可以使用root的身份去执行命令
- 2、参数
- -V 显示版本编号
- -h 会显示版本编号及指令的使用方式说明
- -l 显示出自己(执行 sudo 的使用者)的权限
- -v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
- -k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
- -b 将要执行的指令放在背景执行
- -p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
- -u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
- -s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
- -H 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root )
- command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令
- 3、使用sudo命令的配置过程
- 1.编辑 sudoers 文件,添加用户
- vim /etc/sudoers # 使用vim命令编辑配置文件
- visudo # 提供语法检测,更为友好
- 2.添加clj用户,让它可以使用root身份
- /root 找到以下行:
- ## The COMMANDS section may have other options added to it.
- ##
- ## Allow root to run any commands anywhere
- root ALL=(ALL) ALL
- 在这行下面添加:
- clj ALL=(ALL) ALL #允许clj在任何地方,执行任何命令
- 3.使用clj用户登录,测试sudo命令
- clj登录 > sudo ls /root/
- # 会提示输入clj这个用户的密码,输入即可
四、文件与目录权限
Linux权限的目的是:保护账户的资料
Linux权限主要依据三种身份来决定:
user/owner:文件使用者,文件属于哪个用户(属主)
group:文件属于哪个组(属组)
others:既不是user,也不再group,就是other,其他人
1、什么是权限
在Linux中,每个文件都有所属的所有者,和所有组,并且规定了文件的所有者,所有组以及其他人对文件的,可读,可写,可执行等权限。
对于目录的权限来说,可读是读取目录文件列表,可写是表示在目录内新增,修改,删除文件。可执行表示可以进入目录。
2、权限的详解
- 例如:
- ll test.py
- -rw-r--r--. 1 root root 318 Jan 9 15:40 test.py
- -rw-r--r--
- 第一个字母为文件类型,后续9个字母,每3个一组,是三种身份的权限:
- - rw- r-- r--
- 文件类型 (属主权限) (组权限) (其他人权限)
- 实际上是两部分:
- 第一部分就是文件类型
- 其他三部分都是权限
- 文件类型:
- - 普通文件
- d 文件夹
- l 快捷方式,软连接 link 快捷方式
- b 块设备,存储媒体文件为主
- c 代表键盘,鼠标等设备
- 权限:
- r read可读
- w write可写
- x executable可执行
- - 没有权限
- 注意:rwx的顺序就是这样的,不能是rxw、wxr等,只能是rwx、rw-、-wx等写法
- 对文件的权限来看
- r 可读文件的内容,例如:cat命令
- w 可修改文件的内容,例如:vim命令
- x 可执行,如同 .sh .py
- 对于目录的权限来看
- 可读是表示可读取目录文件列表,可写是表示在目录内新增,修改,删除文件。可执行表示可以进入目录。
- r 可以查看文件夹内容,例如:ls命令
- w 可以进入目录,创建文本,例如:touch
- x 可进入目录,例如:cd
- -rw-r--r--. 1 root root 318 Jan 9 15:40 test.py 完整的信息:
- 1.权限,第一个字母为文件类型,后续9个字母,每3个一组,是三种身份的权限
- 2.文件链接数 1
- 3.文件拥有者-属主 root
- 4.文件拥有组-属组 root
- 5.文件大小 318
- 6.最后一次被修改的时间日期 Jan 9 15:40
- 7.文件名 test.py
3、更改权限
- 1. chmod命令(change mode 更改权限)
- u user 属主
- g group 属组
- o other 其他
- a 所有,就是u g o
- chmod [身份] [参数] [文件]
- u(user) +(添加)
- g(group) -(删除)
- o(other) =(赋值)
- a(all)
- 添加权限
- chmod u+r file
- chmod u+w file
- chmod u+x file
- chmod u+rwx file
- chmod g+r file
- chmod g+w file
- chmod g+x file
- chmod g+rwx file
- chmod o+r file
- chmod o+w file
- chmod o+x file
- chmod o+rwx file
- chmod ug+rwx file
chmod go+rwx file- chmod a+rwx file # 给属主属组和其他人都设置rwx
- 删除权限:
- 把 + 修改成 - 即可,用法一样
- 2. 权限与数字的转换
- r w x
- 4 2 1
- 可一次性修改权限
- chmod 777 test.py # 把test.py这个文件的属主、属组和其他人的权限都改成:rwx
- rwx = 4+2+1 = 7
- r-x = 4+1 = 5
- rw- = 4+2 = 6
- --- = 0
- chmod 000 test.py # 把test.py这个文件的属主、属组和其他人的权限都改成:---
- chmod 123 test.py # 把test.py这个文件的属主、属组和其他人的权限都改成:--x -w- -wx
- chmod 43 test.py 相当于 chmod 043 test.py
- chmod 3 test.py 相当于 chmod 003 test.py
4、修改文件权限属性
普通用户只能修改自己的文件名,时间与权限
因此修改其他用户权限,只能用root用户
- 1. chown修改属主
- chown root clj.txt # 把clj.txt这个文件的属主修改成root
- 2. chgrp修改属组
- chgrp root clj.txt # 把clj.txt这个文件的属组修改成root
5、软连接(快捷方式)
- 1. 语法
- ln -s 目标文件 快捷方式路径/快捷方式名称
- 2. 例如
- /opt下有test.py,里面只有一句:print("I am test.py")
- ln -s /opt/test.py /tmp/t # 为test.py文件生成快捷方式,快捷方式存放在/tmp目录下,快捷方式名为 t
- 创建完成后,t即代表了test.py
- 此时执行命令: ll t
- 结果:lrwxrwxrwx. 1 root root 12 Jan 9 20:14 t -> /tmp/test.py
- 可以发现首字符变成了 l 代表是软连接
- 使用快捷方式:
- 在/tmp下:python t # 输出: I am test.py
- 在其他目录: python /tmp/t # 输出: I am test.py
6、制作bin可执行命令
- """
- /bin :系统的一些指令
- /sbin: 超级用户指令系统管理命令,这里存放的是系统管理员使用的管理程序
- /usr/bin:用户安装的一些可执行程序,系统升级有可能会被覆盖.
- /usr/sbin:超级用户才能使用的可执行程序,系统升级有可能会被覆盖.
- /usr/local/bin:给用户放置自己的可执行程序,不受系统升级影响,用户编译安装软件时,一般放到/usr/local目录下
- """
- # 0.创建自己的bin可执行文件思路
- 把某个脚本用软链接的方式指定到/usr/local/bin目录下即可
- # 1.在某个目录下创建一个python脚本
- # 一般制作自己的可执行文件,都存放在/usr/local目录下
- cd /usr/local
- vim test.py
- # test.py写入一些代码测试,例如:
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import sys
- print sys.argv
- # 2.修改文件的权限,改为可执行
- chmod 755 test.py
- # 3.创建软链接(使用绝对路径)
- ln -s /usr/local/test.py /usr/local/bin/test
- # 测试,在任何目录下可直接执行
- cd /tmp
- test 1 2 3
五、其他
0、tar压缩解压命令
- tar命令参数:
- -x:解压
- -c: 建立压缩档案
- -t:查看内容
- -r:向压缩归档文件末尾追加文件
- -u:更新原压缩包中的文件
- 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
- -f 指定档案文件名或设备名,这个选项通常是必选的
- -z:有gzip属性的
- -j:有bz2属性的
- -Z:有compress属性的
- -v:显示所有过程
- -O:将文件解开到标准输出
- 示例:
- 1. 压缩
- tar -zcvf 路径/heihei.tar.gz clj.txt # 把clj.txt这个文件压缩成heihei.tar.gz
- tar -zcvf 路径/haha.tar.gz clj.txt test.py # 把clj.txt和test.py这两个文件压缩成haha.tar.gz
- 2. 解压
- tar -zxvf heihei.tar # 解压heihei.tar.gz
- 小结:
- *.tar 用 tar –xvf 解压
- *.gz 用 gzip -d或者gunzip 解压
- *.tar.gz和*.tgz 用 tar –xzf 解压
- *.bz2 用 bzip2 -d或者用bunzip2 解压
- *.tar.bz2用tar –xjf 解压
- *.Z 用 uncompress 解压
- *.tar.Z 用tar –xZf 解压
- *.rar 用 unrar e解压
- *.zip 用 unzip 解压
1、其他解压缩命令
- tar
- 解包:tar xvf FileName.tar
- 打包:tar cvf 路径/FileName.tar DirName(要打包的文件)
- (注:tar是打包,不是压缩!)
- .gz
- 解压1:gunzip FileName.gz
- 解压2:gzip -d FileName.gz
- 压缩:gzip FileName
- .tar.gz 和 .tgz
- 解压:tar zxvf FileName.tar.gz
- 压缩:tar zcvf 路径/FileName.tar.gz DirName
- .bz2
- 解压1:bzip2 -d FileName.bz2
- 解压2:bunzip2 FileName.bz2
- 压缩: bzip2 -z FileName
- .tar.bz2
- 解压:tar jxvf FileName.tar.bz2
- 压缩:tar jcvf FileName.tar.bz2 DirName
- .bz
- 解压1:bzip2 -d FileName.bz
- 解压2:bunzip2 FileName.bz
- 压缩:未知
- .tar.bz
- 解压:tar jxvf FileName.tar.bz
- 压缩:未知
- .Z
- 解压:uncompress FileName.Z
- 压缩:compress FileName
- .tar.Z
- 解压:tar Zxvf FileName.tar.Z
- 压缩:tar Zcvf FileName.tar.Z DirName
- .zip
- 解压:unzip FileName.zip
- 压缩:zip 路径/FileName.zip DirName
- .rar
- 解压:rar x FileName.rar
- 压缩:rar a 路径/FileName.rar DirName
- 5.使用实例
- 实例1:将文件全部打包成tar包
- 命令:
- tar -cvf log.tar log2012.log
- tar -zcvf log.tar.gz log2012.log
- tar -jcvf log.tar.bz2 log2012.log
2、netstat查看网络端口
- 1. 语法
- linux查看网络端口的命令netstat
- netstat [参数]
- 2. 参数
- -a (all)显示所有选项,netstat默认不显示LISTEN相关
- -t (tcp)仅显示tcp相关选项
- -u (udp)仅显示udp相关选项
- -n 拒绝显示别名,能显示数字的全部转化成数字。(重要)
- -l 仅列出有在 Listen (监听) 的服務状态
- -p 显示建立相关链接的程序名(macOS中表示协议 -p protocol)
- -r 显示路由信息,路由表
- -e 显示扩展信息,例如uid等
- -s 按各个协议进行统计 (重要)
- -c 每隔一个固定时间,执行该netstat命令。
- 3. 示例
- 列出所有端口: netstat -a
- 列出所有tcp端口: netstat -at
- 列出所有udp端口: netstat -au
- 常用:netstat -tunlp
3、ps命令查看进程
- 1. 查看linux进程信息
- 命令:ps # 相当于windows的任务管理器
- 2. 参数:
- -e 显示所有进程
- -f 全格式
- 3. 示例
- ps -e 显示所有进程,且显示进程所使用的环境变量。
- ps -f 用ASCII字符显示树状结构,表达程序间的相互关系
- f
- ps -ef 是用标准的格式显示进程!!!
- UID PID PPID C STIME TTY TIME CMD
- root 2 0 0 15:41 ? 00:00:00 [kthreadd]
- root 87794 87790 0 17:18 pts/0 00:00:00 -bash
- 其中各列的内容意思如下:
- UID //用户ID、但输出的是用户名
- PID //进程的ID
- PPID //父进程ID
- C //进程占用CPU的百分比
- STIME //进程启动到现在的时间
- TTY //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
- CMD //命令的名称和参数
- 4. 其他参数显示不同的格式
- -a 显示所有进程
- -u 用户以及其他详细信息
- -x 显示没有控制终端的进程
- ps -aux 是用BSD的格式来显示,跟ps -ef相类似!!!
4、Kill命令杀死进程
- kill命令用来删除执行中的程序或工作,kill还可将指定的信息送至程序。
- 1. 语法
- kill [参数] 进程号
- 2. 参数
- -a:当处理当前进程时,不限制命令名和进程号的对应关系
- -l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称
- -p:指定kill 命令只打印相关进程的进程号,而不发送任何信号
- -s <信息名称或编号>:指定要送出的信息
- -u:指定用户
- 3. 注意
- kill命令可以带信号号码选项,默认信号是15
- 4. 信号
- HUP 1 终端断线
- INT 2 中断(同 Ctrl + C)
- QUIT 3 退出(同 Ctrl + \)
- TERM 15 终止
- KILL 9 强制终止
- CONT 18 继续(与STOP相反, fg/bg命令)
- STOP 19 暂停(同 Ctrl + Z)
- 只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略
- 5.示例
- # 列出所有信号名称
- kill -l
- # 先用ps查找进程,然后用kill杀掉
- ps -ef|grep vim # 这条信息中可以找到vim这个进程的进程号,我这里测试时是14800
- kill 14800
- # 彻底杀死进程
- kill –9 14800
5、killall命令批量杀死进程
通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果逐个去结束这 些进程会比较麻烦,
此时可以使用 killall 命令来批量结束某个服务程序带有的全部进程。
killall其实就是ps命令和kill命令的结合
- 1. 参数
- -Z 只杀死拥有scontext 的进程
- -e 要求匹配进程名称
- -I 忽略小写
- -g 杀死进程组而不是进程
- -i 交互模式,杀死进程前先询问用户
- -l 列出所有的已知信号名称
- -q 不输出警告信息
- -s 发送指定的信号
- -v 报告信号是否成功发送
- -w 等待进程死亡
- --help 显示帮助信息
- --version 显示版本显示
- 2. 示例
- # 例如nginx启动后有2个进程
- killall nginx # 一次性杀死有关nginx的进程
- killall -9 bash # 一次性杀死有关bash的进程
- # 向进程发送指定信号
- killall -TERM ngixn 或者 killall -KILL nginx
6、pkill
pkill 支持正则匹配的kill命令
和killall用法差不过,都是批量杀死进程
pkill vim # 一次性杀死所有关vim的进程
7、SELinux功能
- 1. 介绍
- SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,大多数生产环境也是关闭的做法,安全手段使用其他方法。
- 大多数ssh连接不上虚拟机,都是因为防火墙和selinux阻挡了。
- 2. 修改配置文件,永久关闭selinx
- # 1.修改前备份
- cp /etc/selinux/config /etc/selinux/config.bak
- 注意:/etc/selinux/config是真正的selinux的配置文件,而 /etc/sysconfig/selinux是一个它的软连接
即:ln -s /etc/selinux/config /etc/sysconfig/selinux,修改配置的时候,选择其中一个修改即可,是一样的。- # 2.找到配置文件
- vim /etc/selinx/config
- 找到:SELINUX=enforcing这一行
- 修改为:SELINUX=disabled
- # 3.重启服务器,永久生效
- 3. 临时关闭(重启失效)
- # 获取selinux状态
- getenforce
- # 参数
- setenforce 参数
- 数字0 表示permissive,给出警告,不会阻止,等同disabled
- 数字1 表示enforcing,表示开启
- # 修改
- setenforce 0 # 临时关闭
8、iptables防火墙
- centos7默认使用firewall作为防火墙
- 1. 查看
- systemctl status firewalld # 查看防火墙状态
- systemctl is-enabled firewalld.service # 检查防火墙是否启动
- iptables -L 查看防火墙规则
- iptables -F 清空防火墙
- 2. 临时关闭
- # 下次开机会自动重启防火墙服务
- systemctl stop/start/restart firewalld # 关闭/开启/重启firewalld服务
- iptables -F 清空防火墙
- 3. 永久关闭
- # 把服务停了,然后再关闭开机自动开启防火墙的服务,可实现永久关闭。
- systemctl stop/start/restart firewalld # 关闭/开启/重启firewalld服务
- iptables -F 清空防火墙
- systemctl disable/enable firewalld # 永久关闭/开启防火墙
9、Linux中文乱码问题
- linux设置支持中文
- 1.把linux系统的编码设置为utf8
- 1.设置一个文件/etc/locale.conf
- 命令:vim /etc/locale.conf
- 修改内容:LANG="zh_CN.UTF-8"
- 2.写入新的变量
- source /etc/locale.conf
- 3. 查看系统当前字符集
- echo $LANG
- 2.设置远程登录软件xshell的编码也为utf8
- 保证xshell也是utf-8 就行
10、df查看磁盘空间的命令
- df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
- 1. 语法
- df 参数
- 2. 参数
- -h或--human-readable:以可读性较高的方式来显示信息;
- -k或--kilobytes:指定区块大小为1024字节;
- -T或--print-type:显示文件系统的类型;
- 3. 示例
- 查看系统磁盘设备,默认是KB为单位:
- df
- 使用-h选项以KB以上的单位来显示,可读性高:
- df -h
11、DNS服务
- 1. 解释
- DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
- 通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。
- 2. dns解析原理
- 1.当用户在浏览器输入 www.baidu.com的时候
- 2.第一步去本地dns缓存中查找域名记录
- 3.如果没有就去 /etc/hosts文件中,查找是否有本地解析记录
- 4.如果没有就去 /etc/resolv.conf 配置文件中指定的dns服务器中查找记录,如果没有,就是公网根本没有注册这个域名
- 3. 一些知名的DNS服务器
- 114.114.114.114 114的dns服务器
- 223.5.5.5 阿里的dns服务器
- 223.6.6.6 阿里的dns服务器
- 119.29.29.29 腾讯的dns服务器
- 4. linux的dns配置文件
- 1,/etc/hosts 优先级最高,本地dns记录解析 ,如果买不起域名,就用这个,做本地测试开发
- 命令:vim /etc/hosts
- 增加的内容:127.0.0.1 www.baidu.com
- 这样写的话,你在你的服务器上访问www.baidu.com永远只能访问到自己的127.0.0.1的ip地址
- 相当于在本地自定义了一个域名解析
- 2,/etc/resolv.conf
- 在本地找不到,就会去这个配置文件中找你用于域名解析的服务器DNS
- cat /etc/resolv.conf # 查看默认使用的DNS
- # dns服务器地址
- nameserver 202.96.128.86 # 主dns
- nameserver 202.96.134.166 # 备dns
- 可以修改DNS服务
- 命令:vim /etc/resolv.conf
- 修改内容:
- nameserver 223.5.5.5
- nameserver 119.29.29.29
- 5. nslookup域名查找命令
- 支持交互式的
- 直接 nslookup
- 然后在交互模式下输入网址进行域名解析
- 参数形式的
- nslookup www.baidu.com
12、linux的计划任务
- 到了某个设置的时间,自动的执行某个任务
- 1. 语法
- crontab 参数
- 2. 参数
- -e:编辑该用户的计时器设置;
- -l:列出该用户的计时器设置;
- -r:删除该用户的计时器设置;
- -u<用户名称>:指定要设定计时器的用户名称。
- 3. 配置信息
- # crontab的配置文件
- /etc/crontab
- # 存放定时任务的文件
- /var/spool/cron
- 4. 注意事项
- 第一点:
- 写计划任务时,命令必须加上绝对路径,
- 比如你要设计一个定时任务,要使用到echo这个命令,那么你不能直接写echo,
- 你要写echo这个命令的绝对路径:/usr/bin/echo
- 可用which echo 找到echo命令的绝对路径
- 第二点:
- 确保crontab服务运行
- systemctl status crond
- ps -ef|grep crond
- 第三点:
- 检测crontab是否开机启动
- systemctl is-enabled crond
- 5. crontab任务配置基本格式
- * * * * * command
- 分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,0或7代表星期天) 命令
- 星号(*):代表所有可能的值,比如第一个写 * 代表每一分钟,第二个写 * 代表 每个小时
- 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
- 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
- 正斜线(/):可以用正斜线指定时间的间隔频率,
- 例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10
- 如果用在minute字段,表示每十分钟执行一次。
- */3 * * * * /usr/sbin/ntpdate ntp1.aliyun.com 每隔三分钟执行下时间同步
- 6. 练习
- # 每天的下午4点28分执行重启nginx的命令
- 分 时 日 月 周 命令的绝对路径
- 28 16 * * * systemctl restart nginx
- # 每小时的3,15分执行命令
- 分 时 日 月 周 命令的绝对路径
- 3,15 * * * * 命令绝对路径
- # 在上午8-11点的第3和第15分钟执行
- 分 时 日 月 周 命令的绝对路径
- 3,15 8-11 * * * 命令
- # 每晚21:30执行命令
- 分 时 日 月 周 命令的绝对路径
- 30 21 * * *
- # 每周六、日的下午1:30执行命令
- 分 时 日 月 周 命令的绝对路径
- 30 13 * * 6,0
- 7. 设计定时任务示例
- 1,crontab -e 进入编辑定时任务
- * * * * * /usr/bin/echo "爱就像蓝天白云" >> /tmp/love.txt
- 2, 查看定时任务
- crontab -l
- 3,确保crontab服务运行
- systemctl status crond
- ps -ef|grep crond
- 4,检测crontab是否开机启动
- systemctl is-enabled crond
- 8. 取消定时器任务
- crontab -r
- 9.开始/停止/重启
systemctl start/stop/restart crond- 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环境变量
- # 我的服务器上再安装了一个python3版本,因此需要重新设置PATH环境变量
- vim /etc/profile # 系统级的设置
- # 在文件的末尾添加上下面这段代码
- 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
- # 还能继续修改,修改PS1,改变终端命令提示符
- PS1="\[\e[01;31m\]\u@\h \[\e[01;36m\]\w \[\e[01;32m\]\\$ \[\e[00m\]"
设置连接linux服务器后默认进入到某个目录下
- # 个性化配置
- vim ~/.bashrc
- # 写入下面这段代码
- # 开机默认进入/opt
- cd /opt
- # 也可以设置系统级别的
- vim /etc/profile
- # 写入下面这段代码
- # 开机默认进入/opt
- cd /opt
14、软件包管理
- 1. 什么是软件包
- 程序(软件)组成部分:
- 二进制程序 可执行命令
- 库 .so文件
- 配置文件 .conf
- 帮助文件 readme /usr/share/man
- 软件包顾名思义就是将应用程序、配置文件和数据打包的产物
- 2. 各种系统的软件包格式
- windows
- .exe 直接运行即可
- macos叫做
- .dmg格式的
- centos系列的的软件包格式是
- .rpm 格式
- Debian和Ubuntu的软件包格式是
- .deb格式
- 3. rpm
用法:rmp [选项]- -a:查询所有套件;
- -b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;
- -c:只列出组态配置文件,本参数需配合"-l"参数使用;
- -d:只列出文本文件,本参数需配合"-l"参数使用;
- -e<套件档>或--erase<套件档>:删除指定的套件;
- -f<文件>+:查询拥有指定文件的套件;
- -h或--hash:套件安装时列出标记;
- -i:显示套件的相关信息;
- -i<套件档>或--install<套件档>:安装指定的套件档;
- -l:显示套件的文件列表;
- -p<套件档>+:查询指定的RPM套件档;
- -q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
- -R:显示套件的关联性信息;
- -s:显示文件状态,本参数需配合"-l"参数使用;
- -U<套件档>或--upgrade<套件档>:升级指定的套件档;
- -v:显示指令执行过程;
- -vv:详细显示指令执行过程,便于排错。
rpm常用的安装命令:
rpm -ivh xxx.rpm(rpm包) # 直接安装,如果要安装的软件已经存在,则不执行安装
rpm --force -ivh xxx.rpm # 忽略报错,强制安装
rpm -U xxx.rpm # 覆盖式安装,如果要安装的软件存在,则覆盖(也叫升级)- rpm的卸载命令:
rpm -qa # 列出所有安装过的软件
rmp -ql xxx # 查询是否安装了xxx软件
rmp -e xxx # 卸载xxx软件- rpm的显著缺点:
- rpm管理软件包的命令,很难用,需要手动解决依赖关系
- 例如:
- rpm -ivh mysql-5-3-4.rpm 提示我少了什么。。。
- 我去把少的东西安装好之后。。。。又告诉我少了什么。。。。
- 4. yum命令
- yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,可以自动处理依赖性关系,
- 并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装,如同python中的 pip 工具。
- 5. yum源的解释
- yum就是为了解决依赖关系而存在的。yum源就相当是一个目录项,
- 当我们使用yum机制安装软件时,若需要安装依赖软件,
- 则yum机制就会根据在yum源中定义好的路径查找依赖软件,并将依赖软件安装好。
- 也就是说,yum会从指定的地方(相关网站的rpm包地址或本地的rpm路径)自动下载RPM包并且安装,能够很好的解决依赖关系问题。
- 6. 为什么要重新配置yum源
- 因为yum默认的仓库软件包不多,而且默认配置的是centos的国外仓库地址,
- 我们把它修改为阿里云的yum仓库,可以加速下载。
- 阿里云的yum:http://mirrors.aliyun.com,找到你对应的系统,点击帮助。
- 注意:!!!只有以 .repo的文件结尾,才会识别为是一个yum仓库
- 7. 步骤
- 0. 进入yum源目录
- cd /etc/yum.repos.d/
- 1.备份旧的yum源
- mkdir allbak
- mv * allbak
- 2.下载新的阿里云yum源(主仓库)
- wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
- -O 指定下载后的文件,存放到某个路径,且改名
- 配置第三方软件源,epel源(备用仓库)
- wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
- 3.清空旧的yum缓存
- yum clean all
- 4.生成新的阿里云的yum缓存
- yum makecache
- 5.安装一个软件,测试一下
- yum install redis -y #查看redis是从哪个yum源来的
- -y 一路默认的yes
- 6.只有通过yum安装的软件,才可以通过systemctl 管理
- systemctl start/stop/restart/status redis
- 8. yum参数
- -h:显示帮助信息;
- -y:对所有的提问都回答“yes”;
- -c:指定配置文件;
- -q:安静模式;
- -v:详细模式;
- -d:设置调试等级(0-10);
- -e:设置错误等级(0-10);
- -R:设置yum处理一个命令的最大等待时间;
- -C:完全从缓存中运行,而不去下载或者更新任何头文件。
- 9. yum常用命令
- yum repolist all 列出所有仓库
- yum list all 列出仓库所有软件包
- yum info 软件包名 查看软件包信息
- yum install 软件包名 安装软件包
- yum reinstall 软件包名 重新安装软件包
- yum update 软件包名 升级软件包
- yum remove 软件包名 移除软件包
- yum clean all 清楚所有仓库缓存
- yum check-update 检查可以更新的软件包
- yum grouplist 查看系统中已安装的软件包
- yum groupinstall 软件包组 安装软件包组
- yum两种卸载方式:
1,只卸载软件包
yum remove xxx # 只卸载这个软件包本身- 2,卸载软件包和它的依赖
yum history list xxx # 查询安装的xxx信息(可以看到一个ID选项)
yum history undo xxx_ID # 根据上面查询到的ID完全卸载xxx包,即卸载这个软件包和它的依赖包
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- 11. 系统服务管理命令
- 只有通过yum安装的软件,才可以通过systemctl 管理
- systemctl start/stop/restart/status redis
- systemctl stop/start network
- systemctl enable redis # 开启加载redis
- systemctl disable redis # 禁止redis开机自启
15、如何开启服务器的22端口(ssh)
- 1.ifconfig # 查看ip网卡信息,记住eth0,eth1对应哪个ip地址
- root@aliyunzbj /tmp o ifconfig
- eth0: flags=2256<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
- inet 192.168.10.53 netmask 255.255.255.0 broadcast 192.168.10.255
- ...
- eth1: flags=2257<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
- inet 192.168.26.66 netmask 255.255.255.0 broadcast 192.168.26.255
- ...
- lo: flags=82<UP,LOOPBACK,RUNNING> mtu 65536
- inet 127.0.0.1 netmask 255.255.255.0
- ...
- 2.查看当前的iptables防火墙配置
- root@aliyunzbj /tmp o iptables-save
- ...
- -A INPUT -i lo -j ACCEPT
- -A INPUT -i eth0 -j MANAGE-INPUT # MANAGE-INPUT代表eth0网卡的防火墙策略
- -A INPUT -i eth1 -j USER-INPUT # USER-INPUT代表eth1网卡的防火墙策略
- ...
- # 这里可以看到MANAGE-INPUT即eth0网卡开启了22端口,但是下面的策略并没有看到USER-INPUT(eth1)开启22端口
- -A MANAGE-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
- ...
- 3.给网卡eth1添加22端口
- # 可以直接复制上面的策略,把MANAGE-INPUT改成USER-INPUT即可
- root@aliyunzbj /tmp o iptables -A USER-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
- 4.再次查看策略
- root@aliyunzbj /tmp o iptables-save
- ...
- -A INPUT -i lo -j ACCEPT
- -A INPUT -i eth0 -j MANAGE-INPUT # MANAGE-INPUT代表eth0网卡的防火墙策略
- -A INPUT -i eth1 -j USER-INPUT # USER-INPUT代表eth1网卡的防火墙策略
- ...
- -A MANAGE-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
- -A USER-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
- ...
linux文件目录权限和系统基础优化命令(yum源配置)的更多相关文章
- Linux 系统基础优化和常用命令
目录 Linux 系统基础优化和常用命令 软连接 tar解压命令 gzip命令 netstart命令 ps命令 kill命令 killall命令 SELinux功能 iptables防火墙 Linux ...
- Linux系统基础优化及常用命令
Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ifconfig 查询.设置网卡和 ...
- 8,Linux系统基础优化及常用命令
Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ifconfig 查询.设置网卡和 ...
- 运维 07 Linux系统基础优化及常用命令
Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令 ...
- Linux实战教学笔记06:Linux系统基础优化
第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...
- Linux系统基础优化
一.关闭防火墙iptables: (1)关闭 /etc/init.d/iptables stop (2)检查 ...
- Linu之linux系统基础优化和基本命令
Linux系统基础优化和基本命令 网络参数设定命令 ifconfig: 查询,设置网卡和ip等参数 ifup,ifdown: 脚本命令,更简单的方式 ip: 符合指令,直接修改上述功能 编辑网卡配置文 ...
- linux系统基础优化及高级操作命令
Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令. ifconfig 查询.设置网卡和 ...
- 你一定要知道的关于Linux文件目录操作的12个常用命令
写在前面: 1,<你一定要知道的关于Linux文件目录操作的12个常用命令>是楼主收集的关于Linux文件目录操作最常用的命令,包括文件或目录的新建.拷贝.移动.删除.查看等,是开发人员操 ...
随机推荐
- arcgis api 3.x for js 共享干货系列之二自定义 Navigation 控件样式风格(附源码下载)
0.内容概览 自定义 Navigation 控件样式风格 源码下载 1.内容讲解 arcgis api 3.x for js 默认的Navigation控件样式风格如下图:这样的风格不能说不好,各有各 ...
- asp.net/wingtip/UI和导航
ASP.NET Web窗体可以让web应用创建动态内容.静态网页的知识和HTML.CSS一模一样,区别在于ASP.NET网页包括了ASP.NET可以识别并处理的服务器端的内容.对于静态页面(.html ...
- 浅谈OA系统与Portal门户的区别
随着社会信息化的发展与进步,OA办公自动化软件打破了传统复杂的办公方式,使各个行业实现了高效的无纸化办公.由此一来OA快速成长为继财务软件.ERP软件之后的第三大管理软件.随着企业信息化系统的不断增多 ...
- Flask框架搭建REST-API服务
一.目的 为了能够将测试工具部署成RESTful-API服务,这样就能通过接口的方式提供统一测试工具服务,使用人员就不用构建application而产生的各种环境问题.使用问题. 适合人群:Pytho ...
- elasticsearch常用命令
elasticsearch的rest访问格式: curl -X<REST Verb> <Node>:<Port>/<Index>/<Type> ...
- JavaScript中闭包的写法和作用详解
1.什么是闭包 闭包是有权访问另一个函数作用域的变量的函数. 简单的说,Javascript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内.而且,这些内部函数可以访问它们所在的外 ...
- VMware虚拟机系统无法使用桥接联网
1.环境 VMware 14.1.1 虚拟系统:Windows Server 2008 32位 2.解决办法 打开虚拟网络编辑器 有红框中的提示出现时,就点击更改设置 点击桥接模式,在VMnet信息中 ...
- LeetCode算法题-N-ary Tree Preorder Traversal(Java实现)
这是悦乐书的第268次更新,第282篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第135题(顺位题号是589).给定一个n-ary树,返回其节点值的前序遍历.例如,给定 ...
- docker其他参考资料
https://yeasy.gitbooks.io/docker_practice/image/build.html https://blog.csdn.net/weixin_42596342/art ...
- 设计模式之Template Method模式
作用:将具体的处理交给子类 什么是Template Method模式? Template Method模式是指带有模板功能的模式,组成模板的方法被定义在父类中,且这些方法为抽象方法.子类去实现父类中的 ...