자동화 작업
자동으로 커밋하기
두개를 켜놓고 작업하다가 이전버전의 터미널에서 :wq 를 입력할뻔 했기 때문에 자동 커밋 스크립트를 만들게 됐다.
커밋 스크립트 작성
/home/dongkim/autocommit.sh스크립트 작성
#!/bin/bash
# 변수 설정
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
MESSAGE="${1:-[$TIMESTAMP] Auto commit}"
# 작업 디렉토리로 이동
cd /home/dongkim/site
# Git 작업 수행
git pull
git add .
git commit -m "$MESSAGE"
git push
git push github
echo "작업 완료"
- 실행권한 부여
$ chmod 777 /home/dongkim/autocommit.sh
6시간마다 스크립트 실행
- cron 설치
$ sudo apt-get install cron
- cron 설정
$ crontab -e
0 */6 * * * /home/dongkim/autocommit.sh
- cron 실행
$ sudo cron
$ service cron status
타임존 설정
커밋 메시지에 포함되는 시간을 KST로 변경하고 싶을때 적용
- tzdata 설치
$ sudo apt-get install tzdata
- 원하는 타임존 설정
게시글 생성 스크립트
v0.1 (2023/12/10)
#!/bin/bash
# 이전에 편집한 파일 이름을 저장할 파일
backup_file=".hugocmd_bak"
# 스크립트에 '-1' 인자가 전달된 경우 마지막으로 편집한 파일을 열기
if [ "$1" == "-1" ]; then
if [ -f "$backup_file" ]; then
last_edited_file=$(cat "$backup_file")
if [ -f "$last_edited_file" ]; then
vi "$last_edited_file"
exit 0
else
echo "Error: The last edited file does not exist."
exit 1
fi
else
echo "No previously edited file found."
exit 1
fi
fi
while true; do
clear
echo "[ Contents Entry ]"
postdir="posts"
basedir="content/${postdir}"
tree -d ${basedir}
echo "operation: create(c), listdir(ls), rmfile(rm), Quit(Q)"
read op
case $op in
c)
echo "cmd) Create Content"
echo "choose directory: "
read path
echo "===== Directories ====="
ls -la ${basedir}/${path}
echo "======================="
echo "choose filename. current: ${basedir}/${path}: "
read filename
break
;;
ls)
echo "cmd) Show Directory"
echo "choose directory: "
read path
clear
echo "===== Directories ====="
ls -la ${basedir}/${path}
echo "======================="
;;
rm)
echo "cmd) Remove File"
echo "choose directory: "
read path
echo "===== Directories ====="
ls -l ${basedir}/${path}
echo "======================="
echo "choose filename. current: ${basedir}/${path}: "
read filename
if [ ! -d trashcan ]; then
mkdir -p trashcan
echo "Directory \"trashcan\" created successfully."
fi
mv ${basedir}/${path}/${filename} trashcan
echo "move to trashcan!"
;;
Q)
echo "QUIT"
exit 1
;;
*)
echo "Invalid operation"
;;
esac
echo "Press Any Key"
read key
done
cmd="hugo new ${postdir}/${path}/${filename}.md"
echo "run ${cmd}"
$cmd
openfile=${basedir}/${path}/${filename}
echo "${openfile}" > $backup_file
vi ${openfile}
도커 서버를 껐다가 켰을때 자동 환경 구성
도커 이미지에 따라 빌드할때 지정한 COMMAND나 ENTRYPOINT를 실행시키도록 할수도 있다.
현재 내 환경인 Synology NAS에서는 기본적으로 도커 서버를 켰을땐 root 계정의 bash쉘이 실행된다.
이것을 이용해서 root 계정의 .bashrc의 하단에 자동 명령어 실행을 적어두면 된다.
# root 계정으로 변경
sudo su
# bashrc 파일을 vim으로 열기
cd ~
vi .bashrc
# .bashrc
# ... 이전 스크립트 내용 ...
# ssh 켜두기
service ssh start
# cron 켜두기
cron
service cron status
# hugo server 켜두기
cd /home/dongkim/site
nohup /home/dongkim/GoProjects/bin/hugo server --liveReloadPort=443 --bind=0.0.0.0 > /home/dongkim/site/nohup.out &
# alias 설정
alias hugocmd=$HOME/site/create_content.sh
Comments