+ Unix関連のtips
created 2004-06-14 modified 2004-11-30
tips:/dev/random メモ
tips:CDROMから isoファイル
tips:EUC-JPなFedoraでのman文字化け対策
tips:FTPやTELNETの自動化
tips:Fedoraでパケットの転送を行う
tips:Gnome3左上アクティビティ マウス ホットコーナー無効
tips:Solaris10のTICK数 設定
tips:coreが出てくれない場合
tips:cssのセレクター
tips:eth0になるかeth1になるか
tips:iBus-Anthyで常に半角spc
tips:isoのマウント
tips:putty上のemacsでBSがあやしい動きをする件
tips:ssh exit時のハングアップ防止
tips:syslog高速化
tips:こんなコマンドあんなコマンド
tips:カーネル関係の調べ方メモ
tips:サブネット内のホスト数が多くてパケット導通しない
tips:シリアルログイン
tips:デーモン起動・停止でI18Nなメッセージが出る件
tips:プロセッサ固定
tips:一般ユーザでrpmbuild
/dev/random メモ
2chからコピペ。知らなかった。
"Fedora 総合スレッド Part 48" より。
勉強になります。でも、質問者の問題がこれだったかは不明。こんなレスも。
"Fedora 総合スレッド Part 48" より。
637 名前:login:Penguin 投稿日:2010/12/06(月) 18:31:54 ID:eBcICc5w fedora14です。 起動時やシャットダウン時に時折固まって、キーボードから入力信号を送ってやると 動き出すという現象があります。 インストール時でも上記と同様の現象があり、砂時計の動きが止まったらマウスを動 かすかキーボードのキーを押さないと処理が再開されない。 何すかこれwww。
641 名前:login:Penguin 投稿日:2010/12/06(月) 20:19:26 ID:bG4gTsbu >>637 何かのコマンドが /dev/random から乱数を読もうとしていて、 システムに十分なエントロピーが蓄積されていない時に その現象が起きることがある。 od -c /dev/random とか実行すると、数百バイト程度表示した状態でいったん止まるでしょ。 キーボードから入力信号を送るとそのタイミングが乱数のエントロピー源になるので 再び /dev/randomからデータが読めるようになる。 俺は、この現象が嫌だったので、 rm -f /dev/random; ln -s /dev/urandom /dev/random とやってる。 /dev/urandomならエントロピー関係なしに無制限に読み出せるから。
勉強になります。でも、質問者の問題がこれだったかは不明。こんなレスも。
645 名前:633 投稿日:2010/12/08(水) 09:03:58 ID:vVjnfRxS fedora14でデバイスを読みにいくとき固まる原因が判明。 キーを押したりマウスを動かしたりすると復帰するという鬱陶しい奴。 犯人はAMDのC1E。 BIOSの設定で、こいつのサポートをDisableにしてやれば良かった。 デバイスを読みにいくときに固まらなくなった。
648 名前:login:Penguin 投稿日:2010/12/08(水) 14:14:07 ID:GPchVNO+ >>645 Gigabyteのマザーでのみ出るみたいだね。 ttps://bugzilla.kernel.org/show_bug.cgi?id=15289
649 名前:login:Penguin 投稿日:2010/12/08(水) 23:15:11 ID:JJXGdLzh >>645 cpuspeed とか動かしていないですか? 或いは、desktop のcpu駆動の周波数を動的にいじるサービスなどなど 未対応のCPU(Celeron D330)では、1日もしないで勝手に停止してたのでこのサービスを を停止処分としますたよ。
CDROMから isoファイル
Fedora Core の.isoファイルがほしいが、手元にあるリソースは
http://z1.plala.jp/i686fc/
を参考にさせてもらい、以下でISOイメージを作成した。
- 雑誌のおまけCD-ROM 3枚
- 作業現場での遅い回線
http://z1.plala.jp/i686fc/
を参考にさせてもらい、以下でISOイメージを作成した。
- cdrtools-1.11a12-win32-bin.zip を拾ってきて展開。
- 作業ディレクトリ以下に fc1cd1, fc1cd2, fc1cd3 ディレクトリを作成し、CDの内容をコピー。
xcopy Q: fc1cd1 /E
- 作業ディレクトリ以下に fc1cd1, fc1cd2, fc1cd3 ディレクトリを作成し、CDの内容をコピー。
xcopy Q: fc1cd1 /E
- isoイメージ作成。
mkisofs -J -d -r -L -T -V "Fedora Core 1 Disk1" -b isolinux/isolinux.bin \ -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table \ -o fc1cd1.iso fc1cd1 mkisofs -J -d -r -L -T -V "Fedora Core 1 Disk2" -o fc1cd2.iso fc1cd2 mkisofs -J -d -r -L -T -V "Fedora Core 1 Disk3" -o fc1cd3.iso fc1cd3
- 逆に、isoから焼くには以下でいいようだけど未検証。
cdrecord -eject dev=0,0,0 speed=12 driveropts=burnproof FC2-test1-i386-disc1.iso
EUC-JPなFedoraでのman文字化け対策
.bash_profileに以下を追加
export MANPAGER=lv
FTPやTELNETの自動化
expect という tcl 拡張を利用する。
telnetscript.sh
telnetscript.sh
#!/bin/bash HOST=127.0.0.1 USER=hoge PASS=fuga expect - <<EOF set timeout 20 spawn telnet $HOST expect "ogin: " ; send "$USER\r" if { "$PASS" != "" } { expect "assword: " ; send $PASS\r } expect ">" ; send "enable\r" expect "#" ; send "conf pr\r" expect "#" ; send "exit\r" expect "#" ; send "exit\r" expect ">" ; send "exit\r" EOFこんな調子。制御文などは tcl の素の機能でOK。
Fedoraでパケットの転送を行う
Linuxメモ:Fedoraでパケットの転送を行う
# echo 1 > /proc/sys/net/ipv4/ip_forwardまたは
# sysctl -w net.ipv4.ip_forward=1
ブート時に有効にするには /etc/sysctl.conf で
net.ipv4.ip_forward = 1(0を1に変更)
Gnome3左上アクティビティ マウス ホットコーナー無効
Fedora16の話です。
Gnome3で、意図せず、デスクトップ左上にマウスが移動したとき、アクティビティ画面になるのがウザい。
アクティビティ画面にしたければ
マウス移動だけでアクティビティ画面になるのが本当に苛立たしい。
プログラムの入力中にこの現象になると切れそうになる。
ということで無効化DEATH。
rootで
vi /usr/share/gnome-shell/js/ui/panel.js
_containerAllocateという関数の最後をコメントアウトして
ログインしなおす、と。
うむ。
Gnome3で、意図せず、デスクトップ左上にマウスが移動したとき、アクティビティ画面になるのがウザい。
アクティビティ画面にしたければ
- Alt-F1でもできるし、
- Windowsキーでもできるし、
- 左上でマウスクリックでもできる。
マウス移動だけでアクティビティ画面になるのが本当に苛立たしい。
プログラムの入力中にこの現象になると切れそうになる。
ということで無効化DEATH。
rootで
vi /usr/share/gnome-shell/js/ui/panel.js
_containerAllocateという関数の最後をコメントアウトして
_containerAllocate: function(actor, box, flags) { this._label.allocate(box, flags); // The hot corner needs to be outside any padding/alignment // that has been imposed on us let primary = Main.layoutManager.primaryMonitor; let hotBox = new Clutter.ActorBox(); let ok, x, y; if (actor.get_direction() == St.TextDirection.LTR) { [ok, x, y] = actor.transform_stage_point(primary.x, primary.y) } else { [ok, x, y] = actor.transform_stage_point(primary.x + primary.width, primary.y); // hotCorner.actor has northeast gravity, so we don't need // to adjust x for its width } hotBox.x1 = Math.round(x); hotBox.x2 = hotBox.x1 + this._hotCorner.actor.width; hotBox.y1 = Math.round(y); hotBox.y2 = hotBox.y1 + this._hotCorner.actor.height; //kkk// this._hotCorner.actor.allocate(hotBox, flags); },
ログインしなおす、と。
うむ。
Solaris10のTICK数 設定
/etc/system ファイルに
set hires_tick=1
と書いてリブート。
「Solaris カーネルのチューンアップ・リファレンスマニュアル」
819-0376.pdf の
30ページ 「/etc/system ファイル」 のところ
95ページ 「タイマー」「hires_tick」 のところ
1. Solaris システムのチューニングの概要 (Solaris カーネルのチューンアップ・リファレンスマニュアル) - Sun Microsystems
2. Solaris カーネルチューニング可能パラメータ (Solaris カーネルのチューンアップ・リファレンスマニュアル) - Sun Microsystems
set hires_tick=1
と書いてリブート。
「Solaris カーネルのチューンアップ・リファレンスマニュアル」
819-0376.pdf の
30ページ 「/etc/system ファイル」 のところ
95ページ 「タイマー」「hires_tick」 のところ
1. Solaris システムのチューニングの概要 (Solaris カーネルのチューンアップ・リファレンスマニュアル) - Sun Microsystems
2. Solaris カーネルチューニング可能パラメータ (Solaris カーネルのチューンアップ・リファレンスマニュアル) - Sun Microsystems
coreが出てくれない場合
coreを吐かせたいのに吐いてくれない場合。
→coreファイルサイズの最大値がゼロになっている。
coreからパスワードが漏洩するのを防ぐため、最近のOS(ディストリビューション)ではデフォルトでcore出力を抑制してるらしい。
現在の状態を表示
設定
あるいは
/proc/sys/kernel/core_users_pid
→coreファイルサイズの最大値がゼロになっている。
coreからパスワードが漏洩するのを防ぐため、最近のOS(ディストリビューション)ではデフォルトでcore出力を抑制してるらしい。
現在の状態を表示
ulimit -c
設定
ulimit -c 1000000
参考 |
---|
@ITのtipsページ |
あるいは
struct rlimit rl; rl.rlim_cur = 1000000; setrlimit( RLIMIT_CORE, &rl );
参考 |
---|
7-6. coreファイルから情報が漏れる |
coreファイル名の指定
/proc/sys/kernel/core_pattern/proc/sys/kernel/core_users_pid
参考 |
---|
Manpage of PROC |
cssのセレクター
stylusを使っていて、cssのセレクター指定方法がよくわかっていなかったので調べた。
出典
CSSの セレクター = sytleをどのHTMLタグに適用するかのマッチング指定
A の子孫の B にマッチ (孫も含む)
A の直接の子の B にマッチ (直接の子のみ)
A の後の B にマッチ (AとBは同階層)
A の直後の B にマッチ (AとBは同階層、直後のみ)
B を子孫に持つ A にマッチ
B を直接の子に持つ A にマッチ
A と B にマッチ
attr属性指定がある Aにマッチ、と 属性値の完全一致、前方一致、中間一致、後方一致
属性のうちidの場合の古い記法
属性のうちclassの場合の古い記法
スペース自体が区切り記号として意味を持ってしまっていて、スペースが単なるスペースにならない場合がある。
具体的には "+" の周囲と ">" の周囲でスペース文字が違う意味になってしまう(?)ようで、いやらしい。
おそらく仕様がつぎつぎに追加されたためなのだろう、仕方がない。
余計なスペースを空けないのが統一的で良いかも。
出典
リンク | 備考 |
---|---|
Selectors | W3C仕様 |
https://developer.mozilla.org/ja/docs/Web/CSS/:has | has( )の説明 |
https://webliker.info/css-selector-cheat-sheet/ | CSSセレクタのチートシート |
CSSの セレクター = sytleをどのHTMLタグに適用するかのマッチング指定
A の子孫の B にマッチ (孫も含む)
A B {指定}
A の直接の子の B にマッチ (直接の子のみ)
A>B {指定} A > B {指定} でも同じ
A の後の B にマッチ (AとBは同階層)
A~B {指定}
A の直後の B にマッチ (AとBは同階層、直後のみ)
A+B {指定}
B を子孫に持つ A にマッチ
A:has(B) {指定} A :has(B) {指定} でも同じ
B を直接の子に持つ A にマッチ
A:has(>B) {指定} A :has(>B) {指定} でも同じ
A と B にマッチ
A, B {指定}
attr属性指定がある Aにマッチ、と 属性値の完全一致、前方一致、中間一致、後方一致
A[attr] {指定} A[attr="abc"] {指定} A[attr^="abc"] {指定} A[attr*="pqr"] {指定} A[attr$="xyz"] {指定}
属性のうちidの場合の古い記法
A#name {指定} A[id="name"] {指定} と同じ
属性のうちclassの場合の古い記法
A.name {指定} A[class="name"] {指定} と同じ
スペース自体が区切り記号として意味を持ってしまっていて、スペースが単なるスペースにならない場合がある。
具体的には "+" の周囲と ">" の周囲でスペース文字が違う意味になってしまう(?)ようで、いやらしい。
おそらく仕様がつぎつぎに追加されたためなのだろう、仕方がない。
余計なスペースを空けないのが統一的で良いかも。
eth0になるかeth1になるか
Linuxで、同じデバイスドライバで動作するLANカードを複数使っていると、どっちがeth0でどっちがeth1になるか分からない話。ゲートウェイにしている場合には問題になる。
対処:MACアドレスを指定して毎回同じインタフェース名となるようにする
手順:
(1) /etc/sysconfig/hwconf を見る。
まずはethで検索。PCIバスのどこのカードのMAC(network.hwaddr)が何かをメモ。
この時点でhwconfにeth0とかeth1とか書いてあるのは気にしない。
(2) /etc/sysconfig/network-scripts/ifcfg-eth0 を編集。
HWADDR=aa:bb:cc:dd:ee:ff
などと、ファイル名のeth0と、内容のHWADDRを希望の組み合わせにする。
(3) /etc/sysconfig/network-scripts/ifcfg-eth1 を編集。
同様。
(4) リブート。
対処:MACアドレスを指定して毎回同じインタフェース名となるようにする
手順:
(1) /etc/sysconfig/hwconf を見る。
まずはethで検索。PCIバスのどこのカードのMAC(network.hwaddr)が何かをメモ。
この時点でhwconfにeth0とかeth1とか書いてあるのは気にしない。
(2) /etc/sysconfig/network-scripts/ifcfg-eth0 を編集。
HWADDR=aa:bb:cc:dd:ee:ff
などと、ファイル名のeth0と、内容のHWADDRを希望の組み合わせにする。
(3) /etc/sysconfig/network-scripts/ifcfg-eth1 を編集。
同様。
(4) リブート。
iBus-Anthyで常に半角spc
設定 - キー割り当て で以下設定
コマンド | ショートカット |
---|---|
insert_space | [] |
insert_alternate_space | [] |
insert_half_space | [space] |
insert_wide_space | [Shift+space] |
isoのマウント
mount -o loop yarrow-i386-disc1.iso /mnt/tmp1
putty上のemacsでBSがあやしい動きをする件
どうもstty eraceに標準以外の値が設定されてしまう場合があるらしい。
.bash_profile に
と書いた。
"^?"はeraceの標準値らしいのだが…なんで変更されてしまうのかは不明。
作業環境ではSolaris等からも同じホームディレクトリにアクセスするので
unameでLinuxのみ対象とした。
.bash_profile に
[ $(uname) == "Linux" ] && stty erase ^?
と書いた。
"^?"はeraceの標準値らしいのだが…なんで変更されてしまうのかは不明。
作業環境ではSolaris等からも同じホームディレクトリにアクセスするので
unameでLinuxのみ対象とした。
ssh exit時のハングアップ防止
リンク | 備考 |
---|---|
Life with IT |
ssh -X 等でX11のForwardingをして、一度でも別のGUIプロセスを起動すると、全部終わって抜けようとたときにexitが完了しない現象が発生。
サーバ側の .bashrc に、
shopt -s huponexitと書いたら解消...
と思ったけど解消してなかった。
うーむ。dbusのプロセスが 親プロセスID 1 になって残ってしまう模様…
syslog高速化
syslogdにはいろいろ新しいものがあるようだがオイラは標準のものしか使ったことない。
標準のヤツでもちょっと高速化できる。
syslog.confのファイル名指定にて、ファイル名の先頭に1文字ハイフンを付ける。
例
バッファリングされるのでちょっと速くなる。
電源プッチンとかすると取りこぼすかも。
標準のヤツでもちょっと高速化できる。
syslog.confのファイル名指定にて、ファイル名の先頭に1文字ハイフンを付ける。
例
*.debug -/var/log/debug
バッファリングされるのでちょっと速くなる。
電源プッチンとかすると取りこぼすかも。
こんなコマンドあんなコマンド
Linuxに限らないコマンド一覧で、面白かったのでリンクをメモさせていただきます。
bannerコマンドとか知らなかった。
以前、あるマシンで sl というジョークコマンドがインストールされていてびっくりした。
ls とタイプしようとして sl と打つと、端末画面上をものすごい勢いで蒸気機関車が通りすぎていくというもの。
bannerコマンドとか知らなかった。
参考 |
---|
簡易版コマンドマニュアル |
以前、あるマシンで sl というジョークコマンドがインストールされていてびっくりした。
ls とタイプしようとして sl と打つと、端末画面上をものすごい勢いで蒸気機関車が通りすぎていくというもの。
カーネル関係の調べ方メモ
リンク | 備考 |
---|---|
unameコマンドから始めるデバッグ&カーネルハック入門 | Fedora31の話。2019年 |
サブネット内のホスト数が多くてパケット導通しない
同一のサブネット内に、例えば1024超のホストがぶら下がる環境では、
ARPキャッシュの上限に引っかかってパケット送受信が通らないかもしれない。
Linuxの設定は
現在値を確認する。
デフォルトは1024。これを2048にするには
またはインタフェースごとの個別設定も
/proc/sys/net/ipv4/neigh/eth0/gc_thresh3
とかでできるのかも。
ARPキャッシュの上限に引っかかってパケット送受信が通らないかもしれない。
Linuxの設定は
現在値を確認する。
cat /proc/sys/net/ipv4/neigh/default/gc_thresh3または
sysctl net.ipv4.neigh.default.gc_thresh3
デフォルトは1024。これを2048にするには
echo 2048 > /proc/sys/net/ipv4/neigh/default/gc_thresh3または
sysctl -w net.ipv4.neigh.default.gc_thresh3=2048
またはインタフェースごとの個別設定も
/proc/sys/net/ipv4/neigh/eth0/gc_thresh3
とかでできるのかも。
シリアルログイン
デーモン起動・停止でI18Nなメッセージが出る件
問題
独自につくったデーモン用のinitスクリプトを作成し提供したい。/etc/init.d/httpdなどを参考にして作る。
echo -n $"Starting $prog: "
などとしているところで、国際化されたメッセージが出ている。
これそのままマネして使って大丈夫かな?
そもそもこれってどうやってるの?
調査
TEXTDOMAIN=initscripts#LC_MESSAGES=en_US
LANG=ja_JP.UTF-8
gettextの仕組みらしい。
どこかに、initscripts という名前と関連した国際化文字列を
格納しているところ(POファイル?)があるはず...。
man textdomainうむ。あとでちゃんと読もう。
info gettextをみると、個別のプログラミング言語のセクションがあって
bashのところに
gettext shorthand $"abc"とある。
コマンド gettext の、コマンド名を省略した書き方として
扱われるのかな。
export TEXTDOMAIN=initscriptsとして
echo $"Starting $prog: "とすると
を起動中:が返り、
gettext 'Starting $prog: 'とやってみたら、
$progを起動中が返ってきた。うむ。
関連する環境変数など
TEXTDOMAINTEXTDOMAINDIR
LANG
LC_MESSAGE
/usr/share/locale/ja/LC_MESSAGES/*.mo
initscripts.mo
GPLになる?
gettextでググってみたらhttp://www.linux.or.jp/JF/JFdocs/ABOUT-NLS-7.html
むむむ
あなたが自由に利用できるプログラムを書いていて、それを国際化したいと 思っているなら、あなたのパッケージで GNU `gettext' を使うことを歓迎 します。もちろん、その配布物に `gettext' のディレクトリを含めるなら、 その時からあなたのソースには GNU Public License が適用されます。 しかし、いずれにせよあなたはフリーソフトウェアを書いているので、 これは制限にはなりません。あれー、GPLに汚染されるの?
あれかな。initスクリプトだけ別パッケージにすればGPLの範囲を限定できる。だけど、ドキュメントなんかでそのinitスクリプトがあることを前提とした書き方をしてしまうとぎりぎりアウトかな。そうすると、わざわざ「開始します」程度の国際化文字列のためにgettext使うのはばかばかしい。
いや、ちがうか。利用するだけならLGPLだから問題ないのかな。gettext自体を改造したものを配布するなら問題だけど、gettextをユーザが使えるようにするだけだし。
「gettext のディレクトリを含める」が何を意味するのか、今度詳しく調べよう。
プロセッサ固定
プロセッサ固定でスレッドを動かすメモ
Solaris | |
---|---|
processor_bind(2) | |
pbind(1M) | |
psrset(1M) |
Linux | |
---|---|
pthread_setaffinity_np(3) |
一般ユーザでrpmbuild
http://www.inter7.com/courierimap/FAQ.html より引用
First, you need to create a mirror image of the main RPM directory in your account:
First, you need to create a mirror image of the main RPM directory in your account:
mkdir $HOME/rpm mkdir $HOME/rpm/SOURCES mkdir $HOME/rpm/SPECS mkdir $HOME/rpm/BUILD mkdir $HOME/rpm/SRPMS mkdir $HOME/rpm/RPMS mkdir $HOME/rpm/RPMS/i386Use sparc, or alpha, or whatever's appropriate. Finally:
echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros