- 日本語入力
- Dropbox
- ConnectBot
- K9-mail (Email.apk よりは良いが, バージョンアップとともに機能・バグともに増えてきた.)
- Email.apk
- YouTube.apk
- GoogleQuickSearchBox.apk
- MapsSapphire.apk (動作が重たすぎる)
openssl genrsa -aes256 4096 >key.pem
openssl req -new -key key.pem -out request.csr
certificate.pem
として保存する.wget https://www.startssl.com/certs/sub.class1.server.ca.pem wget https://www.startssl.com/certs/ca.pem cat certificate.pem sub.class1.server.ca.pem ca.pem >all.pem
openssl rsa -in key.pem -out keywop.pem
cp all.pem /etc/pki/dovecot/certs/ cp keywop.pem /etc/pki/dovecot/private/ chmod 400 /etc/pki/dovecot/certs/all.pem chmod 400 /etc/pki/dovecot/private/keywop.pem
/etc/dovecot/conf.d/10-ssl.conf
に以下の記述を行う.
ssl_cert =</etc/pki/dovecot/certs/20121204-kmbk.kamae.org.pem ssl_key =</etc/pki/dovecot/private/20121204-kmbk.kamae.org.pem
postfix/smtpd[24325]: warning: SASL authentication failure: Password verification failed postfix/smtpd[24325]: warning: example.com[192.168.0.2]: SASL PLAIN authentication failed: authentication failuresaslauthd が pam に認証情報を問い合わせるとき,
/etc/pam.d/smtp
の設定に基づいて
pam が認証情報を返す.
一方で, smtp
は
password-auth
を見るような設定となっているので,
LDAP にて認証を行うことができない.
解決方法は,
pam がシステムの認証方法に従うようにすることである.
include password-auth
とかかれている部分を
include system-auth
と書き換えると
LDAP にて認証できるようになる.
recovery-RA-sapphire-v1.7.0G.img
update-cm-6.1.0-DS-signed.zip
(ここから HTC Dream/Magic 用のファイルを選択してダウンロード)gapps-mdpi-tiny-20101020-signed.zip
(gmail や連絡先など, Google の提供するサービスがいらなければ, このファイルはいらない.)recovery-RA-sapphire-v1.7.0G.img
はどこかからダウンロードして, SDカードに保存しておく.)
# flash_image recovery /sdcard/recovery-RA-sapphire-v1.7.0G.img
flash_image
からやり直す.
(flash_image を実行した後, 一度再起動すると, 元にもどってしまうようだ.)
wipe
を選んで, SDカード以外のデータを削除する.Flash zip from sdcard
を選んで, update-cm-6.1.0-DS-signed.zip
と gapps-mdpi-tiny-20101020-signed.zip
を順番に書き込む.
flash_image
を打たなくてもよい.
しかし, アプリケーションが内部で flash_image
を呼び出しているだけである.
アクセスポイントの情報 (mpr2.bizho.net, 0120.mopera.ne.jp など) は残っていた.
gapps-mdpi-tiny-20101020-signed.zip
をインストールしない方が,
動作が軽い気がする.
しかし, Market などを使用できないので不便.
インストールするパッケージを選択したら良いかもしれない.
デフォルトで swap がオンになっている.
この辺の設定は見直した方がよいだろう.
電池の消耗が早くなった.
設定でなんとかならないだろうか...
/sys/devices/virtual/dmi/id/
にあるファイルを読むとよい.
以下に, 参照できる情報の例を示す.
bios_vendor | BIOS のベンダ |
bios_version | BIOS のヴァージョン |
board_vendor | マザーボードのベンダ |
board_name | マザーボードの型式 (リビジョン) |
board_version | マザーボードのヴァージョン (リビジョン) |
board_vendor | マザーボードのベンダ |
dmidecode
を使用する.
RCPT TO
を送った時点で,
バックアップサーバが MX レコードをチェックする仕組みらしい.
.
(現在のディレクトリ).$TEXINPUTS
で指定したディレクトリの下の fonts/truetype
およびそのサブディレクトリ.texmf*/fonts/truetype
およびそのサブディレクトリ.kpsewhich
を使用することで,
パスがあっているか確認できる.
#! /bin/bash vpl=$(mktemp --suffix=.vpl) tfm=${1/.ttf/.tfm} ttf2tfm $1 -q -T T1-WGL4.enc -v $vpl $tfm && vptovf $vpl $2 $tfm
truetype
ではなく vf
の下に配置する.
rml H sazanami-mincho gbm H sazanami-gothic
dvipdfm
を使用するのであれば,
ユーザーズガイドに書式がかかれている.
-f
でマップファイルを指定する.
texmf/dvipdfmx/dvipdfmx.cfg
というファイルがあるので,
これを編集するとデフォルトを変えられるかもしれない.
yum update
,
apt であれば apt-get update; apt-get upgrade
によって更新が可能である.
しかし,
何が更新されるか分からないまま, パッケージ更新のコマンドを実行するのは不安である.
ここでは,
どのようなパッケージが更新されるのか,
どのような更新があったのかを確認する方法を説明する.
# apt-get update
# apt-get -s upgrade
# apt-get upgrade
# yum check-update
# yum -C updateもし, プラグイン
yum-plugin-changelog
をインストールしていれば, 更新に関するコメントも確認できる.
# yum -C --changelog update
$ cd arib_std_b25_linux/src $ make
/etc/rc.local
へ以下の1行を追加する.
# echo $PWD/b25m -f >>/etc/rc.local
dvbstream ... | .../src/b25m -c > decrypted.ts
/etc/modprobe.d/bond0.conf
を作成する.
以下の1行を記述する.
alias bond0 bondingオプションはここに書かず,
ifcfg-bond0
へ記述する.
/etc/sysconfig/network-scripts/ifcfg-bond0
を記述する.
例を以下に示す.
DEVICE=bond0 ONBOOT=yes BOOTPROTO=none IPADDR=192.168.254.137 NETMASK=255.255.255.0 NM_CONTROLLED=no BONDING_OPTS='miimon=1000 mode=6'
BONDING_OPTS
で設定可能な項目については,
/usr/share/doc/kernel-doc-*/Documentation/networking/bonding.txt
が参考になる.
ここ
も参考になる.
ifcfg-ethN
の設定を行う. (複数の NIC を使用するので, 毎数分のファイルを設定する.)
/etc/sysconfig/network-scripts/ifcfg-ethN
に以下のような記述を行う.
(ethN
の部分は eth0
, eth1
, ... に置き換えること.)
DEVICE="ethN" HWADDR="01:12:34:56:78:9A" NM_CONTROLLED=no MASTER=bond0 SLAVE=yes
# depmod -a # /etc/init.d/network restart
dd if=/dev/zero bs=8192 ...
を同時に実行して書き込むと,
最大で 1.8Gbps となった. (8秒間隔で ifconfig bond0
を実行し, 送信バイトの増分を求めた.)
--batch-count
は, 両面で 2 と数えるようだ.scanimage --batch --mode Color --batch-count 2 --source 'ADF Duplex'スキャンした画像をPDFに変換するには, 以下のように
pnmtops
と ps2pdf
を使用する.
pnmtops -width 8.27 -height 11.69 out1.pnm | ps2pdf - out1.pdf
dmesg
の結果に [49225.628910] em28xx #0: Here is a list of valid choices for the card=が含まれていたので,insmod option: [49225.628913] em28xx #0: card=0 -> Unknown EM2800 video grabber [49225.628917] em28xx #0: card=1 -> Unknown EM2750/28xx video grabber [49225.628921] em28xx #0: card=2 -> Terratec Cinergy 250 USB [49225.628924] em28xx #0: card=3 -> Pinnacle PCTV USB 2 [49225.628928] em28xx #0: card=4 -> Hauppauge WinTV USB 2 [49225.628931] em28xx #0: card=5 -> MSI VOX USB 2.0 [49225.628934] em28xx #0: card=6 -> Terratec Cinergy 200 USB [49225.628938] em28xx #0: card=7 -> Leadtek Winfast USB II [49225.628941] em28xx #0: card=8 -> Kworld USB2800 [49225.628945] em28xx #0: card=9 -> Pinnacle Dazzle DVC 90/100/101/107 / Kaiser Baas Video to DVD maker / Kworld DVD Maker 2 [49225.628949] em28xx #0: card=10 -> Hauppauge WinTV HVR 900 [49225.628953] em28xx #0: card=11 -> Terratec Hybrid XS [49225.628956] em28xx #0: card=12 -> Kworld PVR TV 2800 RF [49225.628960] em28xx #0: card=13 -> Terratec Prodigy XS [49225.628963] em28xx #0: card=14 -> SIIG AVTuner-PVR / Pixelview Prolink PlayTV USB 2.0 [49225.628967] em28xx #0: card=15 -> V-Gear PocketTV [49225.628970] em28xx #0: card=16 -> Hauppauge WinTV HVR 950 [49225.628974] em28xx #0: card=17 -> Pinnacle PCTV HD Pro Stick [49225.628978] em28xx #0: card=18 -> Hauppauge WinTV HVR 900 (R2) [49225.628981] em28xx #0: card=19 -> EM2860/SAA711X Reference Design [49225.628985] em28xx #0: card=20 -> AMD ATI TV Wonder HD 600 [49225.628988] em28xx #0: card=21 -> eMPIA Technology, Inc. GrabBeeX+ Video Encoder [49225.628992] em28xx #0: card=22 -> EM2710/EM2750/EM2751 webcam grabber [49225.628996] em28xx #0: card=23 -> Huaqi DLCW-130 [49225.628999] em28xx #0: card=24 -> D-Link DUB-T210 TV Tuner [49225.629002] em28xx #0: card=25 -> Gadmei UTV310 [49225.629006] em28xx #0: card=26 -> Hercules Smart TV USB 2.0 [49225.629009] em28xx #0: card=27 -> Pinnacle PCTV USB 2 (Philips FM1216ME) [49225.629013] em28xx #0: card=28 -> Leadtek Winfast USB II Deluxe [49225.629017] em28xx #0: card=29 -> EM2860/TVP5150 Reference Design [49225.629020] em28xx #0: card=30 -> Videology 20K14XUSB USB2.0 [49225.629024] em28xx #0: card=31 -> Usbgear VD204v9 [49225.629027] em28xx #0: card=32 -> Supercomp USB 2.0 TV [49225.629030] em28xx #0: card=33 -> Elgato Video Capture [49225.629034] em28xx #0: card=34 -> Terratec Cinergy A Hybrid XS [49225.629038] em28xx #0: card=35 -> Typhoon DVD Maker [49225.629041] em28xx #0: card=36 -> NetGMBH Cam [49225.629044] em28xx #0: card=37 -> Gadmei UTV330 [49225.629047] em28xx #0: card=38 -> Yakumo MovieMixer [49225.629050] em28xx #0: card=39 -> KWorld PVRTV 300U [49225.629054] em28xx #0: card=40 -> Plextor ConvertX PX-TV100U [49225.629057] em28xx #0: card=41 -> Kworld 350 U DVB-T [49225.629061] em28xx #0: card=42 -> Kworld 355 U DVB-T [49225.629064] em28xx #0: card=43 -> Terratec Cinergy T XS [49225.629068] em28xx #0: card=44 -> Terratec Cinergy T XS (MT2060) [49225.629071] em28xx #0: card=45 -> Pinnacle PCTV DVB-T [49225.629075] em28xx #0: card=46 -> Compro, VideoMate U3 [49225.629078] em28xx #0: card=47 -> KWorld DVB-T 305U [49225.629081] em28xx #0: card=48 -> KWorld DVB-T 310U [49225.629085] em28xx #0: card=49 -> MSI DigiVox A/D [49225.629088] em28xx #0: card=50 -> MSI DigiVox A/D II [49225.629092] em28xx #0: card=51 -> Terratec Hybrid XS Secam [49225.629095] em28xx #0: card=52 -> DNT DA2 Hybrid [49225.629098] em28xx #0: card=53 -> Pinnacle Hybrid Pro [49225.629102] em28xx #0: card=54 -> Kworld VS-DVB-T 323UR [49225.629105] em28xx #0: card=55 -> Terratec Cinnergy Hybrid T USB XS (em2882) [49225.629109] em28xx #0: card=56 -> Pinnacle Hybrid Pro (2) [49225.629112] em28xx #0: card=57 -> Kworld PlusTV HD Hybrid 330 [49225.629116] em28xx #0: card=58 -> Compro VideoMate ForYou/Stereo [49225.629119] em28xx #0: card=59 -> (null) [49225.629123] em28xx #0: card=60 -> Hauppauge WinTV HVR 850 [49225.629126] em28xx #0: card=61 -> Pixelview PlayTV Box 4 USB 2.0 [49225.629130] em28xx #0: card=62 -> Gadmei TVR200 [49225.629133] em28xx #0: card=63 -> Kaiomy TVnPC U2 [49225.629136] em28xx #0: card=64 -> Easy Cap Capture DC-60 [49225.629139] em28xx #0: card=65 -> IO-DATA GV-MVP/SZ [49225.629143] em28xx #0: card=66 -> Empire dual TV [49225.629146] em28xx #0: card=67 -> Terratec Grabby [49225.629149] em28xx #0: card=68 -> Terratec AV350 [49225.629153] em28xx #0: card=69 -> KWorld ATSC 315U HDTV TV Box [49225.629156] em28xx #0: card=70 -> Evga inDtube [49225.629160] em28xx #0: card=71 -> Silvercrest Webcam 1.3mpix [49225.629163] em28xx #0: card=72 -> Gadmei UTV330+ [49225.629166] em28xx #0: card=73 -> Reddo DVB-C USB TV Box [49225.629170] em28xx #0: card=74 -> Actionmaster/LinXcel/Digitus VC211A [49225.629174] em28xx #0: card=75 -> Dikom DK300 [49225.629177] em28xx #0: card=76 -> KWorld PlusTV 340U or UB435-Q (ATSC) [49225.629181] em28xx #0: card=77 -> EM2874 Leadership ISDBT
EM2860/TVP5150 Reference Design
だろうと当たりをつけて rmmod em28xx modprobe em28xx card=29としてみました.
tvtime
で画像は出るようにはなったが, 音声はさらに設定が必要そうだ.
FFmpegへ入力するには, -f video4linux2
でフォーマットを指定し, /dev/video0
を入力にすればよい.
ffmpeg -f video4linux2 -i /dev/video0 output.mpeg追記: 音声の入力方法は, コメント参照. このページによると,
card=40
を使ったが, 音声はクリップ (飽和する?) してキャプチャできなかったらしい.
card=13
(Terratec Prodigy XS) を使用したらしい. 音声は試していないらしい.
snd-usb-audio
としては認識されたが, 映像は取りこめなさそう. これに労力をつぎ込みたくはないので諦めた. dmesg
の結果: [ 3438.892061] usb 2-1.2: new high speed USB device using ehci_hcd and address 3 [ 3439.008484] usb 2-1.2: New USB device found, idVendor=04bb, idProduct=0532 [ 3439.008491] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=10 [ 3439.008496] usb 2-1.2: Product: I-O DATA GV-USB2 [ 3439.008499] usb 2-1.2: Manufacturer: I-O DATA [ 3439.008502] usb 2-1.2: SerialNumber: 000000000000001 [ 3439.510572] ALSA sound/usb/clock.c:219: 3:2:1: endpoint lacks sample rate attribute bit, cannot set. [ 3439.511184] usbcore: registered new interface driver snd-usb-audio
/proc/bus/usb/devices
の一部: T: Bus=02 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#= 3 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=04bb ProdID=0532 Rev= 0.05 S: Manufacturer=I-O DATA S: Product=I-O DATA GV-USB2 S: SerialNumber=000000000000001 C:* #Ifs= 3 Cfg#= 1 Atr=80 MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) E: Ad=81(I) Atr=03(Int.) MxPS= 0 Ivl=2ms E: Ad=82(I) Atr=01(Isoc) MxPS= 0 Ivl=125us I: If#= 0 Alt= 1 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=2ms E: Ad=82(I) Atr=01(Isoc) MxPS= 768 Ivl=125us I: If#= 0 Alt= 2 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=2ms E: Ad=82(I) Atr=01(Isoc) MxPS=1020 Ivl=125us I: If#= 0 Alt= 3 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=2ms E: Ad=82(I) Atr=01(Isoc) MxPS=1024 Ivl=125us I: If#= 0 Alt= 4 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=2ms E: Ad=82(I) Atr=01(Isoc) MxPS=2048 Ivl=125us I: If#= 0 Alt= 5 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none) E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=2ms E: Ad=82(I) Atr=01(Isoc) MxPS=3072 Ivl=125us I:* If#= 1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=01 Prot=00 Driver=snd-usb-audio I:* If#= 2 Alt= 0 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio E: Ad=84(I) Atr=05(Isoc) MxPS= 0 Ivl=125us I: If#= 2 Alt= 1 #EPs= 1 Cls=01(audio) Sub=02 Prot=00 Driver=snd-usb-audio E: Ad=84(I) Atr=05(Isoc) MxPS= 256 Ivl=1ms
# fsck /dev/VolGroup00/snap1 fsck 1.39 (29-May-2006) e2fsck 1.39 (29-May-2006) /dev/VolGroup00/snap1: clean, 502353/134217728 files, 18419731/134217728 blocks # fsck -n /dev/VolGroup00/snap1 fsck 1.39 (29-May-2006) e2fsck 1.39 (29-May-2006) /dev/VolGroup00/snap1: clean, 502353/134217728 files, 18419731/134217728 blocks # tune2fs -O ^has_journal /dev/VolGroup00/snap1 # e2fsck -f /dev/VolGroup00/snap1 e2fsck 1.39 (29-May-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/VolGroup00/snap1: 502353/134217728 files (0.6% non-contiguous), 18386929/134217728 blocksファイルシステムの縮小. 操作が完了したら, 何ブロックになったか出力されるので, この数値を確認する. この例では, ちょうど 50331648 × 4096 = 192 × 10243 なので OK.
# resize2fs /dev/VolGroup00/snap1 192G resize2fs 1.39 (29-May-2006) Resizing the filesystem on /dev/VolGroup00/snap1 to 50331648 (4k) blocks. sudo tune2fs -O has_journal /dev/VolGroup00/snap1 The filesystem on /dev/VolGroup00/snap1 is now 50331648 blocks long.ジャーナルを戻す.
# tune2fs -O has_journal /dev/VolGroup00/snap1 tune2fs 1.39 (29-May-2006) Creating journal inode: done This filesystem will be automatically checked every -1 mounts or 0 days, whichever comes first. Use tune2fs -c or -i to override.縮小した領域を別のパーティションにコピーする.
# lvcreate -L 192G -n root1 VolGroup00 /dev/sdb2 # dd if=/dev/VolGroup00/snap1 of=/dev/VolGroup00/root1 bs=4096 count=50331648 (全てのブロックが書き込まれたか確認する.)この操作中 (とくに resize2fs の間に), スナップボリュームの COW テーブルはかなりたくさん使用された. (もともとの /dev/VolGroup00/LogVol00 は 496GB 中 55 GB だけが使用されていた.)
--- Logical volume --- LV Name /dev/VolGroup00/snap1 VG Name VolGroup00 LV UUID ZBrQlU-Xhut-Efbu-uDmV-VG3n-yobg-tC0l9Y LV Write Access read/write LV snapshot status active destination for /dev/VolGroup00/LogVol00 LV Status available # open 0 LV Size 512.00 GB Current LE 16384 COW-table size 64.00 GB COW-table LE 2048 Allocated to snapshot 28.12% Snapshot chunk size 4.00 KB Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:3
$ lvdisplay -mで知ることができる. 通常は1つの PV から順に確保されてゆくため, アクセスの多い LV が 1 台の HDD へ偏ってしまうことが起こりうる. このような状況になった場合でも, LV を使用中に使用する PV を変更することができる. この手順は以下のようになる.
VolGroup00
上の LV LogVol01
が
/dev/sda2
上に割り当てられている時に
/dev/sdb2
へ移動する場合は,
以下のコマンドになる.
# lvconvert -m 1 --alloc anywhere /dev/VolGroup00/LogVol01 /dev/sdb2 # lvconvert -m 0 /dev/VolGroup00/LogVol01 /dev/sda2
+-----+ | 4| | 3| | 2| | 1 | +-----+チューナ, ASIE5607, 5211 の対応するピン番号は以下のようになる.
Tuner | 5607入力 | 5607出力 | 5211 (1) | 5211 (2) |
---|---|---|---|---|
3 | 49 | 30 | 62 | 12 |
4 | 50 | 29 | 63 | 11 |
1 | 51 | 28 | 9 | 13 |
2 | 52 | 31 | 61 | 10 |
umount: /: device is busy.
umount /: デバイスがビジーです。というメッセージが表示されてアンマウントできない. このようなときには,
umount
に -l
オプションをつけるとよい.
lazy アンマウントとよばれ,
ファイルシステム階層構造からはすぐに切り離されるが,
ファイルシステムへのビジーな参照がなくなった時点でアンマウントされる.
すなわち,
lazy アンマウントしたファイルシステムへの新たなアクセスはできなくなるが,
既に開いているファイルへのアクセスは中断されない.
xfce4-session: Another session manager is already runningこれは, VNC サーバを起動するときに, 端末の XFCE セッションが設定した環境変数が, VNC 中の XFCE セッションに伝わってしまって, 既にセッションが起動済みであると判断してしまっているためだろう. こんなときには一度ローカルマシンに SSH などでログインして, その中で VNC サーバを起動すればよい.
$ ssh localhost vncserver
*.so
) は,
プログラムの実行時に ld.so
によって自動的にリンクされるオブジェクトです.
しかし, SELinux を使用していると,
error while loading shared libraries: *.so: cannot restore segment prot after reloc: Permission deniedといったエラーが出ることがあります. 例えば, Firefox などのようにバイナリをダウンロードし展開して使用すると, このようなエラーに遭遇することがあるでしょう. このときには,
chcon
を使用して,
問題の共有ライブラリのセキュリティコンテキストの種類を textrel_shlib_t
に変更しましょう.
chcon -t textrel_shlib_t *.soもし, 共有ライブラリがたくさんあるのであれば,
find
を使用して,
find -name '*.so*' | xargs echo chcon -t textrel_shlib_tとすると, サブディレクトリにある共有ライブラリのセキュリティコンテキストも変えることができます.
rm
で削除したファイルを復元する機能が提供されていません.
そこで, rm
をゴミ箱に移動するコマンドに置き換える方法を紹介します.
ここで紹介する機能は,
function rms { # safe rm local rm_opt='-v -i' local mv_opt='' OPTIND=0 while getopts firv flag; do case $flag in f) mv_opt="$mv_opt -f";; i) mv_opt="$mv_opt -i";; r) rm_opt="$rm_opt -r";; v) mv_opt="$mv_opt -v";; *) OPT_ERROR=1; break;; esac done if [[ $OPT_ERROR ]]; then echo "usage: $0 -firv files..." >&2 exit $OPT_ERROR fi shift $((OPTIND-1)) local trashes=( ~/.trash /tmp/trash-$USER ) mkdir "$trashes" &>/dev/null local i t local date=$(date +'%Y%m%d-%H%M%S') for i in "$@"; do local found='' for t in ${trashes[@]}; do if test "$(stat -c '%D' "$i")" = "$(stat -c '%D' "$t")"; then local tt=$t/$date/ mkdir $tt &>/dev/null mv $mv_opt "$i" $tt && local found=1 fi test -n "$found" && break done test -z "$found" && /bin/rm $rm_opt "$i" done } alias rm=rms
mand
を追加しなければならない.
アドバイザリロックでは, ファイルが「ロック」されていても,
他のプロセスが読み書きなどのアクセスを行うことができる.
機構 | 種類 | 範囲 | 所有者 |
---|---|---|---|
fcntl | 排他, 共有 | バイト単位で範囲指定 | プロセス |
flock | 排他, 共有 | ファイル単位 | ファイルディスクリプタ |
lockf | 排他のみ | バイト単位で範囲指定 |
flock
では,
ファイルディスクリプタがロックを所有し,
複製 (fork
, dup
などで作成されるもの) は同じロックを参照する.
複製したファイルディスクリプタのうちいずれかに対して明示的にアンロック操作をした場合か,
ロックを参照する全てのファイルディスクリプタが閉じられたときにロックが開放される.
ひとつのプロセスが同じファイルに対する複数のファイルディスクリプタを取得した場合には,
それぞれに対して独立したロックが生成される.
Linux では, lockf
は fcntl
へのインターフェイスとして実装されている.
fcntl
では,
プロセスがロックを所有し,
fork
で作成された子プロセスには継承されないが,
execve
の前後ではロックが保存される.
ひとつのプロセスが同じファイルに対して複数のファイルディスクリプタを取得している場合には,
ロックは共通している.
ロックが適用されているファイルを参照しているファイルディスクリプタのいずれかが閉じられたとき,
ロックが開放される.
すなわち, 例えば /etc/passwd
のロックを所有しているときに,
あるライブラリ関数がそのファイルを open, close すると,
そのファイルへのロックが開放される.
smbd/notify_inotify.c:421(inotify_watch) inotify_add_watch returned Permission deniedといったログが出力され, Windows からディレクトリ内のファイル一覧を取得できないことがある. このとき, SELinux がファイルへのアクセスを妨げている可能性がある. SELinux のマニュアルはいくつかあるが,
samba_selinux(8)
に
samba を使用する際の操作方法などが例を交えてかかれている.
これにしたがって,
sudo setsebool -P samba_enable_home_dirs 1と命令すると, Windows からホームディレクトリを読み出せるようになるだろう.
Linux 上の X では, マウスカーソルが上にあるウィンドウをフォーカスし, 全面に移す機能がある. タスクリストから目的のウィンドウを選択したりタイトルバーをクリックしなくても, 別のウィンドウを選択できるので, 便利なことがある.
Windows でも同様の機能がないかと探して見たところ, よく似た機能が備わっていることが分かった. このページ Activate a window by hovering over it with the mouse にかかれていた.
これによると, マウスカーソルが上にくると (1秒くらい経ってから), ウィンドウがアクティブになる. すなわち, ウィンドウにフォーカスが移り, 全面に表示される.
X と違い Windows では, フォーカスが移ると同時に全面に表示される.
X では, マウス移動からウィンドウがフォーカス取得までの時間を短くし, フォーカス取得から全面に移動するまでの時間を長くしておくことで, マウスを文献からエディタへ移動してすぐプログラムをタイプし始めるといった使い方ができた. しかし, Windows で同じように操作すると. アクティブになる前に 最初の数文字をタイプして思い通りの動作をしなかった.
X と Windows とで動作がやや異なるが, それでもこの機能は便利であると思う.