2021-01-13_過去の小ネタメモ

概要

2013-2015年ぐらいにまとめていたメモを発掘したのでせっかくなので このブログ?で公開しておきます。Linux関係の小ネタが中心です。

LinuxOS名の抽出

1
$c cat /etc/os-release | grep "^NAME" | tr -d '" ' | sed s/^NAME=//

ubuntu,centosは問題なし

centos7 selinuxの無効化手順

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 現状有効になっているか
getenforcing

Enforcingだったら有効

# 一時的に無効にする
setenforce permissibeve

# 恒久的に無効にする
grep ^SELINUX= /etc/selinux/config
SELINUX=disabled

mariadbの予約語を項目名に使いたいときはバッククォートで囲む

Bash exprコマンドでの掛け算の方法

exprで掛け算しようとしたら構文エラーが発生した。原因は*はワイルドカードで展開されるのでエスケープが必要。

因みに二重括弧での計算展開する場合はエスケープ不要なのでこっちの方が便利かも。

1
2
3
expr 2 \* 2

echo $((2*2))

powershellを使ってネットワークのカテゴリーを変更する

Windows10 有線、無線LANの同時接続について

  • https://support.microsoft.com/ja-jp/help/2835190

Linux Bash関係のメモ

Gmailで迷惑メールじゃないのに迷惑メール扱いされた時の対応

  1. 左側のメニューから迷惑メールを開く
  2. 対象の迷惑メール扱いされているメールのチェックボックスをオン
  3. 画面上部の_[color=red]迷惑メールではない[/color]_をクリック

※たぶん次回から迷惑メールフィルタには引っかからないはず

linuxでmysqlコマンドを直接発行する

シェルスクリプトから実行したいときに。

1
mysql -uユーザ名 -pパスワード DB名 -e'show tables;'

dokuwikiStickのhtaccessの編集後diff

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[d01@d02 dokuwiki]$ diff .htaccess.dist .htaccess
25,35c25,35
< #RewriteEngine on
< #
< #RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
< #RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
< #RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
< #RewriteRule ^$                        doku.php  [L]
< #RewriteCond %{REQUEST_FILENAME}       !-f
< #RewriteCond %{REQUEST_FILENAME}       !-d
< #RewriteRule (.*)                      doku.php?id=$1  [QSA,L]
< #RewriteRule ^index.php$               doku.php
< #
---
> RewriteEngine on
>
> RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
> RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
> RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
> RewriteRule ^$                        doku.php  [L]
> RewriteCond %{REQUEST_FILENAME}       !-f
> RewriteCond %{REQUEST_FILENAME}       !-d
> RewriteRule (.*)                      doku.php?id=$1  [QSA,L]
> RewriteRule ^index.php$               doku.php
>
39,40c39,40
< #RewriteBase /dokuwiki
< #
---
> RewriteBase /
>
[d01@d02 dokuwiki]$

cygwinで動いているサービスの消し方

  • http://heroween.hateblo.jp/entry/2014/07/08/221841

opensshをサービス登録後、消したくなったのでその手順

1
2
3
4
5
6
7
8
#動いているサービスを確認
cygrunsrv -L

#動いているサービスを停止
cygrunsrv --stop sshd

#サービスを削除
cygrunsrv --remove sshd

windowsでのシンボリックリンクの作り方

ディレクトリは/Dオプションを使用

1
mklink /D リンク名 ターゲット

mysqlログイン時に接続DBも指定する

Postgresqlで操作していた時のような感覚。useは面倒。

1
mysql -u root -p -D dbname

systemdでOS起動時に処理を実行

crontabに下記のように登録する。crontabの機能なのでinitvでも設定可能な気がする。

1
@reboot 処理

servlet jspで便利そうな記事

  • EL式
  • http://qiita.com/chihiro/items/50131e8488e1b0cd1cdd

sambaにwindowsから接続した際にフォルダの中身が表示されない

フォルダには実行権限がついていないとアクセス拒否される。

powershellで簡単にpcの製造情報を調べる方法

http://win.just4fun.biz/?PowerShell/PC%E3%81%AE%E8%A3%BD%E9%80%A0%E5%85%83%E3%82%84%E5%9E%8B%E7%95%AA%E3%82%92%E7%B0%A1%E5%8D%98%E3%81%AB%E8%AA%BF%E3%81%B9%E3%82%8B%E6%96%B9%E6%B3%95#d0e240f3

ls -l の結果を指定のフォーマットで出力

ls -la --time-style=+"%Y%m%d"

ダブルクォートで囲まれた時の\の指定方法

\\ ダブルクォート4つで指定できる

シェル_特定の文字列から特定の文字列までの間を抜き出す

gawkで簡単に実現できる

1
gawk '/開始文字列/,/終了文字列/'

以下ログ(プロンプト表示は省略)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 cat hoge.log
20170713 START

logloglogloglog
logloglogloglog
logloglogloglog
logloglogloglog
logloglogloglog

20172013 END

20170714 START

hogehogehogehoge
hogehogehogehoge
hogehogehogehoge
hogehogehogehoge
hogehogehogehoge

20170714 END
#
# cat hoge.log  | gawk '/20170713 START/,/20172013 END/'
20170713 START

logloglogloglog
logloglogloglog
logloglogloglog
logloglogloglog
logloglogloglog

20172013 END
# 

eclipseのエディタの文字エンコードの変更方法

ウィンドウ => 設定 => 一般 => ワークスペース => 『テキスト・エンコーディング』を変更

psqlでの操作方法

よく忘れるのでメモ。

ログイン方法

1
2
3
psql db名

psql -U ユーザー名 db名

|コマンド|用途| |\q|psqlからログアウト| |\l|データベース一覧| |\d|レーブル一覧| |\du|ロール一覧|

useraddで登録できるユーザー名の最大文字数

英語のuseradd manページに書かれていた。

Usernames may only be up to 32 characters long.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
256だから32文字?
#r getconf LOGIN_NAME_MAX
256

20文字
#r useradd 12345678901234567890
30文字
#r useradd 123456789012345678901234567890
40文字でエラー
#r useradd 1234567890123456789012345678901234567890
useradd: '1234567890123456789012345678901234567890' はユーザ名に使えません
31文字-33文字 (33文字目でエラー
#r useradd 1234567890123456789012345678901
#r useradd 12345678901234567890123456789012
#r useradd 123456789012345678901234567890123
useradd: '123456789012345678901234567890123' はユーザ名に使えません

※因みにlibcやglibcの古いバージョンだと8文字までの場合も合ったらしいので、7文字制限を運用規則でしている可能性はある。

linuxで処理できる最大文字列長の調べ方

1
2
#r getconf ARG_MAX
2621440

postgresqlのデーターベース名変更

1
ALTER DATABASE oldname RENAME TO newname;

tomcatのログローテ

catalinaとgc以外のログはserver.xmlで制御しているらしい

tcpdump

tcpdump -w ファイル名 → キャプチャ結果をファイルへ書き出し

tcpdump -r ファイル名 → キャプチャファイルを読み込み内容を表示

tcpdump -vv → ファイルには書き出さず、キャプチャ内容の詳細を表示

tcpdump -X → 16進コードと一緒にASCIIコードも表示する

tcpdump -A → ASCIIコードを表示

※httpsなど暗号化されたdumpは平文になってないのでASCIIコードは文字化けしたような表示になる。

pacemakerで使用するsfex領域の容量について

https://www.suse.com/ja-jp/documentation/sle_ha/book_sleha/data/sec_ha_storageprotection_exstoract.html#

100MB程度で十分。

centos6でipv6無効(sysctl)

/etc/sysctl.confに下記内容を追加

1
2
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

追加後 sysctl -p で設定値を反映

/etc/sysconfig/networkを下記内容に編集

1
2
3
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=hoge

/etc/sysconfig/network/ifcfg-eth0を下記内容に編集

1
IPV6INIT=no

vagrant

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
C:\Users\d01>vagrant box add bento/centos-6.7
==> box: Loading metadata for box 'bento/centos-6.7'
    box: URL: https://atlas.hashicorp.com/bento/centos-6.7
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) parallels
2) virtualbox
3) vmware_desktop

Enter your choice: 2
==> box: Adding box 'bento/centos-6.7' (v2.2.7) for provider: virtualbox
    box: Downloading: https://atlas.hashicorp.com/bento/boxes/centos-6.7/versions/2.2.7/providers/virtualbox.box
==> box: Box download is resuming from prior download progress
    box: Progress: 100% (Rate: 3948k/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'bento/centos-6.7' (v2.2.7) for 'virtualbox'!

C:\Users\d01>

iptables

  • iptables -L で内容確認。
  • iptables -L -v で詳細表示。どのNICかまで分かる。

条件の追加は iptables -A または -I の後に条件を記載する。 サービスの再起動は不要。

/etc/sysconfig/iptables ファイルがサービス起動時に読まれる。上記の-Aや-Iで追加した場合は一時的に反映されるが、サービスリスタートで元に戻る。

宿題:iptables コマンドで追加した設定値を永続的に反映する方法。

sedの使い方

  • 指定行(10行目)の表示
1
sed -n 10p faile

-指定行(10-15行)の表示

1
sed -n 10,15p faile

postgresqlでWALLOGが100%になったら

pg_xlogを消すのは絶対NG

pg_xlog内に保管されているファイルはDBで使い回すので、消すとpostgresqlが起動できなくなる(WALが壊れた状態)

WALが壊れた状態になった場合、walのリセットを実行すればpostgresは起動できるが、pg_xlogの内容が失われるので注意すること。

1
pg_resetxlog <dataのディレクトリ>

正式な復旧手順

  1. pg_xlogを容量の大きいディスクへ退避させ、postgresqlのpg_xlog領域に設定する
  2. postgresqlを起動し、pg_xlogが書き込まれるのを待つ

  3. max_wal_sizeに指定された容量まで書き込まれたらpostgresqlを停止し本来のpg_xlog領域に戻す

  4. 対応完了なのでpostgresqlを起動する

loggerコマンド

コマンド経由でログを書き込む

1
logger local3.info hogehoge