markboy's archive
Create TOC
레이블이
systemd
인 게시물을 표시합니다.
모든 게시물 표시
레이블이
systemd
인 게시물을 표시합니다.
모든 게시물 표시
2025년 12월 14일
udev+systemd 로 usb 마운트 자동 설정
목차
systemd 로 usb 마운트 설정 특정 usb를 연결하면 */mnt/storage* 에 mount 하도록 설정한다. ## uuid 확인 USB 연결 후 `lsblk -f` 명령으로 해당 USB의 **UUID** 를 확인한다. 아래 예시에서는 **aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee** 가 UUID다. ```text AME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS sda ├─sda1 │ vfat FAT32 xxxx-xxxx 969.5M 0% /boot/efi ├─sda2 │ ext4 1.0 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 333.7G 21% / └─sda3 swap 1 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx [SWAP] sdb └─sdb1 ext4 1.0 xxxxxxxx-xxxx-xxxx-8fd1-xxxxxxxxxxxx 241G 45% /mnt/storage ``` ## systemd 설정 ### system마운트 유닛 (Mount Unit) 파일 작성 아래와 같은 내용으로 */etc/systemd/system/mnt-storage.mount* 파일 작성 ```ini [Unit] Description=Auto-mount USB with UUID aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee After=dev-disk-by\x2duuid-aaaaaaaa\x2dbbbb\x2dcccc\x2ddddd\x2deeeeeeeeeeee.device Requires=dev-disk-by\x2duuid-aaaaaaaa\x2dbbbb\x2dcccc\x2ddddd\x2deeeeeeeeeeee.device [Mount] What=/dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee Where=/mnt/storage Type=ext4 Options=defaults,noatime,nofail [Install] WantedBy=multi-user.target ``` ### systemd 설정 새로 고침 ```bash sudo systemctl daemon-reload ``` ### 유닛 활성화 ```bash sudo systemctl enable mnt-storage.mount ``` 즉시 마운트 하려면 ```bash sudo systemctl start mnt-storage.mount ``` ## udev 설정 ### udev 규칙 작성 udev에 규칙을 추가해서 usb가 연결되었을 때 **mnt-storage.mount** 가 동작하게 한다. 아래와 같은 내용의 */etc/udev/rules.d/99-mnt-storage.rules* 파일을 만든다. ```text SUBSYSTEM=="block", ENV{ID_FS_UUID}=="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", TAG+="systemd", ENV{SYSTEMD_WANTS}="mnt-storage.mount" ``` ### udev 규칙 새로 고침 ```bash sudo udevadm control --reload-rules ``` ### udev 규칙 적용 ```bash sudo udevadm trigger ```
2025년 7월 11일
wlan0 자동 재연결 설정
목차
이 문서는 `nmcli`와 `systemd`를 이용하여 무선 인터페이스 `wlan0`이 `disconnected` 상태일 때 자동으로 재연결하는 시스템을 구축하는 방법을 설명합니다. --- ## 스크립트 생성 아래와 같은 내용으로 `/usr/local/bin/check-wlan.sh` 파일을 생성합니다. ```bash #!/bin/bash IFNAME="wlan0" STATE=$(nmcli -t -f DEVICE,STATE dev | grep "^$IFNAME:" | cut -d: -f2) if [ "$STATE" = "disconnected" ]; then echo "$(date): $IFNAME is disconnected. Trying to reconnect..." >> /var/log/wlan-reconnect.log /usr/bin/nmcli connection up ifname "$IFNAME" >> /var/log/wlan-reconnect.log 2>&1 else echo "$(date): $IFNAME is $STATE. No action needed." >> /var/log/wlan-reconnect.log fi ``` 파일 생성 후 실행 권한을 부여합니다. ```bash $ sudo chmod +x /usr/local/bin/check-wlan.sh ``` ## systemd 서비스 작성 아래와 같은 내용으로 `/etc/systemd/system/check-wlan.service` 파일을 생성합니다. ```ini [Unit] Description=Check and reconnect wlan0 if disconnected Wants=network-online.target After=network-online.target [Service] Type=oneshot ExecStart=/usr/local/bin/check-wlan.sh ``` ## systemd 타이머 작성 아래와 같은 내용으로 `/etc/systemd/system/check-wlan.timer` 파일을 생성합니다. ```ini [Unit] Description=Run wlan0 checker every 2 minutes [Timer] OnBootSec=30sec OnUnitActiveSec=2min Persistent=true [Install] WantedBy=timers.target ``` ## 타이머 활성화 및 시작 ```bash $ sudo systemctl daemon-reload $ sudo systemctl enable --now check-wlan.timer ``` ## 동작 확인 타이머 상태 확인: ```bash $ systemctl list-timers | grep check-wlan ``` 서비스 로그 확인: ```bash $ journalctl -u check-wlan.service ``` 재연결 시도 로그 확인: ```bash cat /var/log/wlan-reconnect.log ```
2024년 12월 14일
Debian/systemd로 rclone mount하기
rclone mount를 autofs 대신 systemd를 사용하는 방법을 기술한다. rclone은 미리 설정했다고 가정한다. *~/.config/systemd/user/rclone@.service*파일을 만든다. ```ini # User service for Rclone mounting # # Place in ~/.config/systemd/user/ # File must include the '@' (ex rclone@.service) # As your normal user, run # systemctl --user daemon-reload # You can now start/enable each remote by using rclone@
# systemctl --user enable --now rclone@dropbox [Unit] Description=rclone: Remote FUSE filesystem for cloud storage config %i Documentation=man:rclone(1) After=network-online.target--u Wants=network-online.target [Service] Type=notify ExecStartPre=-/usr/bin/mkdir -p %h/mnt/%i ExecStart= \ /usr/bin/rclone mount \ --config=%h/.config/rclone/rclone.conf \ --allow-non-empty \ --vfs-cache-mode writes \ --vfs-cache-max-size 100M \ --dir-cache-time 72h \ --vfs-read-chunk-size-limit 128M \ --vfs-read-chunk-size-limit off \ --log-level INFO \ --log-file /tmp/rclone-%i.log \ %i: %h/mnt/%i ExecStop=/bin/fusermount -u %h/mnt/%i [Install] WantedBy=default.target ``` **--allow-other** 설정을 추가하고 싶다면 */etc/fuse.conf* 파일에 **user_allow_other**을 추가한다. 서비스 설정을 다시 읽는다. ```shell $ systemctl --user daemon-reloaded ``` rclone에서 설정한 remote 이름과 결합해서 서비스를 등록하고 시작한다. remote이름이 onedrive 라면 ```shell $ systemctl --user enable --now rclone@onedrive ```
이전 게시물
홈
피드 구독하기:
글 ( Atom )