[MailReminder] 1 - 쉘로 on/off 기능 추가하기

MailReminder 프로젝트 개발기


목차


회고

  • 리눅스 기본 crontab을 이용해서 특정 시간에 원하는 코드가 실행되도록 만들었으며 그 코드가 실행되면 내 구글계정을 이용해 원하는 메일에 메일을 보내도록 해놓았다.


목표

  • 저번에는 도장에 가는 일정만 추가했는데 이번에는 사내 근골격 센터를 예약하는 작업을 추가해보려 한다.
  • 매주 있는게 아니기 때문에 필요할 때 알림기능을 on/off를 하고 싶다.
  • 도장 알림 같은 경우에는 매달 특정한 시간에 알림이 오도록하고 근골격 센터 예약은 알림을 등록하고 1달 후에 알림이 오게 하고 싶다.(결국, 이 부분을 crontab을 이용했기 때문에 하지 못했다…)


환경 및 구조

on/off의 기능

  • on/off의 기능은 shell script를 실행해서 crontab의 내용을 수정하도록 하려고 한다.
  • jupyter notebook을 통해서 원격으로 접속해서 쉘을 실행할 수 있기 때문에 쉘 스크립트의 실행을 통해 on/off 기능을 구현하려 한다.
  • 간단하게 보면 파일이 on_smc_physiotherapy.sh라는 파일이 있고 이걸 실행하면 crontab의 내용을 변경하는 방식이라 볼 수 있다.


방법 설명

  • crontab에 근골격 센터의 일정 알림을 추가하는 방법은 아래와 같다.
  • 시작할 때 PATH를 프로젝트 폴더로 잡아주고 일정이 이미 추가되어있는 smc_on_in_text 파일의 내용을 crontab에 입력으로 넣어주었다.

on_smc_physiotherapy.sh

#/bin/bash

cd /home/twpower/MailReminder
crontab smc_on_in_text

smc_on_in_text

...
# 환경 변수들 목록 쫘르륵
...

0 10 17 * * python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
50 10 * * 3 python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt


코드 구현

  • 메일을 보내는 reminder.py는 저번과 같다.
  • off_smc_physiotherapy.sh, on_smc_physiotherapy.sh, smc_off_in_text, smc_on_in_text이 추가되었다.


메인 구현 부분

off_smc_physiotherapy.sh

#/bin/bash

cd /home/twpower/MailReminder
crontab smc_off_in_text

on_smc_physiotherapy.sh

#/bin/bash

cd /home/twpower/MailReminder
crontab smc_on_in_text

smc_off_in_text

...
# 환경 변수들 목록 쫘르륵
...

0 10 17 * * python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt

smc_on_in_text

...
# 환경 변수들 목록 쫘르륵
...

0 10 17 * * python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
50 10 * * 3 python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt


반성

  • 결국 생각해보니 crontab일정 주기로 반복하는 작업을 도와주는 기능이어서 내가 등록하고 나서 1달 후 특정 요일에 알람이 오도록 하는건 힘든 일이었다… 나중에 프레임워크를 쓰거나 다른 라이브러리를 알아보는 방향으로 가야할거 같다.
  • 그래서 결국 매달 수요일에 하는거로 일단 구현을 하였다.


다음 목표

  • 일단, 메일은 잘 오는걸 확인했는데 2가지 문제가 있었다..
  • 첫째, 메일이 너무 많이 와서 알림 메일이 와도 메일 알림을 닫아버리면(안드로이드의 경우) 알림이 왔는지 알 수가 없다. 결국, 애초에 의도한 기능을 제대로 하지 못한다는것!
  • 둘째, on/off하기가 너무 불편하다. UI가 있으면 좋겠다.
  • 첫째와 둘째를 모두 구현하기란 쉽지 않기 때문에… crontab과 별개로 특정 시점부터 얼마가 지난후에 알림이 올 수 있도록 하는 부분을 찾아봐서 추가해야겠다.


참고자료

[Linux] 쉘 스크립트에서 멀티프로세스(혹은 스레드) 기능 사용하기

> 백그라운드로 명령어를 실행해서 병렬적으로 실행되는 멀티 프로세스 환경을 만들어보자.## 환경- Linux 기반 시스템- Bash shell(/bin/bash)## 멀티프로세스? 병렬처리? 멀티스레드? 백그라운드 프로세스?- 여기서 진행할 방식...… Continue reading