Unix 720

i3 손대보는 중

openbox 보다 편할거 같은데... minimal하면서도 마우스에 손 댈 일이 별로 없어보임. https://www.youtube.com/watch?v=j1I63wGcvU4&list=PL5ze0DjYv5DbCv9vNEzFmP6sU7ZmkGzcf 1. i3 설치 2. kde가 먼저 있었기 때문에 sddm으로 i3에 로그인하게 변경함. 3. 해상도가 이상함. xrandr --output HDMI-0 --mode 3840x1080 으로 해상도 세팅하고 autorandr --save monitor-only 로 해상도 저장. .config/i3/config: exec --no-startup-id nm-applet 라고 된 행 밑에다가 exec --no-startup-id /usr/bin/autorandr --..

Unix/Arch Linux 2024.03.12

pm2로 cron task 만들기

cron으로 등록하면 로그가 잘 남지 않고 이메일로 출력이 오기 때문에 불편하다. cronicle같은 것을 써도 되는데 cronicle은 좀 보안이 나쁜 거 같음. worker만 따로 돌리는 개념은 없?고. airflow로 돌리기엔 그 정도까지 중요한 task는 또 아닌 경우 pm2를 쓸 수 있다. pm2 start 실행하고싶은거 --cron-restart="0 * * * *" --no-autorestart --namespace=cron 이 정도? --no-autostart 가 없으면 데몬이 아니라 실행되고 종료되는 task도 재실행 해야하는 것으로 생각해서 cron-restart로 지정한 값에 상관 없이 스크립트를 계속 실행하게 된다.

Unix 2024.01.26

pm2를 systemctl --user 로 실행하기

pm2가 다 좋은데 pm2 자체가 뻗어버리는 상황에서 되살아나지 않아서 pm2에 속한 서비스들이 통으로 다 죽을수도 있다는 약점이 있다. (ex 서버 메모리가 모자라서 여러 프로세스가 죽어버리는 상황. 연구작업이 이루어지는 서버에서는 일어날 수 있는 일이다.) 반면 systemctl은 매우 불편한데, systemd의 일부라서 out of memory 상황에서도 잘 살아남는다는 것! 두가지 옵션중에서 안정성 이슈 때문에 여러 서비스를 systemctl --user로 실행했는데 관리가 몹시 불편했다. 서비스 정의를 만드는 부분이나 로깅이 매우 불편했다. (아예 파일로 로깅하든지, journal로 로깅하든지, 로깅부분에 신경을 써서 wrapper script를 만들거나 프로그램 자체 로깅을 잘 쓰든지... 버..

Unix 2023.10.12

MongoDb migration 기록

상황: 서버 머신 한대가 자꾸 죽어서 더 안정적인 머신으로 데이터와 데몬 이전 작업 계획: 1. 서버A (old) 에서 서버B로 mongodump로 데이터 수동으로 복제 2. 이후 서버B를 서버A의 replica로 등록하면 데이터 싱크됨 3. 적절한 시점에 서버B를 primary로, 서버A를 secondary로 만들고 4. 서버A는 자연사 할 때 까지 굴리면서 read only replica로 사용 * 서버A에 접속 후 다이렉트로 mongodump -u --out=$HOME/mongo.d 시전 * 이러면 알아서 전에 덤프한다. * --db를 붙이라는 자료도 있는데 이러면 restore할 때 문제가 있었다. * 왜 문제인진 정확히 모르겠고, 서버A는 mongodb5, 서버B는 mongodb6이라 그랬던가?..

Unix/Ubuntu 2023.07.17

boost python numpy 컴파일해서 설치

Dead snakes로 python 3.10등을 설치할 수는 있지만, numpy는 제공되지 않아서 문제다. pip install numpy 로 넘파이를 쓸 수는 있는데, C++ 모듈을 짜서 numpy와 연동하는 부분은 linking이 되지 않을 것이다. ㄱ-;; ~/usr/venv-3.10 에 venv가 있고, numpy 모듈이 설치가 된 상태로 작업해야 한다. 그래야 부스트 컴파일러가 numpy가 있다고 감지를 해서 numpy 모듈도 빌드할 것이다. Python3.10에 boost_1_82_0.tar.bz2 기준이다. Instructions 1. boost 소스코드를 받아 압축을 푼다. 2. ./bootstrap.sh --with-python=$HOME/usr/venv-3.10/bin/python 3...

Unix/Ubuntu 2023.05.03

systemctl wrapper

systemctl 과 pm2를 비교하면 명령어가 쉽다는거...? display를 예쁘게 해준다는거? 이 두 개 정도가 많이 아쉽다. 또 아쉬운 것은 pm2 start "명령어" 치면 바로 그냥 시작을 해준다는 거... pm2 start정도로 쉽진 않지만 그래도 pm2는 자체버그가 많아서 간간이 탈을 내는 편임. 다시 systemctl --user로 돌아옴. 다만 wrapper를 작성했다. #!/usr/bin/perl my $scu = "systemctl --user"; my $cmd = shift; my $args = join(' ', @ARGV); if ($cmd eq "") { system("$scu list-unit-files --type=service"); system("$scu list-unit..

Unix 2023.03.30

pm2-yacron 조합

유저 레벨에서 계속 실행되는 서비스를 관리할 때에는 이제 systemctl --user 보다는 pm2가 더 편한 툴로 생각된다. 슬슬 갈아타고있다. resilios sync라든지... 하지만 cron으로 돌리던 주기작업의 경우는 어떤가? pm2가 주기작업은 좀 별로인 것 같다. 실행이 안 되는 때도 있다 이상하게. 그리고 pm2 ls를 쳐보면 stopped로 뜨는 것도 마음에 안 든다. cron은 logging이 잘 안 되기도 하고 (잘 되는데 syslog로 들어간다든지해서...) notification을 보낸다든지 하는 부분이 이메일로 간다든지해서 영 별로임. https://pypi.org/project/yacron/ yacron A modern Cron replacement that is Docker..

Unix 2023.01.30