Ubuntu コマンドの実行を1度だけスケジュールする(atコマンド)

sudo apt install at コマンドは/bin/shで実行される。 次の18:00に1度だけコマンドを実行 echo 'wondershaper clear eno1' | sudo at 18:00 2023年6月29日 18:00に1度だけコマンドを実行 echo 'wondershaper clear eno1' | sudo at 18:00 2023-06-29 実行スケジュール(ジョブ一覧)を確認する sudo at -l ジョブ1番の実行スケジュールをキャンセルする sudo at -d 1 https://yuya-hirooka.hatenablog.com/entry/2021/01/22/215657

2023年6月28日 · aoirint

markdownlint-cli2

Node.js 18.16.0 markdownlint-cli2 0.6.0 https://www.npmjs.com/package/markdownlint-cli2 npm install -g markdownlint-cli2 # lint markdownlint-cli2 # format markdownlint-cli2-fix Config .markdownlint-cli2.yaml Example: https://github.com/DavidAnson/markdownlint/blob/fcb8190781c80b292ac44f6df984326e0e6c69cd/schema/.markdownlint.yaml # https://github.com/DavidAnson/markdownlint # https://github.com/DavidAnson/markdownlint-cli2 globs: - "**/*.md" ignores: - ".git/**" - ".github/**" config: # h1 MD025: false # inline HTML MD033: false

2023年4月17日 · aoirint

editorコマンドで起動するエディタを変更する(Ubuntu)

https://unix.stackexchange.com/a/204896 sudo update-alternatives --config editor

2021年11月13日 · aoirint

cron

Linux上でプログラムの実行をスケジュールするためのプログラム。 独自の書式をもつcrontabファイルでスケジュールを設定する。 想定環境 Ubuntu 20.04 /etc/crontab SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin MAILTO= # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) crontabの時刻形式は独特で、複雑な設定を新しく書き起こすのは面倒くさい。 ...

2021年11月5日 · aoirint

ファイル変更時にコマンド実行(watchmedo, watchexec)

watchmedo (watchdog) https://github.com/gorakhargosh/watchdog https://pypi.org/project/watchdog/ watchmedo shell-command -R --command 'make build' ./src # プロセスが動いていても停止して再実行する watchmedo auto-restart -R -d ./src -- make serve watchmedo インストール pip3 install watchdog[watchmedo]==2.1.3 ※ 2.1.4 on Ubuntuはバグがありそう Exception in thread Thread-1: Traceback (most recent call last): File "$HOME/.pyenv/versions/3.9.6/lib/python3.9/threading.py", line 973, in _bootstrap_inner self.run() File "$HOME/.pyenv/versions/3.9.6/lib/python3.9/site-packages/watchdog/observers/api.py", line 199, in run self.dispatch_events(self.event_queue, self.timeout) File "$HOME/.pyenv/versions/3.9.6/lib/python3.9/site-packages/watchdog/observers/api.py", line 372, in dispatch_events handler.dispatch(event) File "$HOME/.pyenv/versions/3.9.6/lib/python3.9/site-packages/watchdog/events.py", line 282, in dispatch self.event_dispatch_map[event.event_type](event) AttributeError: 'RootHandler' object has no attribute 'event_dispatch_map' watchexec https://github.com/watchexec/watchexec https://crates.io/crates/watchexec-cli https://superuser.com/questions/181517/how-to-execute-a-command-whenever-a-file-changes watchexec -w ./src -- make build # プロセスが動いていても停止して再実行する watchexec -r -w ./src -- make serve # 初回実行しない watchexec -p -w ./src -- make event-trigger watchexec インストール Rustのインストール https://www.rust-lang.org/ja/learn/get-started curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh watchexecのインストール cargo install watchexec-cli

2021年8月22日 · aoirint

Makefile Tips

Makefileのあるディレクトリの絶対パスを取得する $(pwd)や相対パスでは、makeコマンドの実行ディレクトリが基準になってしまう。Makefileの実体があるディレクトリを基準としたいときは、以下のようにROOT_DIRを定義する。 ROOT_DIR = $(dir $(realpath $(firstword $(MAKEFILE_LIST)))) エラー時に処理を続行する コマンドの前に-(ハイフン)をつける。 .PHONY: cmd cmd: ls -fail_command a b c ls インデントはスペースではなくタブを使う vimrcでset expandtabしている場合にひっかかる。 以下で一時的に解除するか、vimrcでset expandtabするのをやめる、もしくはvimrcでファイル名による分岐で設定する。 :set noexpandtab .vimrc set expandtab let _filename = expand('%:r') if _filename == 'Makefile' set noexpandtab endif vimでMakefileだけTabスペースではなくTabとして入力する - Qiita ファイルの存在に関係なくターゲットを実行する Makeは本来Cのコンパイルなどに使うとき、ターゲット名に一致するファイルが存在している場合に処理をスキップするようになっている。 一方で、buildというターゲット名を使って、呼び出しのたびにコマンドを実行したいが、buildディレクトリが存在するような場合に困る。 スキップさせないようにするには、.PHONY: ターゲット名を記述する。 .PHONY: cmd cmd: ls 複数のコマンドを1つのシェルで実行する cmd: echo Hello;\ VAR=World;\ echo $$VAR .ONESHELL: cmd cmd: echo "Hello" VAR=World echo $$VAR 途中のコマンドの終了ステータスを返す https://stackoverflow.com/a/44324918 .ONESHELL: cmd .PHONY: cmd cmd: sh -c 'exit 123' EXIT_CODE=$$? echo "Exit code: $$EXIT_CODE" exit $$EXIT_CODE

2021年7月1日 · aoirint

Imagemagickで画像のDPIを変更する

画像のDPI(dot per inch)がばらばらの場合、 TeXで画像を取り込んだときのサイズがばらばらになるため統一する。 以下はIN.pngをDPI 72にしてOUT.pngに出力するコマンド。 convert -density 72 -units PixelsPerInch IN.png OUT.png もともとのDPIを調べるコマンド。 identify -format '%x,%y\n' IN.png

2020年11月9日 · aoirint