SSブログ
小技(Linux) ブログトップ
前の10件 | -

PCI製Wi-Fiマルチポケットルータ MZK-MF300D [小技(Linux)]

 会社でスマホを使ってAdobeのShadowとかいうソフトと連携してデザインの開発作業をしたいんだけど…と言われ、事務所内の社内ネットワークにWi-Fiで接続するのはちょっとどーなのよ…と文句を言いたい気持ちをぐっとこらえ、やむなくプラネックス(PCI)製の激安な「Wi-Fiマルチポケットルータ」 MZK-MF300D なるものを買ってきた。
 どうやら、スマホのWi-FiアドレスとAdobe Shadowとかいうソフトの入っているPCとが同じネットワークにある必要があるらしく、「そうしてくれ」との強い要望を受けたので、MZK-MF300Dをマニュアルガン無視でアクセスポイントモードに切り替えてセットアップ。ネットワークの設定、マルチAPの無効化、無線の設定、管理者パスワードの変更などなどを経てセットワークに接続。スマホでアクセスが出来ることを確認して引き渡した。

 ところが!

 「あの~。開発環境にアクセスできないんですけど~。」

 という知らせが。どうも、DNSで名前解決が出来ないらしい。
 アクセスポイントの設定を見直すが、よくよく見て見ると、そもそもDNSサーバのアドレスを入れる項目がどこにもない。でも、なにやらDNSは引けてる。

 はあ?

 どうやらMZK-MF300Dはどこか我々の知らないところに立っているDNSを参照しているもよう。社内ネットワークとかの内部DNSを見せる事はこのままでは出来ないようだ。

 しかし、開発環境とかテスト環境とかいうものは外部に曝す訳にはいかないじゃないか。

 そこで…iptablesでアクセス経路をひん曲げてやればよくね?
 と、思い立ち以下のような作戦を立案した。

①MZK-MF300Dの全てのトラフィックを、どこか他のサーバで一旦全部受け取る

②iptablesでマスカレード、本来のデフォルトゲートウェイに中継してやる

③でも53/tcp、53/udpだけはDNSサーバに向かってパケットの飛び先を曲げてしまう

 こうすれば、MZK-MF300Dの馬鹿DNSは騙されてくれることだろう!!

 と、妄想したのだ。

 ちと手頃なサーバが他に居なかったので、「セキュリティ的にちょっとどうよ!?」という懸念はあるものの、一先ず社内のDNSサーバにMZK-MF300Dのトラフィックを総受けしてもらう役割も担当してもらうこととした。
 後日、忘れてなければ直す!(たぶん)

 というわけで、そのDNSサーバな子で以下実行。

手順1:/etc/sysctl.confに「net.ipv4.ip_forward = 1」を書く。
手順2:sysctl -p 実行
手順3:service iptables start 実行
手順4:Wi-Fiから来たトラフィックを全部本来のデフォルトゲートウェイに飛ばすため以下実行
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
手順5:MZK-MF300Dの内蔵馬鹿DNSからの問い合わせを、社内DNSサーバで解決するため、パケットをぶんどる設定を入れるため以下実行
iptables -t nat -A PREROUTING -s (MZK-MF300Dのアドレス) -p tcp --dport 53 -j DNAT --to (社内DNSサーバのアドレス):53
iptables -t nat -A PREROUTING -s (MZK-MF300Dのアドレス) -p udp --dport 53 -j DNAT --to (社内DNSサーバのアドレス):53

 で、念のためMZK-MF300Dを再起動。

 Wi-Fiアクセスから適当な社内サーバの名前をnslookup するとちゃんと解決できた。(殺気はダメだった)

 というわけで一先ず問題解決っぽい。デザイナーの人も大丈夫ですと言っているので大丈夫なのだろう。






 教訓:安物買いのなんとやら。会社で使うものはもっとちゃんとした物を買いましょう。(笑)

改行コードを捨てる [小技(Linux)]

 会社で、「あるテキストファイル(複数行記述されている)の改行コードを全部カットしたいんですけどー、なんかいい方法ないっすかね?」と聞かれた。彼はsedコマンドでいろいろ頑張っていたが、そういう用途には基本的にsedは不向きであることを教えて(出来ないわけじゃない)他の方法を探らせてみた。

 …というか、彼はその方法を今まさに考え中だ。(笑)

 コマンドを知っていても、その活用方法を知らなければ効果は半減する。英単語それ自体を知っていても、熟語とか慣用句、言い回しを知らなければ意味がないのと一緒だ。コマンドの「ボキャブラリー」をどれだけ増やせるかが問題なんだ!!

 というわけで、彼が(なぜか)苦しんでいる間に、ここに正解をいくつか書いてしまおう(笑)。

 なお、ここで使用するファイルは…
[root@sawako tmp]# cat /tmp/test.txt
Yui
Mio
Ritsu
Tsumugi
Azusa

 というファイルであるとする。

方法その1:trコマンド

 てか、真っ先にコレが思いつくべきじゃないかと個人的には思うんだけども。(笑)
[root@sawako tmp]# tr -d "\n" < /tmp/test.txt
YuiMioRitsuTsumugiAzusa[root@sawako tmp]#

 ファイルの一番最後の改行まで削除されてしまいコマンドプロンプトまでうしろにくっついているけどな!(大笑)


方法その2:awkコマンド

 sedを思いつくならawkも忘れないで!!(笑)
[root@sawako tmp]# awk '{printf "%s",$0}' /tmp/test.txt
YuiMioRitsuTsumugiAzusa[root@sawako tmp]#

 trコマンドと全く一緒だ。
 まあ、awkがアリだというのなら、perlでもphpでもrubyでもC/C++でもJavaでもアリじゃん…というツッコミはここでは禁止である。(笑)


方法その3:echoコマンドとcatコマンド…というか重要なのはむしろ「`」(バック・クォート)

 これはtrコマンドとかとちょっと見栄えが変わるけども、「1行にする」という命題は一応クリアするぞ!?
[root@sawako tmp]# echo `cat /tmp/test.txt`
Yui Mio Ritsu Tsumugi Azusa
[root@sawako tmp]#


 改行がスペースに変換されて並んでますな。



 さて。彼は一体どんな方法を思いつくだろうか!!!!
 若人よがんばれ!!(笑)




続きを読む


ファイルを置きすぎたディレクトリでファイルの一覧が見たい時 [小技(Linux)]

 1つのディレクトリの中に、ファイルを超大量に置いてはいけないということは、サーバ管理の鉄則でもありますが(特にext3とかな!)、たまーにやっちゃう人がいますね。(笑)1つのディレクトリに数千ファイルとか1万ファイルとか!!!!!!

 で、そんなディレクトリでlsなんてやっちまった日にゃ…
[root@konata cache_page]# ls -la
合計 21448
drwxrwxrwx  127 dev    dev       4096  4月  4 21:11 .
drwxrwxrwx    3 dev    dev       4096  6月 30  2009 ..
(途中省略)
drwxrwxrwx    2 dev    dev    6254592  4月  4 21:16 pickup
(さらに省略)
drwxrwxrwx  362 nobody nobody 1286144  4月  4 21:17 announce
drwxrwxrwx    2 dev    dev    6197248  4月  4 21:17 index
drwxrwxrwx    2 dev    dev      86016  1月  8 16:19 index2
drwxrwxrwx    2 dev    dev    2994176  3月  1  2010 index3
(以下略)

 もう、いやな予感しかしないディレクトリがありますね?^-^

 では、ls -la してみましょう!!!
[root@konata cache_page]# cd pickup
[root@konata pickup]# ls -la






 へんじがない。ただのしかばねのようだ・・・



 てな具合になっちまう訳ですよもう。
 でも、場合によっては、ど~~~~~~しても、ファイルのリストが見たいの!みたいな場合も有りますよね?

 そんなあなたには、findコマンドがお役に立ちます。^-^
[root@konata pickup]# find . -print
.
./cache_baea74f5ce6b3ee89c4d2493b93240ee_cc61cc31dd333eac4b580d
./cache_baea74f5ce6b3ee89c4d2493b93240ee_d367f0559782ffdebddfe3
./cache_baea74f5ce6b3ee89c4d2493b93240ee_b246d51c1e42cbad61e348
./cache_baea74f5ce6b3ee89c4d2493b93240ee_14fcf1db4202c611dd0260
./cache_baea74f5ce6b3ee89c4d2493b93240ee_dd11224a64b71d5622c3c3
./cache_baea74f5ce6b3ee89c4d2493b93240ee_f558391470dfa0f7cf9407
./cache_baea74f5ce6b3ee89c4d2493b93240ee_57f72ef84cda3d2b99c158
./cache_baea74f5ce6b3ee89c4d2493b93240ee_b5a396b0c7ff57aa323200
./cache_baea74f5ce6b3ee89c4d2493b93240ee_c8687e129ad9c840419b77
(ファイルの一覧がだーーーーーーーっと表示)


 ひとまず、ファイル名とかはこれで確認できます。

計画停電とLinux [小技(Linux)]

 まずは、遅ればせながら東北関東大震災で被災された皆様には心よりお見舞い申し上げます。

 さて、現在東京電力エリア内では「計画停電」真っ盛りですが、計画停電の時間が始まるまでにはなんとかしてサーバを自動でシャットダウンしたいものです。
 そこで、その方法を紹介します。

 atコマンドを使います。

 と、その前に、まずは「atd」が起動していることを確認しましょう。
[root@haruka ~]# ps -ef | fgrep atd
root      1157 16571  0 11:14 pts/5    00:00:00 fgrep atd
rpcuser   2667     1  0 Jan08 ?        00:00:00 rpc.statd
root      2870     1  0 Jan08 ?        00:00:00 /usr/sbin/atd


 3行目の「/usr/sbin/atd」がソレです。起動していない場合は、 service atd start なりしておきましょう。自動起動の設定なら chkconfig atd on です。

 そして、計画停電が6:20から開始される場合なら、5分前にシャットダウンしておくとすると

 at 6:15

 とか実行します。すると…
[root@haruka ~]# at 6:15
at>

 とかプロンプトが表示されますので、ここにシャットダウンコマンドを記述します。
[root@haruka ~]# at 6:15
at> shutdown -h now

 ↑まずはこんな感じ。そして、Enterキーを忘れずに押しておきましょう。2行目のプロンプトが表示されます。
[root@haruka ~]# at 6:15
at> shutdown -h now
at>

 ↑こうなる。そしたら、「Ctrl + D」でプロンプトを抜けます。
[root@haruka ~]# at 6:15
at> shutdown -h now
at>
job 1 at 2011-03-24 06:15


 というように、「ジョブID」とそのジョブが実行される正確な日時が表示されます。

 ちなみに、atコマンドに指定した時刻が…
① まだ到来していない場合
 (例)atコマンドを入力した時間が12:00で、atコマンドの引数に指定した時間が18:00だった場合
 →その日の18:00に実行されます

② もう過ぎちゃった場合
 (例) (例)atコマンドを入力した時間が12:00で、atコマンドの引数に指定した時間が06:00だった場合
 →次の日の06:00に実行されます

 ちゃんとatコマンドによるジョブが登録されたかどうか確認したい場合は、「atq」コマンドで確認できます。
[root@haruka ~]# atq
3       2011-03-24 06:15 a root
[root@haruka ~]# date
2011年  3月 23日 水曜日 11:25:23 JST

 atqコマンドで表示されているのは、ジョブIDが「3」で、そのジョブは2011-03-24の06:20に実行されることがわかります。

 ジョブの詳細が知りたい場合は、「at -c」で見ることが出来ます。-cオプションに続けてジョブIDを指定します。
[root@haruka ~]# at -c 3
#!/bin/sh
# atrun uid=0 gid=0
# mail     root 0
umask 22
HOSTNAME=haruka.mycompany.com; export HOSTNAME
SHELL=/bin/bash; export SHELL

(途中省略)

shutdown -h now

[root@haruka ~]#

 環境変数の設定が自動的に行われるので、最初びっくりするかもしれませんが、最後のほうに「shutdown -h now」がちゃんと追加されていることがわかります。

 「間違えて登録しちゃった!」という場合、ジョブを削除するのは「atrm」コマンド。ジョブIDを続けて指定するとそのジョブが削除されます。
[root@haruka ~]# atrm 3
[root@haruka ~]# atq

 ↑こんな具合。

 あとは時間が来ればサーバがシャットダウンされます。

 ところで、東京電力が公表している計画停電の予定に併せて、今日・明日の分だけでなくもっと先の予定まで登録しておきたい!という場合にも対応できます。

 いちいちatコマンドでshutodownと書くのは面倒くさいので、まず最初に実行したいコマンドを記述したファイルを作成しておきます。例えばこんな具合。

 echo "shutdown -h now" > /tmp/command.txt

 atコマンドに「-f」オプションを追加ます。
 先ほど紹介したときに時刻だけを記述した項目には日付も同時に指定することができます。
 例えば、2011年3月31日の6:15にサーバをシャットダウンしたいなら、

 at -f /tmp/command.txt 06:15 03/31/2011

 と、時間と日付を指定すればOK。
 なお、日付のところに「tomorrow」と書けば、「明日の」6:15に実行されるし、「今から1時間後」という指定も可能で、

 at -f /tmp/command.txt now + 1 hour

 と指定すればよい。他にも便利で楽しい日時の指定方法があるが、紹介してると終わらなくなるので(笑)基本的なものだけ紹介した。

複数のテープにまたがるデータを途中のテープから戻す方法 [小技(Linux)]

 例えばLTOとか、DDSとか、QMT(CMT)とか、DLTとかいったようなテープデバイスにデータを退避してあるとする。データ量が多くて1本のテープに収まりきらない場合にはcpioコマンドなら複数のテープにまたがって一つのボリュームなりバックアップデータなりをまとめて退避することができる。

 が、この場合に特有の困った問題が発生することがある。テープの読み取りエラーである。
 8ビットパソコン世代のオッサンなら、Tape read errorとでも言えばイメージが涌きやすいだろうか。(大笑)

 例えば、cpioコマンドでデータをテープにバックアップしたとする。退避するときに

 cd /some/directory
 find . -print | cpio -oBv -H newc >/dev/st0

 とかいう具合にデータをバックアップしたとする。(オプション類はお好みに応じてどうぞ)

 で、復元する場合、普通は…

 cd /some/restore
 cpio -iBvumd < /dev/st0

 とかいう感じで戻すことになると思う。(オプション類はお好みに応じてどうぞ)
 このとき、テープの1本目の先頭部分には「-H」オプションを指定した場合のフォーマット情報が保存されるそうで、復元する場合には「-H」オプションは省略しても構わないことになっている。(別に記述してもよいけど)

 さて。ここで不幸にして1本目のテープでエラーが出ちゃったとする。しかしお目当てのデータはまだ復元されていない!!2本目のテープに望みをかけたいが先に進まず止まっちゃった!    みたいな場合。

 あるいは、なぜか1本目のテープが見当たらない!!テープの保管場所にあるはずなのにど~しても見当たらない!!   みたいな場合。

 もしくは、1本目のテープにうっかり全然違うデータを上書きして壊しちゃった!!!どーしよう!!!   みたいな場合。

 2本目以降から(3本目でも4本目でもいいけど)復元したい場合は、普通にcpioコマンドを実行するが、「-H」オプションを必須で指定する必要がある。

 cd /some/restore
 cpio -iBvumd -H newc< /dev/st0

 すると、テープをまたがって記録されているファイルののファイルから復元することができる。
 実行するとおそらくこんな具合にワーニングメッセージが出るが。

 cpio: warning: skipped ??????? bytes of junk

 「???????」のところには何らかの数値が入る。要するに読み飛ばされるデータのバイト数である。

 ひとまずこれで、2本目以降のデータをなんとか復元することも可能ではある。

NICのリンク速度等詳細な情報を確認する方法 [小技(Linux)]

 ほとんど備忘録。なんだかその都度調べている気がするのでー。

 NICのリンク速度、全二重/半二重とかその辺の情報を見たいときは ethtool を使う。
[root@wisewolf ~]# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: g
        Wake-on: g
        Link detected: yes


 なお、mii-toolだとFastEtherまでしか対応してないくさい。
[root@wisewolf ~]# mii-tool eth0
eth0: negotiated 100baseTx-FD flow-control, link ok


非LVMなディスクパーティショニングでルートパーティションを拡張する方法 [小技(Linux)]

完全に検証をしたわけでは無いので、コレで失敗する可能性も否定できない。失敗しても全く責任は取れないので、自己責任で覚悟して試すよーに!

 サーバを非LVMな状態でセットアップした場合に、ルートパーティションを拡張する方法をあれこれ試してみた結果、たぶんこれが最少手だろうと思われる手順をここにメモとして残しておく。

手順1:OSが入っているディスクをどうにかして大きくする。
手順2:OSをシングルユーザーモードで起動する
手順3:(コンソール操作)ルートパーティションをリードオンリーで再マウント
手順4:ルートパーティションを一旦削除し、再作成する
手順5:OSを再起動する(マルチユーザーモードにして構わない)
手順6:resize2fsでパーティション拡張


手順1:OSが入っているディスクをどうにかして大きくする。

 VMwareな環境でテストしたので、HardDiskの大きさの設定を好きなだけ大きくする。
 あ、そのまえに、ゲストOSは電源断状態にね。


手順2:OSをシングルユーザーモードで起動する

 GRUBでkernelのパラメータに「single」を追記して起動。


手順3:(コンソール操作)ルートパーティションをリードオンリーで再マウント

 mount -o remount,ro /

 とすれば、rwモードからroモードに変更される。


手順4:ルートパーティションを一旦削除し、再作成する

 fdiskの場合ね。
 /dev/sda3がルートパーティションという環境なので、以下のとおり実行

 fdisk /dev/sda
 と実行してから、fdiskコマンドのコマンドで
 d
 3
 と実行してsda3を一旦削除。そのまま続けて
 n
 p
 3
 あとはEnterキーを連打連打。fdiskのコマンドプロンプトに戻るまでEnter入力。
 なお、sda3パーティションがそのディスクの「一番最後のパーティション」である必要がある。パーティションを削除する際には、削除前のパーティションの「開始シリンダー」の値をチェックし、再作成する際も同じシリンダーから開始しなければならない。
 pコマンドなどでパーティションテーブルを参照して問題が無ければ
 wでfdiskを終了する。


手順5:OSを再起動する(マルチユーザーモードにして構わない)

 syncしてrebootしる。


手順6:resize2fsでパーティション拡張

 resize2fs -f /dev/sda3

 でルートパーティションを拡張する。「-f」は最初省略して実行してみて、「e2fsckしる!」って言われたら-fつけて再実行がいいかもしれない。

















 なお、この方法で当方は何度か成功していて失敗事例は全く無い。
 が、失敗したとしても当方は一切関知しない。諸君らの成功に期待する…

CentOSインストール後に後からGNOMEをインストールする [小技(Linux)]

 サーバにCentOSがインストールされている状態、しかもパッケージ類は最小のインストール状態からウィンドウシステムを入れるにはどうしたらいいか…というのを試してみる。
 GNOMEを入れてみようかと思うけど、GNOMEを入れる環境としてチョイスしたのは

 CentOS5.5をテキストモードでインストール
 インストール時のパッケージは「Base」のみ

 最終的な目標としては

 1.GNOMEをインストールする
 2.最低でもWebブラウジングとメールの読み書きができる
 3.日本語が使える(読める、入力できる)
 4.多少面倒くさくても、できるだけ最小のインストールパッケージで

 というあたりに設定してみる。

 が、ひとまずは「簡単確実に」GNOMEをインストールしてみることにする。
 yumの「groupinstall」を使うのがラクチンポンであったりする。コレを使えば、必要なパッケージを全部まとめてインストールできる。(…ゆえに、いらないよなあ~というものまで入ってしまうのだけども。)

 ちなみに、どんなパッケージグループが使えるのか調べるには、

 yum grouplist

 で調べられる。今想定している環境ではこんな状態。
[root@test791 ~]# yum grouplist
Loaded plugins: fastestmirror
Setting up Group Process
Loading mirror speeds from cached hostfile
 * addons: www.ftp.ne.jp
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: centosk3.centos.org
Installed Groups:
   Yum Utilities
   システムツール
   ダイヤルアップネットワークサポート
   ネットワークサーバー
   メールサーバー
Available Groups:
   Beagle
   DNS ネームサーバー
   Emacs
   FTP サーバー
   FreeNX and NX
   GNOME ソフトウェア開発
   GNOME デスクトップ環境
   Horde
   Java
   Java 開発
   KDE ( K デスクトップ環境)
   KDE ソフトウェア開発
   KVM
   Mono
   MySQL データベース
   Office/生産性
   OpenFabrics Enterprise ディストリビューション
   PostgreSQL データベース
   Ruby
   Tomboy
   Web サーバー
   Windows ファイルサーバー
   X Window System
   X ソフトウェア開発
   XFCE-4.4
   エディタ
   クラスタストレージ
   クラスタリング
   グラフィカルインターネット
   グラフィクス
   ゲームと娯楽
   サウンドとビデオ
   サーバー設定ツール
   テキストベースのインターネット
   ニュースサーバー
   ベース
   レガシーなソフトウェアのサポート
   レガシーなソフトウェアの開発
   レガシーなネットワークサーバー
   仮想化
   印刷サポート
   技術系と科学系
   管理ツール
   著作と発行
   開発ツール
   開発ライブラリ
Done

 ターミナルが日本語環境なので日本語で出てくるが、なんとインストールグループの指定にはこの日本語が指定できてしまうのであった。(笑)

 では、GNOMEをインストールするには…

 yum groupinstall "GNOME デスクトップ環境" "X Window System"

 である。コマンドラインに日本語を記述するのは微妙に気持ちが悪い。(笑)
 なお、「GNOME デスクトップ環境」や「X Window System」という文字列は必ずダブルクォーテーション「"」で囲むように。なぜなら空白文字が含まれているからである。

[root@test791 ~]# yum groupinstall "GNOME デスクトップ環境" "X Window System"
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * addons: www.ftp.ne.jp
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: centosk3.centos.org
Setting up Group Process
Checking for new repos for mirrors
Package 1:xorg-x11-xfs-1.0.2-4.x86_64 already installed and latest version
Package bitstream-vera-fonts-1.10-7.noarch already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package NetworkManager-gnome.x86_64 1:0.7.0-10.el5_5.1 set to be updated
--> Processing Dependency: gnome-keyring for package: NetworkManager-gnome
--> Processing Dependency: gnome-icon-theme for package: NetworkManager-gnome
--> Processing Dependency: libgnome-keyring.so.0()(64bit) for package: NetworkManager-gnome

 (省略)

 xorg-x11-server-utils                       x86_64             7.1-4.fc6                          base                171 k
 xorg-x11-utils                              x86_64             7.1-2.fc6                          base                123 k
 xorg-x11-xkb-utils                          x86_64             1.0.2-2.1                          base                183 k
 xsri                                        x86_64             1:2.1.0-10.fc6                     base                 31 k
 xulrunner                                   x86_64             1.9.2.9-1.el5                      updates              11 M
 zenity                                      x86_64             2.16.0-2.el5                       base                1.2 M

Transaction Summary
=============================================================================================================================
Install     337 Package(s)
Upgrade       0 Package(s)

Total download size: 242 M
Is this ok [y/N]:


 これで、「y」を押せば必要なパッケージがぜーーーーーーんぶインストールされる。

 インストールが終わったら、/etc/inittabを編集。
 善良なサーバであれば id:3:initdefault: と、なっているであろう箇所を、 id:5:initdefault: という具合に邪悪な設定に変更する。

 あとはリブート。このまましばらく待てば、「日本語は表示される」という状態にはなる。
 ところが、「日本語が入力できる」という状態にない。(笑)
 そこで、日本語入力のセットアップを行う必要がある。

 どういうわけか、「日本語変換エンジン」は入っているのに、入力メソッドが入っていない状態のようだ。(笑)そこで調べてみるとAnthy+scimだったらラクチンそうだ。

 GNOMEが起動したらログインし、「アプリケーション」→「アクセサリ」→「GNOME端末」とクリックしてターミナルを起動。ターミナルで yum install scim-anthy を実行すると入力メソッドがインストールされる。

 日本語入力方法はデフォルトのままだとCtrlキーを押しながらSpaceキーなので、Windowsに毒された人にはちょっと使いづらいかもしれない。そこで、「システム」→「他の個人設定」→「SCIM入力メソッドの設定」でかな漢字入力のON/OFFを変更できる。
 Altキー+半角/全角キーなどにも変更できるのでお試しあれ。
 なお、SCIM入力メソッドのキー割り当てを変更した場合、GNOME自体を再起動しないと変更がうまく反映されない現象が発生するようなので、確実に反映させたい場合はCtrlキーAltキーBackspaceキーでGNOMEを再起動したほうが手っ取り早いみたい。

 続いて、ブラウザをインストールしよう。
 (残念ながら私の嫌いな)Firefoxであればyumでさっくりインストールできるようだ。インストールは簡単で、yum install firefoxでよい。インストール後はデスクトップ上側のバーにある「GNOME ウェブ・ブラウザ」アイコンがちゃんと機能するようになる。
 Firefoxの使い方は…別に説明しなくてもいいよね…。私も人に説明できるほどは詳しくないので。(大笑)
 なお、「アプリケーション」→「インターネット」→「Firefox Web Browser」でも起動できる。

 最後にメールクライアントソフト。
 yumでさくっとインストールできるのはThunderbirdだ。yum install thunderbirdでインストール。インストールが完了すれば、「アプリケーション」→「インターネット」→「Thunderbird Email」で起動できる。








 なお、シャットダウンしたい場合は、「システム」→「シャットダウン」とクリックすればよい。ターミナルからshutdownをしてもよいが、ウィンドウアプリケーションのデータが破棄されてしまうので要注意。















 しかし…
 パッケージを330個以上インストールしてるんで、もうちょっとどうにかなりませんかねー?というのが個人的な感想。ここから、「必要なものだけをインストールする方法」を探るのであった…。

(たぶんつづく!!)

ファイルだけ・ディレクトリだけ、パーミッションを変更したい [小技(Linux)]

習うより慣れろfindコマンド応用術

 chown -R みたいに、chmodにも-Rオプションがあったりしますが、実はコイツがビミョーに使いづらかったりするんですよね。

 例えば、パーミッションが「drwxr-xr-x」というディレクトリが沢山あるとして、オーナーでもグループメンバーでもない人のそのディレクトリへの立ち入りを禁止したいという場合に、それを再帰的に実行したいなーとかいうケース。

 chmod o-x somewhere

 (「somewhere」はどこかのディレクトリ)と実行すれば、ひとまずそのディレクトリから「x」が取り除かれるのである。よって、再帰的に実行したいなら、「-R」をつければいいし、カレントディレクトリに複数あるなら「*」と指定したくなる。

 chmod -R o-x ./*

 とか、実行したくなる気持ちは理解できる。

 が、これでは痛い目にあう可能性があることに気が付くだろうか。

 もしそこに…

 実行可能なファイル(コマンドやスクリプト)が含まれていたら、なにか余計なことをしでかす予感がしないだろうか。(笑)

 こんなケースでもfindコマンドが役に立つ。

 「ディレクトリだけターゲットにしたい」なら…

 find /some-directory -type d -exec chmod o-x {} \;

 と、なる。これでディレクトリだけが処理の対象になるし、「ファイルだけターゲットにしたい」なら…

 find /some-directory -type f -exec chmod o-x {} \;

 と、いうことに。

 ちなみに、前アーティクルの「特定のオーナーの…」という条件を組み合わせることも可能で、

 find /some-directory -type f -user someOwner -exec chmod o-x {} \;

 と、これで「オーナーがsomeOwner」のファイルだけchmodする…ということが可能になる。
 もちろん、「-maxdepth」とかも組み合わせることができる。

特定のディレクトリから再帰的に特定のオーナーのファイルやディレクトリだけchownしたい [小技(Linux)]

習うより慣れろfindコマンド応用術

 例えば、/home/hoge/ディレクトリの下にある全てのファイルやディレクトリのオーナーを変更したい!という場合は単純に

 chown -R newOwner /home/hoge/*

 と、実行すればよい。別に難しい話ではない。
 ところが、例えば会社などで「○○さんが退職したので、業務を××さんが引き継いだ。ファイルのオーナーも、○○さんのファイルだけ××さんに移管したい」というケースがたまーーーーーーーーーーーーーにあるかもしれない。無いかもしれない。
 そんなときに、上記のようなchownコマンドでは甚だ都合が悪いことも出てくる。というのも、上記の例では「/home/hoge/」配下にある全てのファイルやディレクトリのオーナーを片っ端からnewOwnerに変更してしまうので、移管したくない「△△さん」のファイルなどがあっても、それらも関係なしにchownされてしまうのである。

 このように、再帰的だがファイルやディレクトリの条件次第で実行したりしなかったりするケースがある場合に、findコマンドが役に立つ。

 ここでは、oldOwnernewOwnerに変更する例を示す。

 find /some-directory -user oldOwner -exec chown newOwner {} \;

 findコマンドで検索されたファイル名が、「{}」の部分に代入されてchownコマンドが実行される。
 なお、-execオプションの替わりに、xargsコマンドでつなげてもよい。

 find /some-directory -user oldOwner -print | xargs chown newOwner

 とかこんな具合。こちらの例では、findコマンドが条件にマッチしたファイルをいったん標準出力に出力すると、パイプを経由してxargsコマンドがそれを受け取り、chownコマンドを各々起動するとかいう具合になる。

 なお、どちらのケースでもchown コマンドに -R オプションはつけないこと!!

 追記:

 「特定のオーナーのファイルだけオーナーを変更したいんだけど、カレントディレクトリだけやってくれれば十分で、再帰的に実行してほしくないんだけど…」という場合、findコマンドに「-maxdepth 1」というオプションを追加すれば解決する。

 find /some-directory -maxdepth 1 -user oldOwner -exec chown newOwner {} \;

 このとき、「-user」オプションのに「-maxdepth 1」を記述しないと、警告メッセージが出てくるので要注意。

前の10件 | - 小技(Linux) ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。