Linux
いろいろメモ
sudo
パスワード不要にする雑な設定
# cat /etc/sudoers.d/nopass
%wheel ALL=(ALL) NOPASSWD: ALL
Debian系はグループ名はwheelでなくsudoになる。
%sudo ALL=(ALL) NOPASSWD: ALL
コマンドでパス不要設定
rhel系
cat <<__EOL__ > /etc/sudoers.d/nopass
%wheel ALL=(ALL) NOPASSWD: ALL
__EOL__
debian系
cat <<__EOL__ > /etc/sudoers.d/nopass
%sudo ALL=(ALL) NOPASSWD: ALL
__EOL__
環境変数
設定
export PATH=$PATH:~/bin
削除
環境変数EDITORを削除するには
export -n EDITOR
シェル変数に残るのでecho $EDITORの出力は変化しないが環境変数としては消える。
シェル変数との区別
echo $foobarで結果が返っても、それがシェル変数なのか環境変数なのかはこれだけだとわからない。
見分け方としては
printenv foobar
で出力があれば環境変数、なければ環境変数は未設定(echoで値が出力されるならシェル変数にセットされている)
一覧であれば、env, printenv, export を実行すれば環境変数一覧が得られる。
未定義時にエラーにする
${環境変数名:?エラーメッセージ}を参照する。(空文字を許容する場合は:は外して?のみ)
$ echo $EDITOR2
$ echo ${EDITOR2:?not defined}
bash: EDITOR2: not defined
$ export EDITOR2=zzz
$ echo ${EDITOR2:?not defined}
zzz
エラー番号
| No | code | 概要 |
|---|---|---|
| 1 | EPERM | Operation not permitted / not super-user |
| 2 | ENOENT | No such file or directory |
| 5 | EIO | I/O error |
| 6 | ENXIO | No such device or address |
シングルユーザーモード
ubuntu
GRUBメニュー画面でeし、
setparams 'Ubuntu'
recordfail
load_video
gfxmode $linux_gfx_mode
[...]
linux /vmlinuz-... root=/dev/... ...
のlinuxで始まる行の末尾にsingleを追記してCtrl-xで起動する。
ルートファイルシステムをmountしたくない場合はsingleでなくbreakを追記。
GRUB
ブートローダーが壊れてgrub rescueモードになった場合。
まずlsで/bootがあるパーティションを探す。
grub rescue> ls
(hd0) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1)
grub rescue> ls (hd0,gpt1)
(hd0,gpt3): Filesystem is unknown.
grub rescue> ls (hd0,gpt3)
(hd0,gpt3): Filesystem is ext2.
grub rescue> ls (hd0,gpt3)/
./ ../ lost+found/ bin boot/ dev/ etc/ home/ lib lib32 lib64 libx32 media/ mnt/
opt/ proc/ root/ run/ sbin snap/ srv/ sys/ tmp/ usr/ var/
grub rescue>
みつかったらset prefix
grub rescue>set prefix=(hd0,gpt3)/boot/grub
grub rescue>set root=(hd0,gpt3)
grub rescue>insmod normal
grub rescue>insmod linux
grub rescue>normal
これでブートできる。
Linuxが起動したらGRUBを再インストール
sudo update-grub
sudo grub-install /dev/sda
アップグレード
Fedora
Upgrading Fedora Using DNF System Plugin :: Fedora Docs
sudo dnf upgrade --refreshsudo rebootsudo dnf system-upgrade download --releasever=41# 41はターゲットバージョン。飛び級がサポートされるのは2段階(39 -> 41)sudo dnf system-upgrade reboot
Ubuntu
sudo apt-get updatesudo apt-get upgradesudo apt-get dist-upgradesudo apt-get autoremovesudo do-release-upgrade
If you continue, an additional ssh daemon will be started at port '1022'.
Do you want to continue?
SSH経由だと上記警告が出るが続けるなら続ける。
あとは進めていくと確認が出るので都度進める。
aptラインの編集は不要。(do-release-upgradeを叩けば勝手にやってくれる)
ただしサードパーティのaptラインを追加してる場合はアップグレードに対応してない場合もあるので注意。