linux 新手提问,我有一段程序,test.py,想让linux每隔6小时执行一次,如何实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 新手提问,我有一段程序,test.py,想让linux每隔6小时执行一次,如何实现相关的知识,希望对你有一定的参考价值。
我也来补充下,除了楼上提出的crontab外,还可以使用python自带的定时任务库sched
使用crontab不用更改代码,到点执行
但是如果是sched库,你得再添加代码
import timeimport sched
schedule = sched.scheduler(time.time, time.sleep)
def recycle_eval(delay=6*60*60):#默认定时6小时执行
schedule.enter(delay, 0, recycle_eval, (delay,))
#此处添加你要执行的代码
if __name__ == '__main__':
schedule.enter(2, 0, recycle_eval, (,))
schedule.run()
常驻后台执行的话用nohup命令执行这个脚本
nohup python /path/to/your/script.py &
参考技术A 如果是linux服务器 使用crontab 命令Linux 驱动设备驱动程序再理解
学习设备驱动编程也有一段时间了,也写过了几个驱动程序,因此有对设备驱动程序有了一些新的理解和认识,总结一下。学习设备驱动编程也有一段时间了,也写过了几个驱动程序。因此有对设备驱动程序有了一些新的理解和认识,总结一下。
★什么是驱动程序
刚開始学习设备驱动程序的时候,产生了很多的问题。什么是驱动程序?驱动程序是干嘛的?它是怎样工作的?它又是怎样跟操作系统联系起来的?一系列的问题,如今有些地方还是不一定清楚,可是相比起刚開始的那个阶段,感觉自己还是清楚了非常多。
设备驱动程序说白了(实质)就是为应用程序提供一组操作硬件设备的接口。
驱动程序是能够直接操作硬件上的资源,比如GPIO的各个寄存器,从而控制GPIO的方向(输出或是输入)、引脚的电平高低、中断等等。
驱动程序所做的事情大部分与直接在51单片机或是AVR单片机写的程序的功能相似,与它们不同的是驱动程序向上是为操作系统提供统一的接口的。
★file_operations结构体
驱动设备有非常多种,那么驱动它们的程序也会各有不同,那么驱动程序如何向上提供统一的接口呢?最关键的就是这个结构体,它定义在include/linux/fs.h文件里
struct file_operations { struct module *owner; loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); ssize_t (*aio_read) (struct kiocb *, const struct iovec *, unsigned long, loff_t); ssize_t (*aio_write) (struct kiocb *, const struct iovec *, unsigned long, loff_t); int (*readdir) (struct file *, void *, filldir_t); unsigned int (*poll) (struct file *, struct poll_table_struct *); int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long); long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struct file *, unsigned int, unsigned long); int (*mmap) (struct file *, struct vm_area_struct *); int (*open) (struct inode *, struct file *); int (*flush) (struct file *, fl_owner_t id); int (*release) (struct inode *, struct file *); int (*fsync) (struct file *, struct dentry *, int datasync); int (*aio_fsync) (struct kiocb *, int datasync); int (*fasync) (int, struct file *, int); int (*lock) (struct file *, int, struct file_lock *); ssize_t (*sendfile) (struct file *, loff_t *, size_t, read_actor_t, void *); ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); int (*check_flags)(int); int (*dir_notify)(struct file *filp, unsigned long arg); int (*flock) (struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); };通过这个结构体将驱动程序中操作硬件资源的函数链接起来。那么当操作系统知道了这个结构体之后,也就是知道了这个驱动程序。那么操作系统怎样知道这个结构体呢?
事实上。Linux下设备大概能够分为两种:字符设备、块设备。内核中用2个全局变量存放这两类驱动程序:
字符设备重要的结构体:
static struct char_device_struct { struct char_device_struct *next; unsigned int major; unsigned int baseminor; int minorct; char name[64]; struct file_operations *fops; struct cdev *cdev; /* will die */ } *chrdevs[CHRDEV_MAJOR_HASH_SIZE];当驱动程序调用register_chrdev(unsigned int major, const char * name, struct file_operations *fops)注冊函数就是将file_operations结构体存放到数组chrdevs[CHRDEV_MAJOR_HASH_SIZE]数组中,数组下标就是驱动主设备号。这样驱动程序就能和内核有了关联。
★设备文件
设备节点有什么用呢?我们知道在Liunx下,设备都是以文件的形式存在的。驱动程序执行在内核中,应用程序訪问驱动程序是通过系统利用系统函数訪问设备文件。
因此文件系统中一定要有一个设备文件与你的设备驱动程序相相应,这样应用程序才干訪问你的设备驱动程序。
设备文件一般放在/dev文件夹以下。你能够通过ls 命令查看。如何创建设备文件节点呢?
能够使用mknod命令,比如我要创建一个主设备号为103。次设备号为0的字符设备文件。则能够输入:mknod /dev/XXX c 103 0 当中/dev/XXX中的XXX表示设备文件的名称
以上是关于linux 新手提问,我有一段程序,test.py,想让linux每隔6小时执行一次,如何实现的主要内容,如果未能解决你的问题,请参考以下文章
我有一段matlab程序,意思就是信号同步,希望能转到fpga上,用verilog编写