学习笔记--定时任务-第二阶段-1-20181025晚记录

本文详细介绍了如何使用Crontab设置定时任务,包括定时任务的格式、常见错误及解决方案。涵盖了从基本命令行任务到复杂脚本的执行,以及如何避免不必要的输出和处理环境变量问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定时任务  ***** 五个星就是每一分钟
*/10 ****  每隔10分钟
每五分钟同步一下系统的时间
crontab -e加内容的时候别忘了#加上说明
07-08    7点到8点
题目:每天上午7点到11点 每一个小时运行CMD 命令
* 07-09 * * * CMD     #每分钟运行CMD
00 07-11 * * * CMD     #每个小时运行CMD
###表示小时的时候一定要注意分钟
00 17,19,20 * * *    17点、19点、20点执行
九句箴言:
01.书写定时任务前加注释,写清楚定时任务的作用。
02.使用脚本替代命令行执行定时任务(超过2条命令都用脚本)
题目:每分钟显示当前系统的时间追加到/tmp/time.log中。
    #1命令 date +%F        #2脚本 mkdir -p /server/scripts
    #3vim/server/scripts/date.sh    #4date+%F
    #5 sh /server/scripts/date.sh    #6 #5>>/tmp/date.log
    执行脚本一般都用sh来执行(而不是改权限)
    ###crontab中直接加命令 date +%F>>/tmp/time.log
    看/var/log/cron 实际运行的是date +。
03.定时任务中的date命令%百分号
    %在定时任务中相当于回车,想用的话需要用\转义。
04.运行脚本一定要用/bin/sh或sh
05.定时任务中-命令或脚本结果(正确及错误)定向到黑洞
    (>/dev/null 2>&1)或追加到文件中>>/tmp/oldboy.txt 2>&1
     >/dev/null 2>&1 === >/dev/null 2>/dev/null
   ###常见故障   
   【企业案例】如果定时任务规则结尾不加>/dev/null 2>&1或者追加到文件中
   >>/tmp/oldboy 2>&1,很容易导致硬盘inode空间被占满,从而系统服务不正常。
   系统会不断给你发邮件。
   邮件服务 /etc/init.d/postfix 
   #1.邮件的软件没有开启------大量小文件堆积在/var/spool/postfix/maildrop/ ---inode满了
   #2.定时任务中 命令或脚本的结果 没有定向到空或文件中
   #you have new mail in /var/spool/mail/root 
    某个目录有大量小文件
   1.ls |xargs rm 
   2.删除文件所在的目录(记录好权限和所有者)

06.避免不必要的程序及命令输出
    如tar就tar zcf就可以了,不要加v
07.打包压缩使用相对路径(切到目标目录的上一级打包目标)
08.定时任务脚本中的程序文件,尽量用绝对路径
    用户的定时任务,默认存放在当前目录的家目录
    系统的定时任务,是存放在根目录下
09.系统与命令位置有关的环境变量问题   
   定时任务能够识别的PATH只有/bin和/usr/bin
   例:#显示当前系统的时间 年-月-日——周和当前系统的ip,追加到/tmp/ip.log中。
        脚本 [root@oldboyedu-01 ~]# vim /server/scripts/ip.sh
            date +%F_%w  ifconfig eth0 |awk -F '[: ]+' 'NR==2{print $4}'
            * * * * * /bin/sh  /server/scripts/ip.sh >>/tmp/ip.log 2>&1
   ###解决方法 1.使用绝对路径 /sbin/ifconfig
               2.在脚本开通重新定义一下PATH
               export PATH=/bin/sbin:/usr/bin.......... 

转载于:https://my.oschina.net/u/4005625/blog/2252657

<think>好的,我需要帮助用户制定个三个半月的学习计划,目标是成为嵌入式软件工程师或单片机工程师。用户是物联网工程专业的毕业生,每天能学习6-8小时,希望先掌握找工作所需的基础知识,之后再深入学习。 首先,我需要确定嵌入式软件工程师和单片机开发的核心技能。根据之前的面试题整理,关键点包括C语言、数据结构与算法、操作系统(特别是RTOS)、硬件知识和通信协议。此外,项目经验和实战能力也很重要。 接下来,要分配时间。三个半月大约14周,每周6天,每天6-8小时。需要合理分配各模块的学习时间,确保覆盖所有重点。同时,要结合理论与实践,避免只学理论不做项目。 第阶段可能是打基础,重点在C语言和数据结构。用户是物联网专业,可能有定基础,但需要巩固指针、内存管理等难点。需要推荐书籍和练习题目。 第二阶段进入硬件和RTOS,比如学习STM32,GPIO配置,FreeRTOS的任务调度。这里需要实际操作,建议购买开发板进行实验。 第三阶段是通信协议和驱动开发,如I2C、SPI、UART,以及ADC、PWM等。这部分需要结合具体案例,做项目来应用所学知识。 第四阶段是项目实战和面试准备,通过完整项目整合知识,同时复习面试题,模拟面试。 需要考虑到用户每天的学习时间,所以每个阶段的时间分配要合理,比如前两周打基础,之后逐步深入。同时,每周安排时间复习和做练习,避免遗忘。 还要推荐些资源,比如书籍《C和指针》、《嵌入式C语言自我修养》,开发板如STM32F4系列,在线课程和开源项目。项目实战部分需要具体例子,比如智能家居传感器节点,以展示综合能力。 最后,要提醒用户保持文档习惯,参与社区,定期总结,这样能提升沟通能力和问题解决能力,对找工作有帮助。</think>根据你的背景和目标,我为你制定了个分阶段的**嵌入式开发学习计划(3.5个月/6天制)**,重点围绕求职必备核心技能,注重理论与实战结合: --- ### **第阶段:筑基阶段(1-2周)** **目标**:建立完整的C语言知识框架,掌握硬件开发基础工具链 ```mermaid gantt title 第阶段重点 dateFormat X axisFormat %U周 C语言核心 : 0, 2w 开发环境搭建 : 1, 1w 基础项目实操 : 1, 1w ``` #### **每日安排(建议)** - **上午(3h)**:系统学习C语言 - 重点突破:指针操作(二级指针、函数指针)、内存管理(堆栈区别、内存对齐) - 推荐教材:《C和指针》+ 牛客网刷题(每日10题) - **下午(3h)**:硬件开发基础 - 开发环境:安装Keil/MDK、STM32CubeMX、VSCode插件 - 必学工具:J-Link调试、串口调试助手、Git版本控制 - **间(2h)**:点亮LED项目 - 实践:通过STM32标准库/HAL库实现GPIO控制 - 延伸:用示波器测量GPIO波形(如无实物可用Proteus仿真) --- ### **第二阶段:硬件实操(3-6周)** **目标**:掌握MCU核心外设开发,建立硬件思维 ```mermaid pie title 时间分配比例 "GPIO与中断" : 20 "定时器/PWM" : 25 "ADC/DAC" : 15 "通信协议" : 30 "低功耗管理" : 10 ``` #### **核心学习路径** 1. **定时器开发(重点)** - 实现呼吸灯(PWM占空比调节) - 制作简易电子钟(定时中断) 2. **通信协议开发(重中之重)** - UART:实现Modbus协议解析 - SPI:驱动OLED屏幕(含DMA传输) - I2C:读写EEPROM(注意时序调试) 3. **综合项目案例** - 温湿度监测系统(DHT11传感器+LCD显示+串口上报) - 建议购买STM32F4 Discovery开发板(约¥150) --- ### **第三阶段:RTOS进阶(7-10周)** **目标**:掌握实时操作系统核心机制 ```c // FreeRTOS任务创建示例(建议手敲理解) void vTaskLED(void *pvParameters) { while(1) { HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); vTaskDelay(pdMS_TO_TICKS(500)); } } xTaskCreate(vTaskLED, "LED_Task", 128, NULL, 2, NULL); ``` #### **重点突破方向** 1. **任务管理** - 优先级反转问题(实现优先级继承协议) - 内存管理:静态分配 vs 动态内存池 2. **同步机制** - 实现生产者-消费者模型(信号量+消息队列) - 互斥锁在SPI总线仲裁中的应用 3. **实战项目** - 多任务数据采集系统(传感器采集、显示刷新、通信任务协同) - 使用SystemView分析任务调度 --- ### **第四阶段:求职冲刺(11-14周)** **目标**:构建完整知识体系,提升工程能力 ```python # 每日学习检查清单(示例) checklist = { "上午": ["通信协议手绘时序图", "刷LeetCode嵌入式专项题"], "下午": ["项目BUG调试", "技术博客撰写"], "上": ["模拟面试", "FreeRTOS源码阅读"] } ``` #### **重点任务** 1. **构建知识图谱** - 绘制思维导图(涵盖:内存管理、中断机制、RTOS调度等) 2. **开发完整项目** - 推荐项目:智能家居网关(STM32+ESP8266+QT上位机) - 实现功能:远程控制、OTA升级、异常报警 3. **面试准备** - 高频考点:指针与数组区别、volatile关键字作用、死锁产生条件 - 必备手撕代码:反转链表、快速排序、位操作算法 --- ### **关键资源推荐** 1. **硬件平台** - 主控芯片:STM32F407(性能均衡) - 拓展模块:ESP32(WiFi/BLE)、LoRa模组 2. **学习资料** - 书籍:《嵌入式C语言自我修养》《ARM Cortex-M3权威指南》 - 视频:B站韦东山FreeRTOS实战系列 3. **开源项目** - RT-Thread源码学习(任务调度模块) - LVGL图形库移植实践 --- ### **注意事项** 1. **文档习惯** - 用Markdown记录每日学习笔记(建议上传GitHub) - 项目代码必须含详细注释(面试官常要求展示) 2. **避坑指南** - 避免过度钻研Linux驱动开发(应届生岗位较少) - 不要直接复制开发板例程(务必自己重写调试) 3. **求职策略** - 优先投递中小型企业(岗位需求量大,培养体系完善) - 准备3个差异化项目(如:低功耗智能锁、工业HMI界面) --- **最后阶段建议**:在第12周开始制作简历,重点突出"掌握了XX技术,在XX项目中解决了XX问题"。每周至少完成2次模拟面试(可找学长或使用AI面试工具)。坚持这个计划,3个月后达到初级嵌入式工程师岗位要求完全可行!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值