diff --git a/d1/f3.sh b/d1/f3.sh index b37388f..8f489b6 100644 --- a/d1/f3.sh +++ b/d1/f3.sh @@ -1,5 +1,6 @@ $@ 'mkdir -p $HOME/p1/p1; mkdir -p $HOME/tmp' cat d1/f2.py | $@ sh -c 'cat > $HOME/p1/p1/passenger_wsgi.py' +cat d1/f4.py | $@ sh -c 'cat > $HOME/p1/p1/f4.py' cat tmp/wsgi_config.json | $@ sh -c 'cat > $HOME/p1/p1/wsgi_config.json' cat d1/wsgi/.htaccess | $@ sh -c 'cat > $HOME/public_html/.htaccess' cat d1/wsgi/busybox | $@ sh -c 'cat > $HOME/tmp/busybox' diff --git a/d1/f4.py b/d1/f4.py new file mode 100644 index 0000000..fc34f75 --- /dev/null +++ b/d1/f4.py @@ -0,0 +1,73 @@ +import subprocess +import time +import os +import datetime +import traceback +import io +import pprint + +def f1(): + LOG_SIZE = 10 * 1024 * 1024 + busybox_path = '%s/tmp/busybox' % os.environ['HOME'] + log_path = '%s/p1/p1/log-f4.txt' % os.environ['HOME'] + os.makedirs(os.path.dirname(log_path), exist_ok=True) + + def trim_log(): + if not os.path.exists(log_path): + return + + log_size = 0 + + try: + log_stats = os.stat(log_path) + log_size = log_stats.st_size + except: + return + + if log_size > LOG_SIZE: + try: + log_path2 = os.path.splitext(log_path) + os.rename( + log_path, + '%s-backup%s' % ( + log_path2[0], + log_path2[1], + ), + ) + except: + return + + def log(data=None): + with io.open(log_path, 'a') as f: + f.write( + '%s\n%s\n%s\n' % ( + datetime.datetime.now().isoformat(), + pprint.pformat(data), + traceback.format_exc(), + ) + ) + + trim_log() + + while True: + try: + t1 = subprocess.check_output( + [busybox_path, 'ps', '-e', 'cpu'] + ).decode('utf-8') + t2 = t1.splitlines() + if len(t2) > 20: + log( + dict(t2=t2) + ) + print('\n', end='') + + print('\r%s %d' % ( + datetime.datetime.now().isoformat(), + len(t2), + ), end='') + except: + log() + time.sleep(10) + +if __name__ == '__main__': + f1()