「OS」の版間の差分

提供:senooken JP Wiki
 
(同じ利用者による、間の18版が非表示)
766行目: 766行目:
==== Mouse ====
==== Mouse ====
マウスポインター速度 macデフォルト4/10。
マウスポインター速度 macデフォルト4/10。
===== DiscreteScroll =====
* [http://www.neko.ne.jp/%7Efreewing/software/macos_disable_mouse_wheel_scroll_acceleration/#google_vignette Macのマウスホイールの加速度を無効にして Windowsと同じ動きにする方法、macOSのクソな UI動作仕様を修正 (macOSのマウスホイールのスクロールの加速度の動きにはイラついている人が世界中に大勢居ます)]
* [https://github.com/emreyolcu/discrete-scroll GitHub - emreyolcu/discrete-scroll: Fix for macOS's unnecessary scroll wheel acceleration]
Macのマウスホイールのスクロールは加速度に応じる。高速に動かすと移動量が増える。指が疲れる。
加速度を無視して、Windows同様に一定量の移動にしてくれるのが、DiscreteScroll。


==== Applications ====
==== Applications ====
811行目: 820行目:
  launchctl load ~/Library/LaunchAgents/SSLKEYLOGFILE.plist  
  launchctl load ~/Library/LaunchAgents/SSLKEYLOGFILE.plist  
値を修正した場合、一度unloadしてからloadする。
値を修正した場合、一度unloadしてからloadする。
==== Finder ====
===== 拡張子の表示 =====
https://support.apple.com/ja-jp/guide/mac-help/mchlp2304/mac
# MacのFinder  で、「Finder」>「設定」と選択してから、「詳細」をクリックします。
# 「すべてのファイル名拡張子を表示」を選択するか選択を解除します。
==== Screenshot ====
===== 場所の変更 =====
https://support.apple.com/ja-jp/guide/mac-help/mh26782/mac
起動中の [オプション] で選べる。
===== 保存形式の変更 =====
https://www.pc-koubou.jp/magazine/76550
defaults write com.apple.screencapture type jpg
戻すとき。
defaults write com.apple.screencapture type png
==== IME ====
===== 変換Enter 2回 =====
Mac日本語入力、エンター2回でなく1回で変換する方法
https://ischool.co.jp/2019-08-05-japanese-input-in-mac-how-to-convert-at-once-instead-of-twice/
MacのIMEは変換後確定にEnter2回必要。これが面倒。1回にすることができる。
[システム設定]-[キーボード]-[入力ソース]-[編集]-[日本語]-[☑️Windows風のキー操作]
これで1回で済む。
===== 追加辞書 =====
[https://support.apple.com/ja-jp/guide/japanese-input-method/jpim10226/mac Macの追加辞書に読み込むためのテキストファイルを作成する - Apple サポート (日本)]
単語の読み<code>,</code>単語<code>,</code>品詞<code>,</code>(<code>,,</code>メモ)
{| class="wikitable"
! colspan="4" |要素
! colspan="8" |説明
|-
| colspan="4" |単語の読み
| colspan="8" |単語の読みをひらがなで入力します。長さは32文字以下にする必要があります。
単語にASCIIカンマやスペースを含める場合は、単語を引用符(“”)で囲みます。
単語にASCII引用符(")を入力する場合は、単語を1バイトの引用符で囲み、1バイトの引用符の周囲に連続する2つの1バイトの引用符を入力します。
|-
| colspan="4" |単語
| colspan="8" |目的の変換結果を入力します。1つの単語の長さは64文字以下にする必要があります。単語には、Unicodeコンソーシアムで定義されている文字と記号であれば、どれでも使用できます。
|-
| colspan="4" |品詞
| colspan="8" |次のいずれかの[[/support.apple.com/ja-jp/guide/japanese-input-method/jpim10211/6.3/mac/15.0|品詞]]を指定します:
* 普通名詞
* サ変名詞
* 人名
* 地名
* 形容詞
* 副詞
* 接尾語
* 動詞
* その他すべての品詞
|-
| colspan="4" |メモ
| colspan="8" |メモはオプションです。メモの前には2つのASCIIカンマ(<code>,,</code>)を入力します。メモはユーザ辞書には登録されません。
|}
これで登録する。登録手順。
# [設定]-[キーボード]-[テキスト入力]-[入力ソース]-[編集]
# [日本語-ローマ字入力]-[追加辞書]
# ここにドラッグ・ドロップするか、右クリック-[辞書をインストール] を選ぶ。
[https://discussionsjapan.apple.com/content/attachment/b2e76e0d-706b-430c-8902-b489756817ae 入力ソースの追加辞書の部分がグレーにな… - Apple コミュニティ]
登録方法に癖がある。
# 辞書ファイルの拡張子はtxt
# 品詞の指定が重要。基本は普通名詞。
==== Keybind ====
https://support.apple.com/ja-jp/102650
{| class="wikitable"
|+
!
!キー
!内容
!
|-
|
|option-command-電源
option-command-メディア取り出しキー
|スリープ
|
|-
|
|
|
|
|-
|
|
|
|
|}
==== Keychain ====
Macのキーチェーンアクセスとは?
https://support.apple.com/ja-jp/guide/keychain-access/kyca1083/mac
「macOS」で「キーチェーンアクセス」を使う--パスワードを見つけて変更するには
https://japan.zdnet.com/article/35190535/
dockのkeychainアプリでMacのパスワードマネージャー。KeePassXCと似たようなことができる。OS標準だから安全・安心?
==== Passwords ====
Apple、今秋リリース予定のiPhoneとMacに新しいパスワードアプリ搭載
https://news.mynavi.jp/techplus/article/20240613-2964379/
2024年秋に [Passwords] という新しいOSアプリが登場。従来のKeychainをベースに、WiFiパスワードなど一元管理のためのアプリの模様。
こちらを使うのが良さそう。
[システム設定]-[パスワード] からアクセスする模様。
=== Other ===
==== 破損App ====
[https://qiita.com/quattro_4/items/f5b56c1897c0cc235c0f Macで"壊れているため開けません"の古いappを開く #Mac - Qiita]
xattr -rc /Applications/LegacyAwesome.app
これで属性を除去して解決することが多い。


== UNIX ==
== UNIX ==
912行目: 1,057行目:
crontabでの実行開始時間は検討が必要。0分と00:00は他のサブシステムの定期タスクの密集時間のことが多いのでここは避けて5分や10分にずらすのが無難。
crontabでの実行開始時間は検討が必要。0分と00:00は他のサブシステムの定期タスクの密集時間のことが多いのでここは避けて5分や10分にずらすのが無難。


== VM ==
=== systemd ===


=== UTM ===
* [https://systemd.io/ System and Service Manager]
* [https://www.freedesktop.org/software/systemd/man/systemd systemd]


==== Control ====
GNU/Linux向けのシステム管理ソフトウェア。大量のソフトの統合。サーバーソフトウェアの管理で非常に重要。


===== Capture =====
systemdのメインデーモンの/sbin/systemdは/sbin/initにリンクされていて、既存のSysV initを置換する最初のプロセスとなる。
[https://docs.getutm.app/basics/controls/ Controls | UTM Documentation]


デフォルトだと、Control-Tabなど、一部のMac本体のホットキーが有効になっている。例えば、Windows側でc-tabを入力できなくて困る。
ssytemd自体は本体の他に4のコンポーネントから構成。


4番のボタンまたは、control-optionで、カーソルとキーボードをVMでキャプチャーする。これで入力可能になる。
# utility
# daemon
# target: ユニットのグループ化や処理の順序や依存関係の定義。unitの一種。
# unit: systemdの管理処理の単位。System V initのサービスに相当。


=== Docker ===
systemdはsystemdの管理対象となる処理の単位のユニットでシステムを管理する。ユニットは12のタイプがある。


==== Network ====
# service: デーモンの開始と制御担当。
docker network ls
# socket
上記コマンドでコンテナーごとのネットワーク識別子を確認できる。コンテナー同士で同一ネットワークにするには、片方のservices.networks:でこのネットワーク識別子を指定する。
# target
# device
# mount
# automount
# timer
# swap
# path
# slice
# scope
# special


==== Compose ====
特に重要なのはserviceユニット。
phpのアプリサーバー、DBサーバーを一つのイメージで作ることもできるが、別のイメージにして連動させることもできる。別のイメージ・コンテナーにしたほうが、管理しやすい模様。


docker composeで複数のイメージ・コンテナーを一体に管理できる。その際に、特有の事項がある。
==== Unit ====
[https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html systemd.unit]


[https://qiita.com/b-coffin/items/8103583efe3767b6748e PHPのPDOをDockerコンテナ内で使おうとしたところ、"No such file or directory" エラーが発生した話 #docker-compose - Qiita]
ユニットファイルはini形式のテキストファイル。


docker composeで一体管理しているコンテナー群は、同一ネットワークに参加する。ホスト名はservice名になる。したがって、例えばアプリサーバーからDBサーバーへのアクセス時には、ホスト名に注意する。
===== Unit File Load Path =====
https://chatgpt.com/c/6753b416-3d48-800b-ae6d-fcb43df956e3


==== Image ====
いくつもの検索パスがある。が、基本的にはいかに配置する。


===== PHP =====
* system: /etc/systemd/system/
Ref: [https://hub.docker.com/_/php php - Official Image | Docker Hub].
* $XDG_CONFIG_HOME/systemd/user/ ($XDG_CONFIG_HOMEのデフォルトは~/.config)


Dockerの公式PHPイメージを使う場合、いくつかPHP関係のライブラリーや拡張モジュールをインストール・設定するための専用コマンドが用意されている。
従って、基本は~/.config/systemd/userに配置すればいい。
RUN pecl install memcached-3.2.0 \
&& docker-php-ext-enable memcached
peclの拡張機能インストール時はバージョン指定が推奨される。


====== docker-php-ext-install ======
==== systemctl ====
[https://tech.quartetcom.co.jp/2024/03/12/docker-php-extension/ Docker で PHP 拡張モジュールをインストールする | QUARTETCOM TECH BLOG]
[https://www.freedesktop.org/software/systemd/man/latest/systemctl.html systemctl]


PHP拡張モジュールのインストールと設定を行うヘルパーコマンドが用意されている。--helpで対象拡張モジュール一覧を確認できる。
systemdとservice managerの制御用のコマンド。状態管理からユニットの登録・削除など基本はこのコマンドとサブコマンドで全部対応する。非常に重要。
  $ docker run php:latest docker-php-ext-install --help
  <code>systemctl</code> [OPTIONS...] COMMAND [UNIT...]
--userオプションでユーザー扱いしない場合、sudoで管理者権限が必要。
# .....
Possible values for ext-name:
bcmath bz2 calendar ctype curl dba dl_test dom enchant exif ffi fileinfo filter ftp gd gettext gmp hash iconv imap intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell random readline reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer xml xmlreader xmlwriter xsl zend_test zip
# .....
PECL以外は一通り使用可能。


====== error ======
基本的な流れは以下となる。
docker-php-ext-installでインストールする際には、必要な依存関係もセットで指定しないとエラーが出る。
FROM php:7.3.23-apache
RUN apt update
RUN docker-php-ext-install pdo_mysql
RUN apt install -y libbz2-dev && docker-php-ext-install bz2
RUN apt install -y libpng-dev && docker-php-ext-install gd
RUN apt install -y libzip-dev && docker-php-ext-install zip
RUN apt install -y ssl-cert && a2enmod rewrite ssl && a2ensite default-ssl
COPY --from=composer /usr/bin/composer /usr/bin/composer
ヘッダーのあるlib*-devもセットでインストールしておく。


===== phpmyadmin =====
# ユニットファイル (.service) を作成して配置 (/etc/systemd/system or ~/.config/systemd/user)。
Ref: [https://hub.docker.com/_/phpmyadmin?tab=description phpmyadmin - Official Image | Docker Hub].
# systemctl enable [unit] で登録。
# systemctl restart [unit] で起動。


以下のdocker-compose.ymlを格納しておいて、networksのところをつなげたいやつにあわせる。<syntaxhighlight lang="yaml">
===== Commands =====
services:
COMMANDは種類ごとに以下を解釈。大量にある。
  phpmyadmin:
    image: phpmyadmin
    restart: always
    ports:
      - 8080:80
    environment:
      - PMA_ARBITARY=1
    networks:
      - development_default
        # - wordpress_default
networks:
  wordpress_default:
    external: true
  development_default:
    external: false
</syntaxhighlight>特に重要な環境変数。


* <code>PMA_ARBITRARY</code> - when set to 1 connection to the arbitrary server will be allowed
====== Unit Commands (Introspection and Modification) ======
* PMA_HOST: デフォルトはdb。servicesがdb以外なら指定必要。
ユニット自体を制御するコマンド。
* PMA_USER/PMA_PASSWORD=phpmyadminのデフォルトユーザー。これを指定しておくと、自動ログインする。


===== MySQL =====
* list-units
* list-automounts
* list-paths
* list-sockets
* list-timers
* is-active
* is-failed
* status
* show
* cat
* help
* list-dependencies
* start
* stop
* reload
* restart
* try-restart
* reload-or-restart
* try-reload-or-restart
* isolate
* kill
* clean
* freeze
* thaw
* set-property
* bind
* mount-image
* service-log-level
* service-log-target
* reset-failed
* whoami


====== import ======
重要なもの。
Ref: [https://stackoverflow.com/questions/43880026/import-data-sql-mysql-docker-container Import data.sql MySQL Docker Container - Stack Overflow].
docker exec -i mysql-container mysql -uuser -ppassword name_db < data.sql
上記のようなコマンドで取り込む。


==== Error ====
* 情報
** status: ユニットの情報を表示。動作確認。稼働やエラーの確認などができる。問題があったらまずこれで確認。
** list-units: systemdのメモリー内に存在 (実行中・ロード済み) するユニットを一覧。
**
* 操作
** restart: 手動再起動。
** start: 手動起動。
** stop: 手動停止。
* 設定
** reload: ユニットにユニット固有の設定のリロードを指令する。apache2の場合httpd.conf。
** daemon-reload: ユニットの設定をリロードする。apacheの場合apache.service。


===== connect ENOENT \\.\pipe\errorReporter =====
====== Unit File Commands ======
https://github.com/docker/for-win/issues/14080


再起動で直るらしい?
* list-unit-files
* enable
* disable
* reenable
* preset
* preset-all
* is-enabled
* mask
* unmask
* link
* revert
* add-wants
* edit
* get-default
* set-default


インストール時のアカウントの権限があるので、アカウント権限がある状態で再インストールするとOK。
ユニットファイルの操作。


===== `version` is obsolete =====
* list-unit-files: システムにインストール済みの全ユニットファイルを一覧。list-unitsと異なり、読み込んでいないものも表示する。ユニットファイルの存在と有効・無効状態の確認に使う。あまり使わないと思う [https://chatgpt.com/c/6753b416-3d48-800b-ae6d-fcb43df956e3<nowiki>]。</nowiki>
[https://zenn.dev/harpseal/articles/8dc2602ffe3365 【docker compose】警告`version` is obsoleteの解決法]
* enable: ユニットを有効にする。設定ファイルの場所からシンボリックリンクを作成する。
$ docker compose up
* disable: ユニットを無効にする。シンボリックリンクを削除。
time="2024-07-02T09:54:45+09:00" level=warning msg="C:\\Users\\senoo_0901\\project\\main\\GASProj\\docker\\docker-compose.yml: `version` is obsolete"
docker compose v2からversion指令は廃止になった。単純に削除すればいい。


==== Other ====


===== RUN/CMD/ENTRYPOINTの違い =====
* Machne Commands
** list-machines
* Job Commands
** list-jobs
** cancel
* Environment Commands
** show-environment
** set-environment
** unset-environment
** import-environment
* Manager State Commands
** daemon-reload
** daemon-reexec
** log-level
** log-target
** service-watchdogs


* [https://www.guri2o1667.work/entry/2021/06/08/%E3%80%90Docker%E3%80%91Dockerfile%E3%81%A7%E8%A8%98%E8%BF%B0%E3%81%99%E3%82%8BRUN%E3%81%A8CMD%E3%81%A8ENTRYPOINT%E3%81%AE%E9%81%95%E3%81%84%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6 【Docker】Dockerfileで記述するRUNとCMDとENTRYPOINTの違いについて - 自由気ままに書いちゃおう]
====== System Commands ======
* [https://docs.docker.com/reference/dockerfile/ Dockerfile reference | Docker Docs]


Dockerfileでコマンドを実行する指令が複数ある。違いを整理する。
* is-system-running
* default
* rescue
* emergency
* halt
* poweroff
* reboot
* kexec
* soft-reboot
* exit
* switch-root
* sleep
* suspend
* hibernate
* hybrid-sleep
* suspend-then-hibernate


* RUN: イメージ作成時=docker build字に実行。ソフトウェアのパッケージインストール、ファイルコピー変更などを行う。
特に便利なもの。
* CMD: コンテナ開始時=docker start、作成時=docker run時に実行される。docker run時のコマンドのデフォルト値。引数があればそちら優先。VolumeのバインドはRUN後になるのでCMD/ENTRYPOINTで行う必要がある。
* ENTRYPOINT:  コンテナ開始時=docker start、作成時=docker run時に実行される。docker run時に強制実行。上書き不能。ただし、CMDや実行時に引数を後ろに追加できる。
CMD/ENTRYPOINTはDockerfile内でそれぞれ1回しか指定できない。一番最後の指定で上書きされる。


「The shell form of <code>ENTRYPOINT</code> prevents any <code>CMD</code> command line arguments from being used.」とあるように、 ENTRYPOINTとCMDを併用する場合、exec形式で指定しないとCMDが無視される。
* poweroff: 電源をオフにできる。


「[https://forums.docker.com/t/how-to-combine-cmd-and-entrypoint/132517 How to combine CMD and ENTRYPOINT - Open Source Projects / Compose - Docker Community Forums]」
===== Options =====
オプションも大量にある。


ENTRYPOINTにコマンドを追記したい場合、entrypoint.shのようなスクリプトを実行する形にして、スクリプト内で引数処理するのがいいらしい。
* -t, --type=
* --state=
* -p, --property=
* -P
* -a, --all
* -r, --recursive
* --reverse
* --after
* --before
* --with-dependencies
* -l, --full
* --value
* --show-types
* --job-mode=
* -T, --show-transaction
* --fail
* --check-inhibitors=
* -i
* --dry-run
* -q, --quiet
* --no-warn
* --no-block
* --wait
* --user
* --system
* --failed
* --no-wall
* --global
* --no-reload
* --no-ask-password
* --kill-whm
* --kill-value=
* -s, --signal=
* --what=
* -f, --force
* --message=
* --now
* --root=
* --image=
* --image-policy=
* --runtime
* --preset-mode=
* -n, --lines=
* -o, --output=
* --firmware-setup
* --boot-loader-menu=
* --boot-loader-entry=
* -reboot-argument=
* --plain
* --timestep=
* --mkdir
* --marked
* --read-only
* --drop-in=
* --when
* --stdin
* -H, --host=
* -M, --machine=
* -C, --capsule=
* --no-pager
* --legend=
* -h, --help
* --version


===== 権限設定 =====
特に重要なオプション
[https://web.gnusocial.jp/post/2023/04/02/5760/ Apache HTTP Serverの/var/wwwの権限設定 | GNU social JP Web]


[https://devops.stackexchange.com/questions/8872/why-does-chown-not-work-in-run-command-in-docker Why does chown not work in RUN command in Docker? - DevOps Stack Exchange]
* --user: ユーザーとしてservice managerを呼び出す。このオプションを指定することでユーザー権限でsystemdを使える。
* --system: システムとして実行。デフォルト。


バインドボリュームする場合、RUNの後にバインドされるからCMDで設定が必要。
==== systemd-system.conf ====
[https://www.freedesktop.org/software/systemd/man/latest/systemd-system.conf.html systemd-system.conf]


[https://helpxlog.com/no-entrypoint-and-cmd-in-dockerfile/ DockerfileにENTRYPOINTもCMDも無い?? | へるぷログ]
systemdの設定ファイルとその格納場所。


CMD/ENTRYPOINTを指定しない場合、元イメージのCMD/ENTRYPOINTが実行される模様。apacheだとapache2-foregroundコマンド。
システムとユーザーとで参照するファイル・場所が異なる。


[https://qiita.com/oskamathis/items/6ef1e9765616a9315deb docker-composeでコンテナの初回起動時に特定の処理を行う方法 #Docker - Qiita]
* システム: 以下のsystem.confとsystem.conf.d/*.confをこの優先順位で解釈。
** /etc/systemd
** /run/systemd
** /usr/lib/systemd
* ユーザー: ホームディレクトリー、システムの優先順位でuser.confとuser.conf.d/*.conf。
** ~/.config/systemd
** システムのディレクトリー (/etc/systemd /run/systemd /usr/lib/systemd)


初回起動時に処理をする方法もあるが、一時ファイルを生成するなどするもの。権限設定は毎回実行してもOKなものなので、毎回実行する。
特に、ユーザーの~/.config/systemdが重要。ユーザーが自由にできる。


[https://github.com/docker-library/php/issues/1142 umask for non-root users not as expected · Issue #1142 · docker-library/php]
==== user ====


/root/.bashrcにumaskを指定する。これがないと、コマンドラインでdocker exec -i で実行した際デフォルトのumask 022でのファイル生成になり、この作業コマンドでログが発生したら、サーバープロセスから追記できない。
* https://chatgpt.com/c/6753b416-3d48-800b-ae6d-fcb43df956e3
FROM php:7.3.23-apache
* [https://pyopyopyo.hatenablog.com/entry/2021/04/30/233755 ユーザー権限で systemd のサービスを稼働させる方法 - pyopyopyo - Linuxとかプログラミングの覚え書き -]
RUN apt update && apt install -y \
* [https://zenn.dev/haccht/articles/e6f08dfed26976 CentOS7のsystemdでuserインスタンスを起動する]
      ssl-cert
* [https://penpen-dev.com/blog/rental-node/ レンタルサーバーでNode.jsアプリを永続化する]
RUN docker-php-ext-install pdo_mysql
RUN a2enmod rewrite ssl
RUN a2ensite default-ssl
COPY --from=composer /usr/bin/composer /usr/bin/composer
ENV BASH_ENV /root/.bashrc
RUN usermod -aG www-data root \
      && echo "umask 002" >>/root/.bashrc
CMD chgrp -R www-data /var/www && chmod 2775 /var/www \
      && find /var/www -type d -exec chmod 2775 {} \; \
      && find /var/www -type f -exec chmod 0664 {} \; \
      && apache2-foreground
[https://stackoverflow.com/questions/39953327/is-it-possible-to-set-the-default-command-when-the-docker-exec-command-is-run dockerfile - Is it possible to set the default command when the `docker exec` command is run on an already running container? - Stack Overflow]


docker exec実行時は、デフォルト実行されるコマンドはない。[[https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html Bash Startup Files (Bash Reference Manual)]] にあるように、BASH_ENVに指定したファイルを非対話実行でも読み込むのでこれを指定して、常にbash -cで実行する。
基本はOS管理なのでroot権限で動作する。が、ユーザー別に登録したりもできる。
そのポイントを整理する。


あるいは、BASH_ENVを指定せずに、bash -c 'umask 002; 'で実行する。
# ~/.config/systemd/user/*.serviceにユニットファイルを配置。
# systemctlコマンドには常に--userオプションを指定する。
# systemctl --user enable [service]
# systemctl --user restart [service]


* [https://stackoverflow.com/questions/69233642/why-is-umask-setting-in-dockerfile-not-working docker - Why is umask setting in dockerfile not working? - Stack Overflow]
なお、ユーザーユニットは、ユーザーがログイン中のみ有効。ログアウト中も稼働させるには、lingerでの登録が必要。
* [https://qiita.com/sotoiwa/items/0a78e392fad1cadb50b0 Libertyコンテナでumaskを変える #Docker - Qiita]


他に上記にあるように、ENTRYPOINTでumaskを指定する方法がある。が、これは関係ない気がする。chomd 2775 /var/wwwでスティッキーを指定しているから、後続の作成時は自動で2775になっているはずだから。
このlingerでの登録が対応していないことが共用サーバーには多い。


===== docker runとexec =====
その場合はしかたないので、cronで終了していたら再起動するコマンドを登録する。
[https://www.memotansu.jp/docker/852/ docker runとdocker execの違いの解説 | めもたんす]
pgrep -f "node index.js" > /dev/null || (cd index.jsがあるパス && node index.js)


run: イメージ作成・実行。
== Other ==


exec: 起動中のイメージで実行。
=== 辞書 ===
IMEの辞書登録の駆使で作業効率が大幅に変わる。


===== Japanese input/日本語入力 =====
頻出単語を入力しておくと良い。


* [https://superuser.com/questions/1551967/what-does-locale-gen-generate-in-linux What does locale-gen generate in Linux? - Super User]
* 個人情報
* [https://qiita.com/kazuyoshikakihara/items/0cf74c11d273b0064c83 Dockerではコンテナのlocaleの再確認を #Docker - Qiita]
** 住所
** 氏名
** 電話番号
** メールアドレス
*人名
**同僚などよく連絡する人の苗字は登録しておくと楽かも。
* 挨拶
** ありがとうございました。
** よろしくお願いします。
** ご確認お願いします。
* 数字
** 上付き
** 下付き
** 丸付き
{| class="wikitable"
|'''じゅうしょ'''
|
|-
|'''しめい'''
|
|-
|'''でんわ'''
|333-4444-4444
|-
|'''でんわ'''
|111111111111
|-
|'''めあど'''
|
|-
|'''めーる'''
|
|}
{| class="wikitable"
|'''あり'''
|'''ありがとうございました。'''
|'''普通名詞'''
|-
|あり
|ありがとうございます。
|普通名詞
|-
|おね
|お願いします。
|普通名詞
|-
|ごか
|ご確認お願いします。
|普通名詞
|-
|ごた
|ご対応ありがとうございました。
|普通名詞
|-
|ごた
|ご対応ありがとうございます。
|普通名詞
|-
|よろ
|よろしくお願いします。
|普通名詞
|}


OSに日本語のロケールが入っていないのが原因。
Debian系の場合。
## For Japanese input.
RUN apt install -y locales
RUN (rm /etc/locale.gen && sed '/# ja_JP.UTF-8 UTF-8/s/# //' >/etc/locale.gen) </etc/locale.gen
RUN locale-gen
ENV LANG=ja_JP.UTF-8
/etc/locale.genのファイルの修正が必要。
これで日本語が使用可能になる。
===== cron =====
[https://stackoverflow.com/questions/37458287/how-to-run-a-cron-job-inside-a-docker-container How to run a cron job inside a docker container? - Stack Overflow]
Docker内でcronを実行する方法がいくつかある。
## For cron.
RUN apt install -y cron
RUN (crontab -l ; echo '* * * * * /usr/local/bin/php /var/www/artisan schedule:run >/dev/null 2>&1') | crontab
CMD cron # CMDは最後の1個しか有効じゃないので、最後にまとめて指定することに注意する。
動作確認
crontab -l  # crontabの確認
pgrep cron  # cronプロセスの確認
== Other ==


=== RDP ===
=== RDP ===

2024年12月9日 (月) 17:00時点における最新版

パソコンのOSごとの記録。

iOS

Settings

Keyboard

[Settings]-[General]-[Keyboards] が設定項目。

Gboard

スマホの日本語入力 目からウロコの楽々ワザとは? | NIKKEIリスキリング

iOS版のGboardはAndroid版と異なり機能が劣る。標準キーボードを使ったほうがいいらしい。

Space

ASCII.jp:iPhoneで常に半角スペースを入力できるようにする方法

  • [ALL KEYBOARDS]-[Smart Punctuation]=On: Off推奨。
  • [KANA]-[Smart Fullwidth Space]=On: =Off推奨。

これで常に半角スペース入力になる。

瞬間切替

iPhoneは裏ワザだらけ、英数字と記号を思い通りに入力 スマホ日本語入力再入門(3) - 日本経済新聞

英語キーボードで1文字だけ数字や記号を入力したいことがある。

その場合、[数字切替] キーをドラッグしたまま、入力したいキーで離す。すると、数字や記号を1文字だけ入力して、英字モードに戻る。切替の手間が省けて楽。

Other

iPhoneは裏ワザだらけ、英数字と記号を思い通りに入力 スマホ日本語入力再入門(3) - 日本経済新聞

  • [ALL KEYBOARDS]-[Auto-Punctuation/自動大文字入力]=On: Off推奨。英語キーボード切替時に先頭が自動で大文字になる機能。英語圏の人なら便利だが非英語圏なら邪魔。
  • [ALL KEYBOARDS]-[Auto-Correction]=On: Off推奨。一般的な綴でない場合、誤入力と判断され、変換のデフォルトが修正候補になる。
  • [ENGLISH]-["." Shortcut]=On: On推奨。英語キーボードには.がない。これがオンだと、スペースのダブルタップで.を入力できる。

Network

テザリング

出典:

無通信状態が90秒ほどしばらく続くと省電力設計のため、自動的にオフになる。これが困る。Andriodは自動オフにはならない。

いくつか対策がある。

  1. [Personal Hotspot] (インターネット共有) 画面の表示を維持。自動ロックも解除しておく。
  2. USB/Wi-FiではなくBluetooth経由にする。⇢Bluetooth接続はMontary以上で不能。

Bluetooth経由のほうが、範囲が短く、電力消費量も抑えられるので、Bluetoothがよさそう。他にはUSB接続。

Bluetooth接続はできなくなっているので、画面表示か通信しておくしかない。

Instant Hotspot

出典:

Bluetoothでのテザリングはできないものの、類似機能のInstant Hotspotで実現できるらしい。

いくつか条件がある。

  • iPhone/iPadでインターネット共有 (Personal Hotspot) 対応。
  • 全デバイスで同じApple IDでiCloudにログイン。
  • 全デバイスでBluetoothオン。
  • Wi-Fiオン.

[Personal Hotspot]-[Allow Others to Join] をオンにしなくても自分だけ接続できるのが利点。逆にいうとこれくらい。Bluetoothをオンにしないといけないぶん、余計な通信処理が入る。使わなくていい。

Bluetooth

出典:

MacS v12.1 (Monterey) からiOSでのBluetooth接続が不能になった。

Wi-FiかUSBで接続する。実務的には困らないはず。

Saving

通信を節約する方法がいくつかある。

  1. Wi-Fiを使う場合、Wi-Fiのアクセスポイントごとの設定で [Low Data Mode] がある。これをオンにすると節約できる。
  2. SIMの場合、[Cellular Data Options]-[Low Data Mode] がある。[Low Data Mode]=onにすると、自動更新や写真の動機などのバックグラウンドタスクが停止される。
  3. ブラウザーのコンテンツブロッカー。例えば、1Blocker。メディアを無効にするカスタムルールで、大幅に節約できる。
    1. [Advanced customize]-[custom rule]-[new rule]
    2. .+/Block all type resource=off/

2 番目に、Safari をコンテンツ ブロッカーと一緒に使用することをお勧めします。私は 1Blocker を使用していますが、メディアを無効にするカスタム ルールを作成して、帯域幅を大幅に節約できます。[高度なカスタマイズ]、[カスタム ルール]、[新規ルール] の順に進み、正規表現に.+(ドットとプラス記号はすべての URL に一致します) を入力し、[すべてのタイプのリソースをブロック] をオフに切り替え、画像、フォント、RAW、SVG、メディア、ポップアップをオンに戻します。保存します。これにより、これらの特定のリソース タイプをすべて読み込む要求がグローバルにブロックされ、帯域幅を大幅に節約できます。

Sound

出典: iPhoneの音量を調整する - Apple サポート (日本)

音量は左サイドボタンで上下できる。左上のスイッチがマナーモードの切替になっている。消音モードと呼んでいる。

Mail

複数アカウントを使いこなす、iPhoneメールアプリの知られざる便利機能 | 日経クロステック(xTECH)

iPhoneのメールアプリは標準のMailを使うのがよいだろう。K-9がないから。複数アカウントにも対応しているが、設定が若干特殊。アプリ設定からではなく、iOS本体の設定から行う。

App

いくつか必要なアプリがあるので整理する。

Switcher

出典: iPhoneで開いているアプリを切り替える - Apple サポート (日本)

アプリスイッチャーという機能で、現在実行中のアプリを変更可能。Androidはホームの上スワイプ、右ボタンだった。iOSはホームのダブルクリック。

KeePass

パスワード管理アプリ。iOSは別になる。KeePass XCはQtを使っているからビルドできるはずなんだけど。

iOS 向けの Keepass クライアントの備忘録 | hyt adversaria」を見る限り、KeePassiumが良さそう。

Camera/Video

Camera

出典: iPhoneのカメラ解像度を変更し写真/動画サイズを軽くする便利技 – 格安SIM初心者教室

iPhoneのデフォルトのカメラは解像度が高すぎて写真のファイルサイズがかなり大きい。変更できない。せいぜいインカメラで撮影するくらい。

LINE Cameraが定番のカメラアプリらしい。こちらは解像度を柔軟に設定できる。

[Settings]-[Saving]-[Resolution]-[Medium] に変更。これでデフォルトの半分になる。

iPhoneのカメラ解像度を変更し写真/動画サイズを軽くする便利技 – 格安SIM初心者教室」はもっと小さい。こちらがいいだろう。

Low Cameraはもっと小さいが、小さすぎて細かい文字が見えなくて困る。調べた。

2024|無音カメラアプリおすすめランキング11選|無料|高画質 | Good!Apps」が参考になった。

Simple Camがよかった。基本はこの1.2MPか0.3MP。外観だけでいいならLowCameraとか。

rank OS name url Free level MP resolution px size KB square 備考
4 iOS LowCamera Very Low 0.05 144x144 25 x
4 iOS LowCamera Low 0.1 360x360 50 x
4 iOS LowCamera Medium 0.2 480x480 100 x 画質が低すぎる。
4 iOS LINE Camera Medium 2 1512x1512 1024 x 画質をもう少し落としたい。
2 iOS 低画質カメラ - 動画のみ。
3 iOS 0.3MPCamera 480x640 - いまいち。正方形がない。
3 iOS 0.3MPCamera 240x320 - いまいち。正方形がない。
3 iOS 0.3MPCamera 120x160 - いまいち。正方形がない。
3 iOS default Photo 12 3024x4032 2300 x
3 iOS default Photo 9 3024x3024 2600 x
3 iOS Capera Max 12 3024x4032 2300 - 正方形がない。
3 iOS Capera FullHD 1920x1080 -
3 iOS Capera HD 1280x720 -
3 iOS Capera VGA 640x720 -
3 iOS Capera CIF 352x288 -
3 iOS Lo-Fi Cam https://apps.apple.com/bz/app/lo-fi-cam/id1607751695 192x144 - 正方形がない。
3 iOS Lo-Fi Cam https://apps.apple.com/bz/app/lo-fi-cam/id1607751695 352x288 - 正方形がない。
3 iOS Lo-Fi Cam https://apps.apple.com/bz/app/lo-fi-cam/id1607751695 480x360 - 正方形がない。
3 iOS Lo-Fi Cam https://apps.apple.com/bz/app/lo-fi-cam/id1607751695 640x480 - 正方形がない。
3 iOS Lo-Fi Cam https://apps.apple.com/bz/app/lo-fi-cam/id1607751695 960x540 - 正方形がない。
3 iOS Lo-Fi Cam https://apps.apple.com/bz/app/lo-fi-cam/id1607751695 1280x720 - 正方形がない。
5 iOS Simple Cam 0.3 480x480 100 x 必要な範囲を網羅できている。
5 iOS Simple Cam 1.2 960x960 200 x 必要な範囲を網羅できている。
5 iOS Simple Cam 1.9 1200x1200 300 x 必要な範囲を網羅できている。
5 iOS Simple Cam 5 1936x1936 800 x 必要な範囲を網羅できている。
5 iOS Simple Cam 8 2448x2448 1500 x 必要な範囲を網羅できている。
5 iOS Simple Cam 12 x 必要な範囲を網羅できている。
3 iOS MiraCamera 9 3024x3024 2700 x いまいち。
3 iOS Foodie standard 3 1920x1920 1600 x いまいち。
3 iOS SODA standard 3 1920x1920 1800 x いまいち。
2 iOS Pro Camera - x
1 iOS Q Camera x -
1 iOS AutoCam x -
2 iOS SkyCamera 0.8 750x1000 -
2 iOS StageCamHD 1280x720 x
2 iOS StageCamHD 1920x1080 x
2 iOS StageCamHD 3024x3024 x
2 iOS StageCamHD 2592x1936 x
2 iOS StageCamHD 3264x2448 x
2 iOS BeautyPlus x
Video

標準のカメラアプリで正方形の動画の撮影方法。photoで正方形にして、撮影ボタン長押しで正方形で動画撮影可能。右にスライドでモードロックとのこと。

カメラアプリの設定で、 [Preserve Settings]-[Creative Controls] でデフォルト正方形を維持できる。

Record Square Format Videos on iPhone with These Apps

動画撮影アプリのおすすめ人気ランキング【2024年】 | マイベスト

正方形の動画撮影アプリ。

Clips

Apple純正の動画作成ソフト。

Favorite

写真も動画も基本はFILTISTでOK。ただし、ズーム不能なので、ズーム時だけ別アプリを使う。

  • LISTIST=動画・写真=720x720ズームなし。
  • MONOV=動画720x720ズーム。
  • Simple Cam=写真ズーム。

通常はLISTISTで動画も写真も撮影。ズームが必要な場合だけ、MONOV/Simple Cam。

ズーム用を1アプリで対応できればよかったのだが、うまいのがない。LINE Cameraが近かったのだけど、動画が最大30 s。惜しかった。しかたない。

LINE Camera

正方形で写真と動画に対応。サイズも大きすぎない。ズームも対応。ただし、動画は30 sまで。これが惜しい。

QR

Ref: QRコードで開いたWEBサイトの履歴がiPhoneで残らない問題、これで解決 | マイナビニュース.

QRコードを読み取ると、QRコードリーダーアプリ内ブラウザーで開けれて、Safariの履歴に残らない。開いた後に、右下でSafariで開き直すと、タブで開き直せる。基本はすぐ開き直したほうがいい。

いや、標準のQRコードリーダーで開いた後に、Safariで開き直すと、状態が違うのか、吉野家のレシートアンケートなどはエラーになる。サードパーティーアプリを使ったほうがいい。

QRコードアプリおすすめ2選&ランキングTOP10 無料・人気のアプリを編集部が厳選!【2024年】 | iPhone/Androidアプリ - Appliv

QRQRがいい。

Windows

Other

高速スタートアップ

出典:

電源オフにしているのに、バッテリーが何故か減っている。原因は [高速スタートアップ] とのこと。

[コントロールパネル]-[ハードウェアとサウンド]-[電源オプション]-[電源ボタンの動作を選択する]-[現在利用可能ではない設定を変更します]-[シャットダウン設定]-[高速スタートアップを有効にする (推奨)] をオフにする。

勝手にスリープする

システムがすぐにスリープしてしまうのは、「システム無人スリープタイムアウト(System unattended sleep timeout)」機能が働いているためだと考えられる。これは、システムがWOL(Wake On LAN)や何らかのイベントなどで、自発的にスリープから起動した場合、そのまま何も操作せずに放っておくと、一定時間後にまた自動的にスリープ状態に移行するための機能である。

 システム無人スリープのタイムアウトを設定する項目を有効化するには、コマンドプロンプトで以下のpowercfgコマンドを実行すればよい。再起動などは必要なく、[電源オプション]にタイムアウトを設定する項目が表示される。

powercfg -attributes SUB_SLEEP 7bc4a2f9-d8fc-4469-b07b-33eb785aaca0 -ATTRIB_HIDE

これだとダメ。

一応元に戻す。

powercfg -attributes SUB_SLEEP 7bc4a2f9-d8fc-4469-b07b-33eb785aaca0 +ATTRIB_HIDE

Windows10で勝手にスリープになる現象を防ぐための対処法 | TechMemo

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\7bc4a2f9-d8fc-4469-b07b-33eb785aaca0

このレジストリーの値を0から2に変更する。

システム無人スリープタイムアウトが表示されるので0にするとなくなる。らしい。

そのほか、ディスプレイの電源を切るのはやはりだめ。パソコンの省エネ機能が働いて、処理が止まる。

Startup

Microsoft TeamsなどOSの起動時に勝手に自動起動するアプリがある。制御する方法がいくつかある。

[設定]-[アプリ]-[スタートアップ] で制御できる。大半はこれで制御できる。

ほかに、Explorerのshell:startupか%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startupにショートカットがあると、それでも自動起動する。

録音

Windows10で録音がしたい!ボイスレコーダーを使用した音声の録音方法を解説

プレインストールのボイスレコーダーで録音できる。

Theme

Ref: デスクトップのテーマを変更する方法<Windows 11>|サポート|dynabook(ダイナブック公式).

OSのテーマでデフォルトのライト・ダークが決まる。

[スタート]-[設定]-[個人用設定]

Hardware

Keyboard

Ref: FMV Q&A - [Windows 11 キーを押し続けたときに、同じ文字が連続して入力される速度を調整する方法を教えてください。 - FMVサポート : 富士通パソコン].

[コントロールパネル]-[キーボード]

Mouse

[コントロールパネル]-[マウス]

  • ポインター オプション
    • ポインターの速度を選択する (デフォルト=左から6 (6/11))
    • ☑ポインターを自動的に既定のボタンの上に移動する。
    • ☑Ctrlキーを押すとポインターの位置を表示する。

コントロール パネル\すべてのコントロール パネル項目\コンピューターの簡単操作センター\マウスを使いやすくします

  • マウスポインター

Explorer

[フォルダーオプション]-[表示]

  • ファイルおよびフォルダー
    • ☑チェックボックスを使用して項目を選択する。
    • ファイルとフォルダーの表示
      • ☑隠しファイル、隠しフォルダー、および隠しドライブを表示する。
      • □登録されている拡張子は表示しない

Mac

System

Mouse

マウスポインター速度 macデフォルト4/10。

DiscreteScroll

Macのマウスホイールのスクロールは加速度に応じる。高速に動かすと移動量が増える。指が疲れる。

加速度を無視して、Windows同様に一定量の移動にしてくれるのが、DiscreteScroll。

Applications

Macの実行ファイルは.appファイル。これは/Applicationsに配置されている。Laucnhpadはこのディレクトリー内を表示している模様。

lanchctl

Macでシステム起動時の処理を管理する仕組み。Mac OS 10.10以上で導入されている。

GUIなど、システムグローバルで環境変数を反映させたい場合、ここに登録する必要がある。

plistファイルを作成して、それをlanchctl loadして登録になる。unloadで解除になる。

  • plistのファイルのパスは、主に以下2通り。
    • /Library/LaunchAgents/*****.plist : システム全体で有効になる。
    • ~/Library/LaunchAgents/*****.plist : ログインユーザのみで有効になる。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">
  <dict>
  <key>Label</key>
  <string>setenv.M2_HOME</string>
  <key>ProgramArguments</key>
  <array>
    <string>/bin/launchctl</string>
    <string>setenv</string>
    <string>M2_HOME</string>
    <string>/usr/local/Cellar/maven31/3.1.1/libexec</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>ServiceIPC</key>
  <false/>
</dict>
</plist>

上記のような形式。

配置したら、コマンドで即座に反映できる。

launchctl load ~/Library/LaunchAgents/SSLKEYLOGFILE.plist 

値を修正した場合、一度unloadしてからloadする。

Finder

拡張子の表示

https://support.apple.com/ja-jp/guide/mac-help/mchlp2304/mac

  1. MacのFinder  で、「Finder」>「設定」と選択してから、「詳細」をクリックします。
  2. 「すべてのファイル名拡張子を表示」を選択するか選択を解除します。

Screenshot

場所の変更

https://support.apple.com/ja-jp/guide/mac-help/mh26782/mac

起動中の [オプション] で選べる。

保存形式の変更

https://www.pc-koubou.jp/magazine/76550

defaults write com.apple.screencapture type jpg

戻すとき。

defaults write com.apple.screencapture type png

IME

変換Enter 2回

Mac日本語入力、エンター2回でなく1回で変換する方法

https://ischool.co.jp/2019-08-05-japanese-input-in-mac-how-to-convert-at-once-instead-of-twice/

MacのIMEは変換後確定にEnter2回必要。これが面倒。1回にすることができる。

[システム設定]-[キーボード]-[入力ソース]-[編集]-[日本語]-[☑️Windows風のキー操作]

これで1回で済む。

追加辞書

Macの追加辞書に読み込むためのテキストファイルを作成する - Apple サポート (日本)

単語の読み,単語,品詞,,,メモ)

要素 説明
単語の読み 単語の読みをひらがなで入力します。長さは32文字以下にする必要があります。

単語にASCIIカンマやスペースを含める場合は、単語を引用符(“”)で囲みます。

単語にASCII引用符(")を入力する場合は、単語を1バイトの引用符で囲み、1バイトの引用符の周囲に連続する2つの1バイトの引用符を入力します。

単語 目的の変換結果を入力します。1つの単語の長さは64文字以下にする必要があります。単語には、Unicodeコンソーシアムで定義されている文字と記号であれば、どれでも使用できます。
品詞 次のいずれかの品詞を指定します:
  • 普通名詞
  • サ変名詞
  • 人名
  • 地名
  • 形容詞
  • 副詞
  • 接尾語
  • 動詞
  • その他すべての品詞
メモ メモはオプションです。メモの前には2つのASCIIカンマ(,,)を入力します。メモはユーザ辞書には登録されません。

これで登録する。登録手順。

  1. [設定]-[キーボード]-[テキスト入力]-[入力ソース]-[編集]
  2. [日本語-ローマ字入力]-[追加辞書]
  3. ここにドラッグ・ドロップするか、右クリック-[辞書をインストール] を選ぶ。

入力ソースの追加辞書の部分がグレーにな… - Apple コミュニティ

登録方法に癖がある。

  1. 辞書ファイルの拡張子はtxt
  2. 品詞の指定が重要。基本は普通名詞。

Keybind

https://support.apple.com/ja-jp/102650

キー 内容
option-command-電源

option-command-メディア取り出しキー

スリープ

Keychain

Macのキーチェーンアクセスとは?

https://support.apple.com/ja-jp/guide/keychain-access/kyca1083/mac

「macOS」で「キーチェーンアクセス」を使う--パスワードを見つけて変更するには

https://japan.zdnet.com/article/35190535/

dockのkeychainアプリでMacのパスワードマネージャー。KeePassXCと似たようなことができる。OS標準だから安全・安心?

Passwords

Apple、今秋リリース予定のiPhoneとMacに新しいパスワードアプリ搭載

https://news.mynavi.jp/techplus/article/20240613-2964379/

2024年秋に [Passwords] という新しいOSアプリが登場。従来のKeychainをベースに、WiFiパスワードなど一元管理のためのアプリの模様。

こちらを使うのが良さそう。

[システム設定]-[パスワード] からアクセスする模様。

Other

破損App

Macで"壊れているため開けません"の古いappを開く #Mac - Qiita

xattr -rc /Applications/LegacyAwesome.app

これで属性を除去して解決することが多い。

UNIX

Other

cron

About

UNIX系OSのジョブ管理ツール。タスクの定期実行を可能にする。

cronの名前は時間を意味するギリシア語chronosに由来する。

指定した時間に1回だけ実行するなら、atがある。電子メールの送信などで役立つ。

Format

cronの動作はcrontab (cron table) ファイルで指定する。

以下の形式になっている。

# ┌───────────── 分(0〜59)
# │ ┌───────────── 時(0〜23)
# │ │ ┌───────────── 日(1〜31)
# │ │ │ ┌───────────── 月(1〜12)JAN-DEC
# │ │ │ │ ┌───────────── 曜日(0〜6〈日〜土〉、一部のシステムでは7も日曜日) SUN-SAT
# │ │ │ │ │
# │ │ │ │ │
# * * * * * [予約するコマンド]

日時部分はいくつか指定方法がある。

    • すべて。
  • /n: nごとに実行 (*/5)。
  • ,: 複数の時間間隔を指定 (1,2,3)
  • -: 範囲。
  • %: コマンド内の%はエスケープされていないと改行文字に変換され、標準入力としてコマンドに渡される。

ユーザーはcrontab -eで自分の設定ファイルを編集できる。crontabファイルの直接編集は非推奨で、crontabコマンドでの修正が推奨されている。

ファイルの他に標準入力も受け付ける。

Command
  • 編集: crontab -e
  • 表示: crontab -l
  • 削除: crontab -r

-u: 実行ユーザー指定。

オプションを指定しない場合、引数のファイルの内容のcronを実行する。引数がなければ標準入力。

既存のcrontabの内容を編集したい場合、方法が2種類ある。

  1. crontab -e
  2. (crontab -l ; echo ) | crontab: crontab -lで現在のcrontabの内容が出力されるので、これを加工してcrontabに再度流し込む。
  3. crontab [file]

2の方法は融通が利く。crontab [file] でファイルにcrontabの内容を記載しておいて、これをVCSで管理というのも悪くはない。

Log

/var/log/cron

cron - Verify if crontab works - Ask Ubuntu

デーモン自体の確認は以下。

systemctl status cron
systemctl restart cron

cronへの登録時のコマンドが標準出力を持つ場合、メールでユーザーに内容を送信する。

この挙動が鬱陶しいので、cronへの登録時にログを全て破棄するような設定が奨励されることがある。

>/dev/null 2>&1

crontabのガイドライン #CentOS - Qiita

ただ、全部捨てると失敗時も、いつから失敗しているかの情報も一切わからない。残したほうがいい。

>>/var/log/log_$(date +\%Y\%m\%d).log 2>&1
環境変数

POSIXにあるように、HOME/LOGNAME/PATH/SHELLのみが最低限デフォルト値が用意されていて存在が保証される。

cronの環境変数。

echo '* * * * * env >/tmp/env.log' | crontab

FROM php:7.3.23-apacheのDebian 10の場合。

HOME=/root
LOGNAME=root
PATH=/usr/bin:/bin
SHELL=/bin/sh
PWD=/root

PATHはcommand -p getconf PATHを参照していると思われる。

cronに登録したコマンドが動作しない理由の一つがPATH。注意する。crontab内では変数の代入などは独自拡張になる。基本は実行するスクリプトファイルか、最後のコマンド実行部分で自分で設定する。

anacron

システムのcrontab (cronとanacronの違い) #Linux - Qiita

cronの亜種にanacronがある。

  • 遅延実行: サーバーダウンなどでスキップされた処理を、復帰時に実行する。
  • 負荷分散: 最小1日単位のスケジュールしかできない代わりに、自動でサーバーの負荷をみて分散実行してくれる。
guide

crontabのガイドライン #CentOS - Qiita

crontabでの実行開始時間は検討が必要。0分と00:00は他のサブシステムの定期タスクの密集時間のことが多いのでここは避けて5分や10分にずらすのが無難。

systemd

GNU/Linux向けのシステム管理ソフトウェア。大量のソフトの統合。サーバーソフトウェアの管理で非常に重要。

systemdのメインデーモンの/sbin/systemdは/sbin/initにリンクされていて、既存のSysV initを置換する最初のプロセスとなる。

ssytemd自体は本体の他に4のコンポーネントから構成。

  1. utility
  2. daemon
  3. target: ユニットのグループ化や処理の順序や依存関係の定義。unitの一種。
  4. unit: systemdの管理処理の単位。System V initのサービスに相当。

systemdはsystemdの管理対象となる処理の単位のユニットでシステムを管理する。ユニットは12のタイプがある。

  1. service: デーモンの開始と制御担当。
  2. socket
  3. target
  4. device
  5. mount
  6. automount
  7. timer
  8. swap
  9. path
  10. slice
  11. scope
  12. special

特に重要なのはserviceユニット。

Unit

systemd.unit

ユニットファイルはini形式のテキストファイル。

Unit File Load Path

https://chatgpt.com/c/6753b416-3d48-800b-ae6d-fcb43df956e3

いくつもの検索パスがある。が、基本的にはいかに配置する。

  • system: /etc/systemd/system/
  • $XDG_CONFIG_HOME/systemd/user/ ($XDG_CONFIG_HOMEのデフォルトは~/.config)

従って、基本は~/.config/systemd/userに配置すればいい。

systemctl

systemctl

systemdとservice managerの制御用のコマンド。状態管理からユニットの登録・削除など基本はこのコマンドとサブコマンドで全部対応する。非常に重要。

systemctl [OPTIONS...] COMMAND [UNIT...]

--userオプションでユーザー扱いしない場合、sudoで管理者権限が必要。

基本的な流れは以下となる。

  1. ユニットファイル (.service) を作成して配置 (/etc/systemd/system or ~/.config/systemd/user)。
  2. systemctl enable [unit] で登録。
  3. systemctl restart [unit] で起動。
Commands

COMMANDは種類ごとに以下を解釈。大量にある。

Unit Commands (Introspection and Modification)

ユニット自体を制御するコマンド。

  • list-units
  • list-automounts
  • list-paths
  • list-sockets
  • list-timers
  • is-active
  • is-failed
  • status
  • show
  • cat
  • help
  • list-dependencies
  • start
  • stop
  • reload
  • restart
  • try-restart
  • reload-or-restart
  • try-reload-or-restart
  • isolate
  • kill
  • clean
  • freeze
  • thaw
  • set-property
  • bind
  • mount-image
  • service-log-level
  • service-log-target
  • reset-failed
  • whoami

重要なもの。

  • 情報
    • status: ユニットの情報を表示。動作確認。稼働やエラーの確認などができる。問題があったらまずこれで確認。
    • list-units: systemdのメモリー内に存在 (実行中・ロード済み) するユニットを一覧。
  • 操作
    • restart: 手動再起動。
    • start: 手動起動。
    • stop: 手動停止。
  • 設定
    • reload: ユニットにユニット固有の設定のリロードを指令する。apache2の場合httpd.conf。
    • daemon-reload: ユニットの設定をリロードする。apacheの場合apache.service。
Unit File Commands
  • list-unit-files
  • enable
  • disable
  • reenable
  • preset
  • preset-all
  • is-enabled
  • mask
  • unmask
  • link
  • revert
  • add-wants
  • edit
  • get-default
  • set-default

ユニットファイルの操作。

  • list-unit-files: システムにインストール済みの全ユニットファイルを一覧。list-unitsと異なり、読み込んでいないものも表示する。ユニットファイルの存在と有効・無効状態の確認に使う。あまり使わないと思う [https://chatgpt.com/c/6753b416-3d48-800b-ae6d-fcb43df956e3]。
  • enable: ユニットを有効にする。設定ファイルの場所からシンボリックリンクを作成する。
  • disable: ユニットを無効にする。シンボリックリンクを削除。


  • Machne Commands
    • list-machines
  • Job Commands
    • list-jobs
    • cancel
  • Environment Commands
    • show-environment
    • set-environment
    • unset-environment
    • import-environment
  • Manager State Commands
    • daemon-reload
    • daemon-reexec
    • log-level
    • log-target
    • service-watchdogs
System Commands
  • is-system-running
  • default
  • rescue
  • emergency
  • halt
  • poweroff
  • reboot
  • kexec
  • soft-reboot
  • exit
  • switch-root
  • sleep
  • suspend
  • hibernate
  • hybrid-sleep
  • suspend-then-hibernate

特に便利なもの。

  • poweroff: 電源をオフにできる。
Options

オプションも大量にある。

  • -t, --type=
  • --state=
  • -p, --property=
  • -P
  • -a, --all
  • -r, --recursive
  • --reverse
  • --after
  • --before
  • --with-dependencies
  • -l, --full
  • --value
  • --show-types
  • --job-mode=
  • -T, --show-transaction
  • --fail
  • --check-inhibitors=
  • -i
  • --dry-run
  • -q, --quiet
  • --no-warn
  • --no-block
  • --wait
  • --user
  • --system
  • --failed
  • --no-wall
  • --global
  • --no-reload
  • --no-ask-password
  • --kill-whm
  • --kill-value=
  • -s, --signal=
  • --what=
  • -f, --force
  • --message=
  • --now
  • --root=
  • --image=
  • --image-policy=
  • --runtime
  • --preset-mode=
  • -n, --lines=
  • -o, --output=
  • --firmware-setup
  • --boot-loader-menu=
  • --boot-loader-entry=
  • -reboot-argument=
  • --plain
  • --timestep=
  • --mkdir
  • --marked
  • --read-only
  • --drop-in=
  • --when
  • --stdin
  • -H, --host=
  • -M, --machine=
  • -C, --capsule=
  • --no-pager
  • --legend=
  • -h, --help
  • --version

特に重要なオプション

  • --user: ユーザーとしてservice managerを呼び出す。このオプションを指定することでユーザー権限でsystemdを使える。
  • --system: システムとして実行。デフォルト。

systemd-system.conf

systemd-system.conf

systemdの設定ファイルとその格納場所。

システムとユーザーとで参照するファイル・場所が異なる。

  • システム: 以下のsystem.confとsystem.conf.d/*.confをこの優先順位で解釈。
    • /etc/systemd
    • /run/systemd
    • /usr/lib/systemd
  • ユーザー: ホームディレクトリー、システムの優先順位でuser.confとuser.conf.d/*.conf。
    • ~/.config/systemd
    • システムのディレクトリー (/etc/systemd /run/systemd /usr/lib/systemd)

特に、ユーザーの~/.config/systemdが重要。ユーザーが自由にできる。

user

基本はOS管理なのでroot権限で動作する。が、ユーザー別に登録したりもできる。 そのポイントを整理する。

  1. ~/.config/systemd/user/*.serviceにユニットファイルを配置。
  2. systemctlコマンドには常に--userオプションを指定する。
  3. systemctl --user enable [service]
  4. systemctl --user restart [service]

なお、ユーザーユニットは、ユーザーがログイン中のみ有効。ログアウト中も稼働させるには、lingerでの登録が必要。

このlingerでの登録が対応していないことが共用サーバーには多い。

その場合はしかたないので、cronで終了していたら再起動するコマンドを登録する。

pgrep -f "node index.js" > /dev/null || (cd index.jsがあるパス && node index.js)

Other

辞書

IMEの辞書登録の駆使で作業効率が大幅に変わる。

頻出単語を入力しておくと良い。

  • 個人情報
    • 住所
    • 氏名
    • 電話番号
    • メールアドレス
  • 人名
    • 同僚などよく連絡する人の苗字は登録しておくと楽かも。
  • 挨拶
    • ありがとうございました。
    • よろしくお願いします。
    • ご確認お願いします。
  • 数字
    • 上付き
    • 下付き
    • 丸付き
じゅうしょ
しめい
でんわ 333-4444-4444
でんわ 111111111111
めあど
めーる
あり ありがとうございました。 普通名詞
あり ありがとうございます。 普通名詞
おね お願いします。 普通名詞
ごか ご確認お願いします。 普通名詞
ごた ご対応ありがとうございました。 普通名詞
ごた ご対応ありがとうございます。 普通名詞
よろ よろしくお願いします。 普通名詞


RDP

VNCとの違い

* https://www.routerhosting.com/rdp-vs-vnc-remote-desktop-comparison/

* https://superuser.com/questions/32495/whats-the-difference-between-rdp-vs-vnc

* https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97

* https://ja.wikipedia.org/wiki/Virtual_Network_Computing

* https://ja.wikipedia.org/wiki/Remote_Desktop_Protocol

RDPは意味を送受信している、VNCは画像を送受信している。扱うデータ量・負荷が違う。

教育だとか、サポートなどではVNCが有利。普段の使用ではRDPのほうが有利。

リモートデスクトップ

https://www.tmp1024.com/articles/solve-black-screen-when-ubuntu-remote-desktop

Ubuntu 19.10でのWindows 10からのリモートデスクトップの手順を整理する。

まずxrdp (0.9.9-1) をインストールする。

sudo apt install xrdp

その後、Ubuntuはサインアウト・ログアウトする。

Windows 10のリモートデスクトップ (mstsc.exe) を実行して、Ubuntuのホスト名やIPアドレスで接続する。

RDPでのログインユーザーが既にログイン済みだと画面が真っ黒になるらしい。

[リモートデスクトップでアクセスしたら真っ黒の画面が表示される問題の解決 \| 人と情報](https://www.tmp1024.com/articles/solve-black-screen-when-ubuntu-remote-desktop)

そのほか、ログイン時に認証ダイアログが毎回表示される。これはどうにかしたい。

それ以外は良好。

Keybind

App Menu

いわゆる右クリックのコンテキストメニュー。これをショートカットキーで実現する方法一応ある。

Macの場合。「Macの右クリック - Apple サポート (日本)」にあるように、Control-左クリックか、2本指クリック。

上記にあるように、F12でもできるらしい。ただし事前設定が必要。

[System]-[Accessibility]-[Pointer Control]-[Alternate pointer actions]=[on] にする。これでF12で開ける。右側のオプションボタンで変更もできる。

Key code

Mac

Ref: macos - Where can I find a list of Mac virtual key codes? - Stack Overflow.

以下のコマンドで一覧を確認できる (Mac v14.2.1、MacBook Air (M1, 2020)、 JIS配列)。

grep 'kVK_.*=' /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h

一覧。

  kVK_ANSI_A                    = 0x00,
  kVK_ANSI_S                    = 0x01,
  kVK_ANSI_D                    = 0x02,
  kVK_ANSI_F                    = 0x03,
  kVK_ANSI_H                    = 0x04,
  kVK_ANSI_G                    = 0x05,
  kVK_ANSI_Z                    = 0x06,
  kVK_ANSI_X                    = 0x07,
  kVK_ANSI_C                    = 0x08,
  kVK_ANSI_V                    = 0x09,
  kVK_ANSI_B                    = 0x0B,
  kVK_ANSI_Q                    = 0x0C,
  kVK_ANSI_W                    = 0x0D,
  kVK_ANSI_E                    = 0x0E,
  kVK_ANSI_R                    = 0x0F,
  kVK_ANSI_Y                    = 0x10,
  kVK_ANSI_T                    = 0x11,
  kVK_ANSI_1                    = 0x12,
  kVK_ANSI_2                    = 0x13,
  kVK_ANSI_3                    = 0x14,
  kVK_ANSI_4                    = 0x15,
  kVK_ANSI_6                    = 0x16,
  kVK_ANSI_5                    = 0x17,
  kVK_ANSI_Equal                = 0x18,
  kVK_ANSI_9                    = 0x19,
  kVK_ANSI_7                    = 0x1A,
  kVK_ANSI_Minus                = 0x1B,
  kVK_ANSI_8                    = 0x1C,
  kVK_ANSI_0                    = 0x1D,
  kVK_ANSI_RightBracket         = 0x1E,
  kVK_ANSI_O                    = 0x1F,
  kVK_ANSI_U                    = 0x20,
  kVK_ANSI_LeftBracket          = 0x21,
  kVK_ANSI_I                    = 0x22,
  kVK_ANSI_P                    = 0x23,
  kVK_ANSI_L                    = 0x25,
  kVK_ANSI_J                    = 0x26,
  kVK_ANSI_Quote                = 0x27,
  kVK_ANSI_K                    = 0x28,
  kVK_ANSI_Semicolon            = 0x29,
  kVK_ANSI_Backslash            = 0x2A,
  kVK_ANSI_Comma                = 0x2B,
  kVK_ANSI_Slash                = 0x2C,
  kVK_ANSI_N                    = 0x2D,
  kVK_ANSI_M                    = 0x2E,
  kVK_ANSI_Period               = 0x2F,
  kVK_ANSI_Grave                = 0x32,
  kVK_ANSI_KeypadDecimal        = 0x41,
  kVK_ANSI_KeypadMultiply       = 0x43,
  kVK_ANSI_KeypadPlus           = 0x45,
  kVK_ANSI_KeypadClear          = 0x47,
  kVK_ANSI_KeypadDivide         = 0x4B,
  kVK_ANSI_KeypadEnter          = 0x4C,
  kVK_ANSI_KeypadMinus          = 0x4E,
  kVK_ANSI_KeypadEquals         = 0x51,
  kVK_ANSI_Keypad0              = 0x52,
  kVK_ANSI_Keypad1              = 0x53,
  kVK_ANSI_Keypad2              = 0x54,
  kVK_ANSI_Keypad3              = 0x55,
  kVK_ANSI_Keypad4              = 0x56,
  kVK_ANSI_Keypad5              = 0x57,
  kVK_ANSI_Keypad6              = 0x58,
  kVK_ANSI_Keypad7              = 0x59,
  kVK_ANSI_Keypad8              = 0x5B,
  kVK_ANSI_Keypad9              = 0x5C
  kVK_Return                    = 0x24,
  kVK_Tab                       = 0x30,
  kVK_Space                     = 0x31,
  kVK_Delete                    = 0x33,
  kVK_Escape                    = 0x35,
  kVK_Command                   = 0x37,
  kVK_Shift                     = 0x38,
  kVK_CapsLock                  = 0x39,
  kVK_Option                    = 0x3A,
  kVK_Control                   = 0x3B,
  kVK_RightCommand              = 0x36,
  kVK_RightShift                = 0x3C,
  kVK_RightOption               = 0x3D,
  kVK_RightControl              = 0x3E,
  kVK_Function                  = 0x3F,
  kVK_F17                       = 0x40,
  kVK_VolumeUp                  = 0x48,
  kVK_VolumeDown                = 0x49,
  kVK_Mute                      = 0x4A,
  kVK_F18                       = 0x4F,
  kVK_F19                       = 0x50,
  kVK_F20                       = 0x5A,
  kVK_F5                        = 0x60,
  kVK_F6                        = 0x61,
  kVK_F7                        = 0x62,
  kVK_F3                        = 0x63,
  kVK_F8                        = 0x64,
  kVK_F9                        = 0x65,
  kVK_F11                       = 0x67,
  kVK_F13                       = 0x69,
  kVK_F16                       = 0x6A,
  kVK_F14                       = 0x6B,
  kVK_F10                       = 0x6D,
  kVK_F12                       = 0x6F,
  kVK_F15                       = 0x71,
  kVK_Help                      = 0x72,
  kVK_Home                      = 0x73,
  kVK_PageUp                    = 0x74,
  kVK_ForwardDelete             = 0x75,
  kVK_F4                        = 0x76,
  kVK_End                       = 0x77,
  kVK_F2                        = 0x78,
  kVK_PageDown                  = 0x79,
  kVK_F1                        = 0x7A,
  kVK_LeftArrow                 = 0x7B,
  kVK_RightArrow                = 0x7C,
  kVK_DownArrow                 = 0x7D,
  kVK_UpArrow                   = 0x7E
  kVK_ISO_Section               = 0x0A
  kVK_JIS_Yen                   = 0x5D,
  kVK_JIS_Underscore            = 0x5E,
  kVK_JIS_KeypadComma           = 0x5F,
  kVK_JIS_Eisu                  = 0x66,
  kVK_JIS_Kana                  = 0x68

Keyhac

About

Mac版はmac_portブランチ。

Mac

Mac版は英語サイト (craftware - Keyhac) からじゃないとダウンロードできないので注意する。

マニュアル: keyhac: User Manual

またWindowsと異なり、exeファイルと同じ場所のconfig.pyを読み込んだりはしてくれない。

$HOME/Library/Application Support/Keyhac/に配置する必要がある。

また、そもそもキーコード自体が異なるので、一部は専用に作る必要がある。

Base

config.py内にconfigure(keymap)関数を定義して、この中で設定を記述していく。

引数のkeymapにはKeymapオブジェクトが渡されるのでこれを操作することで設定する。

    keymap_global = keymap.defineWindowKeymap()

Keymap.defineWindowKeymapでWindowKeymapオブジェクトを返す。このオブジェクトに対してグローバルキーマップを定義していく。

これが基本。

基本的に全部文字列。キーコードを指定する部分は数値も可能だが、10進数の文字列にしておいたほうがいい。

Modifier

keymap.defineModifierで、Shift/Ctrlのように同時押しに意味のあるキー (modifier) を追加できる。

スペースの左右のキーにShift/Ctrl相当の機能をもたせる上で非常に重要。

# ユーザモディファイアキーの定義
keymap.defineModifier( 235, "User0" )

上記の例では235のキーコードにU0のモディファイアキーを設定している。U0はUser0の短縮表記。ただし、Windows専用。短縮表記は使わない方がいい。

Policy
  • スペースの左右のキー (Windows=変換/無変換、Mac=英数/かな) をモディファイアキーに追加。
  • LSS/RSSと表記 (Left Side Space/Right Side Space)
  • Ctrl/Cmd=CCと表記。
  • SpaceはCtrlのワンショットモディファイア。
  • LSS=Shift、RSS=U0、Space=CC。

hjklのVimのキー移動を定義したいから、RSSはU0。これは確定。

U0の操作にShiftを組み合わせたいことがあるからLSS=Shiftがいい。

キーの違いで、Windows/Macで共有と独立部分がある?