发现自己好像没有用过supervisor哎。所以就来用一用咯。正好想重学下Bash。
在/etc/supervisor/conf.d/文件夹下面添加一个新的配置文件叫做chshmod.conf
内容如下:
[program:chshmod] command=/data/cronpy/changemod.py /data/shcode/
然后重启supervisord 使用命令/etc/init.d/supervisor restart
chshmod FATAL command at '/data/cronpy/changemod.py' is not executable
说什么/data/cronpy/changemod.py not executeable
第一我的的首先想法 changemod.py的权限不对?是不是777的权限,如果不是,给个777的权限试下
root@ubuntu:/etc/supervisor/conf.d# ls -l /data/cronpy/changemod.py -rw-r--r-- 1 root root 1295 11月 25 03:38 /data/cronpy/changemod.py
给个777的权限,然后重启下chshmod程序
root@ubuntu:/etc/supervisor/conf.d# supervisorctl chshmod FATAL command at '/data/cronpy/changemod.py' is not executable supervisor> restart chshmod chshmod: ERROR (not running) chshmod: ERROR (abnormal termination)
却发现还是有问题啊,wtf
supervisor> status chshmod FATAL Exited too quickly (process log may have details)
要我去找process log但是为什么 supervisorctl不能查看日志呢,怨念.
root@ubuntu:/etc/supervisor/conf.d# cd /var/log/supervisor/ chshmod-stderr---supervisor-WJDFyf.log chshmod-stdout---supervisor-N0iSUW.log supervisord.log root@ubuntu:/etc/supervisor/conf.d# cd /var/log/supervisor/ root@ubuntu:/var/log/supervisor# cat chshmod-stderr---supervisor-WJDFyf.log supervisor: couldn't exec /data/cronpy/changemod.py: ENOEXEC supervisor: child process was not spawned supervisor: couldn't exec /data/cronpy/changemod.py: ENOEXEC supervisor: child process was not spawned supervisor: couldn't exec /data/cronpy/changemod.py: ENOEXEC supervisor: child process was not spawned supervisor: couldn't exec /data/cronpy/changemod.py: ENOEXEC supervisor: child process was not spawned
这是什么意思啊,有病?
搜索一下呗。
搜索的结果,说好像是我配置有问题command写得有问题
听网上的意思是说把/data/cronpy/changemod.py /data/shcode/替换成/data/cronpy/changemod.py /data/shcode/
修改之后,再重启chshmod
root@ubuntu:/etc/supervisor/conf.d# supervisorctl chshmod FATAL Exited too quickly (process log may have details) supervisor> restart chshmod chshmod: ERROR (not running) chshmod: ERROR (abnormal termination) supervisor> status chshmod BACKOFF Exited too quickly (process log may have details)
还是有错啊,要报警了啊
错误日志如下:
supervisor: couldn't exec /data/cronpy/changemod.py: ENOEXEC supervisor: child process was not spawned supervisor: couldn't exec /data/cronpy/changemod.py: ENOEXEC supervisor: child process was not spawned supervisor: couldn't exec /data/cronpy/changemod.py: ENOEXEC supervisor: child process was not spawned
又是这个错误。烦
难道和我的py文件有关
# coding:utf-8 import logging import time import sys import os import sh from watchdog.events import LoggingEventHandler, FileSystemEventHandler __author__ = 'root' from watchdog.observers import Observer def is_file_hidden(path): basename = os.path.basename(path) return basename.startswith('.') class ChmodEventHandler(FileSystemEventHandler): def on_created(self, event): super(ChmodEventHandler, self).on_created(event) created_path = event.src_path if not is_file_hidden(created_path): sh.chmod('777', created_path) logging.info("{ech1}:change {0} mod to 777".format(created_path, self.__class__.__name__)) def chmod(path): observer = Observer() logging.basicConfig(level=logging.INFO, format='%(asctime)s-%(message)s', datefmt='%Y-%m-%d %H:%M:%S') logging_handler = LoggingEventHandler() observer.schedule(logging_handler, path, recursive=True) observer.schedule(ChmodEventHandler(), path, recursive=True) observer.start() try: while 1: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join() if __name__ == "__main__": path = sys.argv[1] if len(sys.argv) > 1 else '.' chmod(path)
好像是没加执行环境的锅?
加上#!/usr/bin/python
再重启试一下:
supervisor> restart chshmod chshmod: ERROR (not running) chshmod: started supervisor> status chshmod chshmod RUNNING pid 5094, uptime 0:00:11
好了!!
good job
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218910.html原文链接:https://javaforall.net
