linux目录结构及定时任务
1. Linux的根目录(最顶层的目录)
windows系统有根目录:c盘的根目录就是c:\
d盘的根目录就是d:\
每个盘(分区)都有自己的根目录 Linux系统,
也支持多个分区
Linux的分区和目录是没有关系! Linux的目录结构:
只有1个根 /
根目录下有:
/root 是管理员的家目录
/home 普通用户的家目录
/home/zhang_fei 就是zhang_fei的家目录
/etc 保存配置文件
/usr 用来保存用户安装的程序
UNIX的发展历史:
最找的UNIX只有/目录
再后来UNIX的系统越来越大,一个磁盘装不下去了。
就使用第2块磁盘,就使用/usr来挂载第2个磁盘
所以,/usr目录下有很多子目录和根目录下的相同。
/dev 用来存放设备文件
/var 用来存放内容经常变化的文件
比如日志文件, /var/log/messages
/tmp 用来存放临时文件
/bin 用来存放系统的二进制命令的
/mnt 用来挂载可移动的存储设备 目录层次标准FHS 误解:/usr目录"放在/目录内"
不是容器的关系 Linux的目录结构,是一个与分区无关的”目录结构” 2. Linux系统的目录和分区的关系
目录, 是固定的,逻辑意义上的,和分区没有直接的关系 1块磁盘(硬盘),可以划分为多个分区
分区是物理意义的,是实际存在的。
安装系统时,必须把某个分区挂载到根目录
分区可以挂载在任意一个目录上,这个目录就称为挂载点。 3. 相对路径和绝对路径 绝对路径:从/(根目录)开始的路径
相对路径:相对与“当前目录”
注意:当前目录是可变的!
当前目录用 . 表示 从当前目录开始的,就是相对路径
./data/test/log
data/test/log
以上两种方式等效。 ../test/data
..表示当前目录的上一级目录 4. 常用的配置文件
/etc/sysconfig/network-sripts/ifcfg-eth0
网卡eth0的配置文件 /etc/resolv.conf
指定DNS服务器的IP地址 /etc/hosts
设置域名(主机名)和ip的对应关系。 /etc/fstab
使用mount -a挂载所有文件系统时的配置文件 /etc/rc.local
开机自动启动的程序
可以把需要开机自动启动的命令添加到该文件。 /etc/inittab
主机启动以后,init进程(Linux系统的第一个进程)把系统设置为哪种运行级别
运行级别(0-6)
0: 关机
1. 单用户模式
2. 多用户模式,但是NFS无效
3. 多用户模式,具有网络功能的
4. 未使用
5. X11(多用户图形模式)
6:重启 /etc/profile
定义系统的全局的环境变量 /etc/group
存放用户组的信息 /etc/passwd
存放用户名的相关信息 /etc/shadow
存放用户密码 /etc/syslog.conf
CentOS5.x中,日志的配置文件 /etc/rsyslog.conf
CentOS6.x中,日志的配置文件 5. 定时任务
补充:
程序和进程
程序:就是一个软件。
进程:就是程序的一次执行过程。 进程ID: 每个进程都有自己唯一的标识。 查看进程: ps -ef 进程的存在方式:前台, 后台。
即进程可以在前台运行,也可以在后台运行。
后台进程,一般都一直运行,直到关机,又称为“守护进程” 定时任务, 就是一个守护进程。 2. Linux的定时任务
定时任务(调度任务) Linux的定时任务,通过crond服务实现。 2.1 crond是什么?
crond, 就是一种守护进程,
可用来定期地执行命令或者指定的程序。 crond服务,默认已经安装。 2.2 crond的功能
可以实现各种定时任务,
可以精确到分钟。 如果需要每秒中执行1个定时任务,
直接用crond实现不了。
可以用脚本文件实现:
例如:
while true; do
echo "hello world"
sleep 1
done 2.3 为什么要使用定时任务
服务器, 7*24小时都开机提供服务的。
有一些重要数据,每天都需要备份一次。
就需要使用定时服务。 Linux定时任务的分类
1)系统自身的定时任务
2)用户自定义的定时任务
这两类定时任务,都需要通过crond服务来实习。 Linux定时任务的类型:
1)at 只执行1次。
2)anacron
用来检测听机期间,没有执行的任务。
然后再开机后,把这些任务全部执行。
最多只执行1次。
3)crond 怎样使用用户自定义的定时任务:
crontab # crontab -l
查看当前用户的定时任务 # crontab -e
编辑当前用户的定时任务
编辑完毕后保存时,会自动检查格式,
如果格式不合法,就不保存。 如果格式合法,就保存到/var/spool/cron/root
如果是用户zhangfei,那么就保存到
/var/spool/cron/zhangfei 要点:
不要直接编辑用户的定时任务文件:
/var/spool/cron/root
因为,直接用vim编辑它时,不会自动检查语法。
使用crontab -e 就能自动检查语法。 用户定时任务的格式
分 时 日 月 周 命令或者执行脚本
* * * * * echo "hello world" >> /tmp/mytest.log 第1列为 *, 就表示每分钟
00, 就表示分钟时刻为00
*/3, 就表示每3分钟
30,40 就表示30分钟和40分钟
30-40 就表示30,31,32,.... 40 共11次
第2列为 *, 就表示每小时
第3列为 *, 就表示每天
第4列为 *, 就表示每月
第5列为 *, 就表示每周
0和7都表示周日 实例:
30 3,12 * * * /bin/sh /tmp/test.sh
每天的凌晨3:30和中午12:30,执行/tmp/test.sh 30 */6 * * * /bin/sh /tmp/test.sh 30 8-12/2 * * * /bin/sh /tmp/test.sh 30 21 * * * /bin/sh /tmp/test.sh 45 4 1,10,22 * * /bin/sh /tmp/test.sh 10 1 * * 6,0 /bin/sh /tmp/test.sh 00 */1 * * * /bin/sh /tmp/test.sh
每小时的整点时刻执行1次 * 23,00-07/1 * * * /bin/sh /tmp/test.sh
每天晚上11点以及凌晨0点到7点,每分钟执行1次。 00 11 * 4 1-3 /bin/sh /tmp/test.sh
每年的4月分的周1到周3的上午11点整,执行1次 00 11 5 4 1 /bin/sh /tmp/test.sh
错误:周和日不要同时使用。 定时任务的编写要点:
1. 对于一般的定时任务,可以先把这个任务的时间调整为每分钟1次,以便于测试。
测试正确后,再修改时间。 对于有影响的定时任务,就应该在自己的测试环境下测试。
测试没有问题后,在放到生产环境。 2.定时任务的最后1列,最好先在终端中执行,确定没有问题后,再复制到定时任务中。 3. 定时任务中的路径,最好都用绝对路径。 4. 每个定时任务,都应该加注释(用#)
5. 定时任务如果是执行脚本文件,那么就最好使用/bin/sh 来执行,
而不要直接执行脚本文件。
即: /bin/sh 脚本文件名
可以避免脚本文件没有可执行属性,而导致错误
6. 超过两行的命令,就最好用1个脚本文件来实现。
7. 当需要为指定用户定义定时任务时,
最后先切换到该指定用户,然后再定义定时任务。 8. 定时任务的后面, 最好加上
>/dev/null 2>&1 如果在定时任务后面不加以上部分,就可能很快导致“磁盘空间满“
原因:定时任务每次被执行后,就会自动的给用户发1封邮件,
而如果没有开启邮件服务,就会把邮件作为1个文件发送到
/var/spool/clientmqueue/,就会导致该目录下文件数据巨增
从而使inode号耗尽!而每创建1个文件,就需要1个inode /dev/null 表示linux的垃圾箱
>/dev/null 就把前面的输出(1)重定向到垃圾箱
2 >& 1表示把标准错误输出(2)重定向到标准输出(1)
就等效与,把标准输出和标准错误输出,都重定向到回收站 9. 在定时任务,不要随意的打印输出信息。
如果确实需要输出信息,那么应该把输出信息重定向指定的文件。
打印信息将被用邮件的形式发给指定的用户 例如:
tar czvf /tmp/etc.tar.gz /etc
改为
tar czf /tmp/etc.tar.gz /etc
或者改为:
tar czvf /tmp/etc.tar.gz /etc >& /tmp/tar.log 补充:>& /tmp/tar.log
表示把前面的标准输出和标准错误输出都重定向到/tmp/tar.log 10. 定义任务的脚本文件,最好统一放到某个目录,不要乱放。
比如可以放到 /server/scripts/ 11. 时间变量的使用
echo `date +%Y年%m月%d日%H:%M:%S`
%在定时任务中,表示新的一行,new line 所以时间变量中的%应该进行转义
即在%前加 \
echo `date +\%Y年\%m月\%d日\%H:\%M:\%S` 系统的定时任务
用户的定时任务,用来实现用户自定义的定时任务。
系统的定时任务,一般用于系统级的维护工作。
比如:写缓存数据到硬盘。
清理日志。 系统的定时任务的实现:
编辑 /etc/crontab 调试定时任务的方法
1. 增加频率
把任务的执行频率调快一点,比如每分钟1次。
如果该任务有影响,就一定要放到测试环境下测试。 2. 修改系统的时间
3. 在定时任务中输出调试信息
输出信息会自动发邮件给指定用户
或者把调试信息重定向指定文件 定时任务的常见错误:
1. 环境变量
在定时任务执行,系统中的大部分环境变量都不能使用 解决方案:
1)重新定义这些环境变量
UID=0 2)导入环境变量的配置文件
-------------------------
/bin/sh /etc/profile ........
--------------------------
补充:/etc/profile就是系统的环境变量的定义脚本 2. * * * * * echo "hello" >> /tmp/a.log >/dev/null 2>&1
>>/tmp/a.log 和后面的 >/dev/null 2>&1 不能同时使用
linux目录结构及定时任务的更多相关文章
- day 2 Linux目录结构
Linux系统的目录结构的基本介绍: 1)在逻辑上的所有目录(包括目录下的子目录)都在最高级别的目录“/”下. 根(/)目录是Linux系统中所有目录的起始点(顶点),根下面的目录及子目录是一个有层次 ...
- 每天一个linux命令(23):Linux 目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- 【Linux】Linux 目录结构
博客已转移,请借一步说话 .http://www.weixuehao.com/archives/492 初学Linux,首先需要弄清Linux 标准目录结构 / root --- 启动Linux时使用 ...
- CentOS6.5菜鸟之旅:纯转载Linux目录结构
来自:http://www.iteye.com/topic/1125162 使用linux也有一年多时间了 最近也是一直在维护网站系统主机 下面是linux目录结构说明 本人使用的是centos系 ...
- 每天一个linux命令(19):Linux 目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- Linux目录结构及常用命令(转载)
一.Linux目录结构 你想知道为什么某些程序位于/bin下,或者/sbin,或者/usr/bin,或/usr/sbin目录下吗?例如,less命令位于/usr/bin目录下.为什么没在/bin中,或 ...
- Linux目录结构【转】
使用linux也有一年多时间了 最近也是一直在维护网站系统主机 下面是linux目录结构说明 本人使用的是centos系统,很久没有发表博文了 近期会整理自己所用所了解知识点,发表linux相关的 ...
- 【Linux笔记】Linux目录结构
[Linux笔记]Linux目录结构 本文内容整理自网络,以作参考. /:根目录,位于linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib ...
- Linux目录结构及文件基础操作
一.Linux目录结构 windows系统中主要以存储介质为主(磁盘). UNIX和Linux系统中主要是以目录为主(以树形目录结构的形式构建整个系统). 1. FHS(Filesystem Hier ...
随机推荐
- javaWeb代码整理02-jdbcTemplete数据库连接工具
jar包: maven坐标: /**属于spring框架的包*/<dependency> <groupId>org.springframework</groupId> ...
- 2022.02.21 SA
2022.02.21 SA 当我年少轻狂时,我曾拥有自由,但我并不明白它的意义.我曾拥有时间,但我没有意识到它的珍贵.我曾拥有爱,但我从未用心去体会.数十年的时间考验后,我终于理解了三者的真谛. 我已 ...
- 0基础学习docker
进入docker容器命令 docker exec -it 容器id bash 获取镜像 # 1.获取镜像,镜像托管仓库 docker search centos # 查询centos镜像 docker ...
- 3.3 常用Linux命令
1.pwd命令 pwd命令用于显示用户当前所处的工作目录 2.cd命令 cd命令用于切换当前的工作路径,英文全称为"change directory",语法格式为"cd ...
- Bugku练习题---Web---计算器
Bugku练习题---Web---计算器 flag:flag{8b4b2f83db2992d17d770be1db965147} 解题步骤: 1.观察题目,打开场景 2.场景打开后发现是一个验证码界面 ...
- 【前端干货】别再羡慕别人的Excel啦,教你点击按钮直接打开侧边栏!
负责技术支持的葡萄又来啦. 三日不见,我们的客户又为我们发来新的问题. 这次我们需要实现的场景是在前端表格环境中,像模板按钮那样,点击之后弹出一个侧边栏,然后通过点击不同的单元格显示不同的内容. 挤接 ...
- Halo 开源项目学习(六):事件监听机制
基本介绍 Halo 项目中,当用户或博主执行某些操作时,服务器会发布相应的事件,例如博主登录管理员后台时发布 "日志记录" 事件,用户浏览文章时发布 "访问文章" ...
- 这些 Shell 分析服务器日志命令集锦,收藏好
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 自己的小网站跑在阿里云的ECS上面,偶尔也去分析分析自己网站服务器日志,看看网站的访问量.看看 ...
- 这样理解 HTTP,面试再也不用慌了~
开源Linux 长按二维码加关注~ 上一篇:SSH只能用于远程Linux主机? 1 HTTP HTTP 协议是个无状态协议,不会保存状态. 2 Post 和 Get 的区别 先引入副作用和幂等的概念. ...
- Java中的JVM和Redis,你了解的透彻么?
招聘在前不久已经渐渐拉下帷幕了,看到最近技术群一个问题,引起了我的思考:"今年面试为什么那么难?" 想必大家都知道程序员要涨薪主要靠跳槽来完成!但是无论是考试,还是求职,这个难度, ...