{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# pip install python-crontab" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from crontab import CronTab\n", "cron = CronTab(user=True) \n", "cron" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # at 5 a.m every week with:\n", "30 * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py progate >> /mnt/c/workspace/pydev/tweet-analyser/autoLike.log # m h dom mon dow command\n" ] } ], "source": [ "# すでに登録されているjobを見る\n", "for job in cron: \n", " print (job)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # at 5 a.m every week with:\n", "30 * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py progate >> /mnt/c/workspace/pydev/tweet-analyser/autoLike.log # m h dom mon dow command\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py udemy\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py udemy\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py udemy\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py udemy\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py udemy\n" ] } ], "source": [ "# ジョブを追加する\n", "job = cron.new(command='python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py udemy') \n", "job.minute.every(1) #1分おきに実行\n", "cron.write() \n", "# 設定したjobを見る\n", "cron = CronTab(user=True)\n", "for job in cron:\n", " print(job)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#ジョブを追加する場合\n", "\"\"\"\n", "job.minute.every(minutes) # 分ごと\n", "job.hour.every(hours) #時間ごと\n", "\"\"\"\n", "#ジョブを有効・無効にする\n", "\"\"\"\n", "job.enable() \n", "job.enable(False) \n", "job.is_enabled() #有効だったらTrueが返る\n", "\"\"\"" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "30 * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py progate >> /mnt/c/workspace/pydev/tweet-analyser/autoLike.log # m h dom mon dow command\n" ] } ], "source": [ "# ジョブを検索する progate\n", "from crontab import CronTab\n", "cron = CronTab(user=True)\n", "cron = cron.find_command(\"autoLike.py progate\")\n", "for job in cron:\n", " print(job)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py udemy\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py udemy\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py udemy\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py udemy\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py udemy\n" ] } ], "source": [ "# ジョブを検索する\n", "from crontab import CronTab\n", "cron = CronTab(user=True)\n", "cron = cron.find_command(\"autoLike.py progate\")\n", "for job in cron:\n", " print(job)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "30 * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autoLike.py progate >> /mnt/c/workspace/pydev/tweet-analyser/autoLike.log # m h dom mon dow command\n" ] } ], "source": [ "# ジョブを削除する\n", "cron = CronTab(user=True)\n", "cron = cron.find_command(\"autoLike.py progate\")\n", "for job in cron:\n", " cron.remove(job) \n", " print(job)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "#ジョブを見つけて有効・無効化する\n", "\n", "from crontab import CronTab\n", "cron = CronTab(user=True) \n", "cron = cron.find_command(\"VRChatはじめました\")\n", "for job in cron:\n", " print(job)\n", " job.enable()\n", " print(job)\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # at 5 a.m every week with:\n", "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py テックキャンプ\n", "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py Aidemy\n" ] } ], "source": [ "cron = CronTab(user=True) \n", "for job in cron:\n", " print(job)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # at 5 a.m every week with:\n", "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py テックキャンプ\n", "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py Aidemy\n" ] } ], "source": [ "from crontab import CronTab\n", "cron = CronTab(user=True) \n", "for job in cron:\n", " print(job)\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "from crontab import CronTab\n", "cron = CronTab(user=True) \n", "for job in cron:\n", " job.enable()\n", " " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # at 5 a.m every week with:\n", "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py テックキャンプ\n", "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py Aidemy\n" ] } ], "source": [ "cron = CronTab(user=True)\n", "for job in cron:\n", " print(job)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# わかったこと\n", "\n", "- job.enable()を実行したとしても、その結果がcrontabに保存されるわけではない\n", "- その証拠にもう一度cronオブジェクトからjobを見ると反映されていない\n", "\n", "```python\n", "from crontab import CronTab\n", "cron = CronTab(user=True) \n", "for job in cron:\n", " job.enable()\n", "```\n", "\n", "# 次にやること\n", "\n", "- job.enableしたコマンドを反映する方法を探す" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 試してみる\n", "\n", "- 以下のtab指定でcronオブジェクトつくって、保存するとかできないか試してみる\n", "```\n", "mem_cron = CronTab(tab=\"\"\"\n", " * * * * * command\n", "\"\"\")\n", "```\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # at 5 a.m every week with:\n", "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py テックキャンプ\n", "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py Aidemy\n" ] } ], "source": [ "from crontab import CronTab\n", "cron = CronTab(user=True)\n", "job = cron.find_command(\"Aidemy\")\n", "for job in cron:\n", " print(job)\n", " job.enable()\n", " cron.write()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # at 5 a.m every week with:\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py テックキャンプ\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py Aidemy\n" ] } ], "source": [ "cron = CronTab(user=True)\n", "for job in cron:\n", " print(job)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 試したこと\n", "\n", "- すでに存在するjob「テックキャンプ」から、find_commandでjobを探して、そのjobをenable()にした\n", "- その結果のcronをwriteを実行して保存した\n", "\n", "# 結果\n", "- すべてのjobが有効化された\n", "- ただし、選択したjob意外のものも選ばれてしまっている。\n", "\n", "# 次に試すこと\n", "- 検索したjobのみ無効化できるか試す\n" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py Aidemy\n" ] } ], "source": [ "cron = CronTab(user=True)\n", "jobs = cron.find_command(\"Aidemy\")\n", "for job in jobs:\n", " print(job)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- こうするとAidemyだけ出てくる。\n", "- このjobだけ有効化する" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py Aidemy\n" ] } ], "source": [ "cron = CronTab(user=True)\n", "jobs = cron.find_command(\"Aidemy\")\n", "for job in jobs:\n", " job.enable(False)\n", " print(job)\n", " cron.write()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- その後crontabに保存されているか確認する\n", "- これで無効化されていればok" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # at 5 a.m every week with:\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py テックキャンプ\n", "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py Aidemy\n" ] } ], "source": [ "cron = CronTab(user=True)\n", "for job in cron:\n", " print(job)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 結果\n", "\n", "- というわけで、jobの無効化に成功した。\n", "- 最終的に、ピンポイントで有効化できるか確認する" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py Aidemy\n" ] } ], "source": [ "cron = CronTab(user=True)\n", "jobs = cron.find_command(\"Aidemy\")\n", "for job in jobs:\n", " print(job)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py Aidemy\n" ] } ], "source": [ "cron = CronTab(user=True)\n", "jobs = cron.find_command(\"Aidemy\")\n", "for job in jobs:\n", " job.enable()\n", " print(job)\n", " cron.write()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# やりたいこと\n", "\n", "- キーワードの削除時に、crontabのon off関係なく、そのキーワードの単語を削除したい\n", "- 特定のキーワードを検索して削除することができるかどうか確認する" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # at 5 a.m every week with:\n", "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py テックキャンプ\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py Aidemy\n" ] } ], "source": [ "from crontab import CronTab\n", "\n", "cron = CronTab(user=True)\n", "for job in cron:\n", " print(job)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- テックキャンプのcrontabを削除してみる" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py テックキャンプ\n" ] } ], "source": [ "from crontab import CronTab\n", "\n", "cron = CronTab(user=True)\n", "jobs = cron.find_command(\"テックキャンプ\")\n", "for job in jobs:\n", " cron.remove(job)\n", " cro\n", " print(job)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ # at 5 a.m every week with:\n", "# * * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py テックキャンプ\n", "* * * * * python3 /mnt/c/workspace/pydev/tweet-analyser/autolike.py Aidemy\n" ] } ], "source": [ "from crontab import CronTab\n", "cron = CronTab(user=True)\n", "for job in cron:\n", " print(job)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 }