RUN__IT # 定时任务操作

本文详细介绍CronTab的安装与使用,包括在不同操作系统上的安装方法,如何编辑与查看定时任务,以及如何利用CronTab进行定时爬虫操作。通过实例展示了任务格式的设置,如指定时间执行命令或周期性执行任务。


# 1.crontab安装 服务器自带 

  mac brew install cronolog
  unbutu apt-get install cron 
  winows  .exe下载




# 2.编辑任务 crontab -e
    任务格式
    分 时 日 月 星期 命令
    m  h  d m  week command
    30 *  * *  *    ls  每月87点半执行ls命令 

    * */5 * *   *  ls  每隔3分钟执行 ls命令

    注意点:
        星期0;指的是星期天
        * 代表每
        */n 代表隔

# 3.查看任务 crontab -l


# 定时爬虫操作
终端命令 进入项目

1. 在爬虫项目中 创建 .sh文件
2..sh文件中 写执行命令
    cd `dirname $0` || exit 1
    python3 ./main.py >> run.log 2>&1
3. 添加可执行权限 sudo chmod +x run.sh
4. crontab -e
5.  */5 * * * * /home/ubuntu/..../myspider.sh >> /home/ubuntu/.../run2.log 2>&1


scrapy :

spiders:
 
# 一次性启动 多个爬虫]
from scrapy.cmdline import execute

for spider_name in ['so', 'baidu']:
    execute(['scrapy', 'crawl', spider_name])
"""


# 启动多个scrapy爬虫的方法二:在一个进程中开启多个爬虫
"""
# from scrapy.crawler import CrawlerProcess
# from scrapy.utils.project import get_project_settings
#
# process = CrawlerProcess(get_project_settings()) # 获取项目配置变量
#
# process.crawl('so') # 预先添加一个异步协程循环事件 参数是爬虫名字
# process.crawl('baidu') # 同上
#
# process.start() # 开始执行



解释一下这个代码 /*任务列表 */ const struct task_info task_info_table[] = { #if CONFIG_APP_FINDMY {"app_core", 1, 0, 640 * 2, 128 }, #else {"app_core", 1, 0, 640, 128 }, #endif {"sys_event", 7, 0, 256, 0 }, {"btctrler", 4, 0, 512, 256 }, {"btencry", 1, 0, 512, 128 }, {"btstack", 3, 0, 768, 256 }, {"systimer", 7, 0, 128, 0 }, {"update", 1, 0, 512, 0 }, {"dw_update", 2, 0, 256, 128 }, #if (RCSP_BTMATE_EN) {"rcsp_task", 2, 0, 640, 0}, #endif #if(USER_UART_UPDATE_ENABLE) {"uart_update", 1, 0, 256, 128 }, #endif #if (XM_MMA_EN) {"xm_mma", 2, 0, 640, 256 }, #endif {"usb_msd", 1, 0, 512, 128 }, #if TCFG_AUDIO_ENABLE {"audio_dec", 3, 0, 768, 128 }, {"audio_enc", 4, 0, 512, 128 }, #endif/*TCFG_AUDIO_ENABLE*/ #if TCFG_KWS_VOICE_RECOGNITION_ENABLE {"kws", 2, 0, 256, 64 }, #endif /* #if TCFG_KWS_VOICE_RECOGNITION_ENABLE */ #if (TUYA_DEMO_EN) {"user_deal", 2, 0, 512, 512 },//定义线程 tuya任务调度 #endif #if (CONFIG_APP_HILINK) {"hilink_task", 2, 0, 1024, 0},//定义线程 hilink任务调度 #endif {0, 0}, }; APP_VAR app_var; void app_var_init(void) { app_var.play_poweron_tone = 1; app_var.auto_off_time = TCFG_AUTO_SHUT_DOWN_TIME; app_var.warning_tone_v = 340; app_var.poweroff_tone_v = 330; } __attribute__((weak)) u8 get_charge_online_flag(void) { return 0; } void clr_wdt(void); void check_power_on_key(void) { #if TCFG_POWER_ON_NEED_KEY u32 delay_10ms_cnt = 0; while (1) { clr_wdt(); os_time_dly(1); extern u8 get_power_on_status(void); if (get_power_on_status()) { log_info("+"); delay_10ms_cnt++; if (delay_10ms_cnt > 70) { /* extern void set_key_poweron_flag(u8 flag); */ /* set_key_poweron_flag(1); */ return; } } else { log_info("-"); delay_10ms_cnt = 0; log_info("enter softpoweroff\n"); power_set_soft_poweroff(); } } #endif } void app_main() { struct intent it; if (!UPDATE_SUPPORT_DEV_IS_NULL()) { int update = 0; update = update_result_deal(); } printf(">>>>>>>>>>>>>>>>>app_main...\n"); printf(">>> v220,2022-11-23 >>>\n"); if (get_charge_online_flag()) { #if(TCFG_SYS_LVD_EN == 1) vbat_check_init(); #endif } else { check_power_on_voltage(); } #if TCFG_POWER_ON_NEED_KEY check_power_on_key(); #endif #if TCFG_AUDIO_ENABLE extern int audio_dec_init(); extern int audio_enc_init(); audio_dec_init(); audio_enc_init(); #endif/*TCFG_AUDIO_ENABLE*/ #if TCFG_KWS_VOICE_RECOGNITION_ENABLE jl_kws_main_user_demo(); #endif /* #if TCFG_KWS_VOICE_RECOGNITION_ENABLE */ init_intent(&it); #if CONFIG_APP_SPP_LE it.name = "spp_le"; it.action = ACTION_SPPLE_MAIN; #elif CONFIG_APP_AT_COM || CONFIG_APP_AT_CHAR_COM it.name = "at_com"; it.action = ACTION_AT_COM; #elif CONFIG_APP_DONGLE it.name = "dongle"; it.action = ACTION_DONGLE_MAIN; #elif CONFIG_APP_MULTI it.name = "multi_conn"; it.action = ACTION_MULTI_MAIN; #elif CONFIG_APP_NONCONN_24G it.name = "nonconn_24g"; it.action = ACTION_NOCONN_24G_MAIN; #elif CONFIG_APP_HILINK it.name = "hilink"; it.action = ACTION_HILINK_MAIN; #elif CONFIG_APP_LL_SYNC it.name = "ll_sync"; it.action = ACTION_LL_SYNC; #elif CONFIG_APP_TUYA it.name = "tuya"; it.action = ACTION_TUYA; #elif CONFIG_APP_CENTRAL it.name = "central"; it.action = ACTION_CENTRAL_MAIN; #elif CONFIG_APP_DONGLE it.name = "dongle"; it.action = ACTION_DONGLE_MAIN; #elif CONFIG_APP_BEACON it.name = "beacon"; it.action = ACTION_BEACON_MAIN; #elif CONFIG_APP_IDLE it.name = "idle"; it.action = ACTION_IDLE_MAIN; #elif CONFIG_APP_CONN_24G it.name = "conn_24g"; it.action = ACTION_CONN_24G_MAIN; #elif CONFIG_APP_FINDMY it.name = "findmy"; it.action = ACTION_FINDMY; #else while (1) { printf("no app!!!"); } #endif log_info("run app>>> %s", it.name); log_info("%s,%s", __DATE__, __TIME__); start_app(&it); #if TCFG_CHARGE_ENABLE set_charge_event_flag(1); #endif } /* * app模式切换 */ void app_switch(const char *name, int action) { struct intent it; struct application *app; log_info("app_exit\n"); init_intent(&it); app = get_current_app(); if (app) { /* * 退出当前app, 会执行state_machine()函数中APP_STA_STOP 和 APP_STA_DESTORY */ it.name = app->name; it.action = ACTION_BACK; start_app(&it); } /* * 切换到app (name)并执行action分支 */ it.name = name; it.action = action; start_app(&it); } int eSystemConfirmStopStatus(void) { /* 系统进入在未来时间里,无任务超时唤醒,可根据用户选择系统停止,或者系统定时唤醒(100ms) */ //1:Endless Sleep //0:100 ms wakeup /* log_info("100ms wakeup"); */ return 1; } __attribute__((used)) int *__errno() { static int err; return &err; }
最新发布
11-19
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值