(重要事項) 自分の中では、特にはなかった。 (リリースノートには書かれていないが目に留まったもの) ■tcsh617 の追加 tcsh 6.17 にリベースしたパッケージが提供されているようだ。 csh を使ってハマっている場合に、試してみると良さそう。 ■rm コマンドの性能向上 https://bugzilla.redhat.com/show_bug.cgi?id=523923 1つのディレクトリに多数のファイルが存在する場合、コーディング上の工夫により、性能向上を達成するらしい。下手に C で書くよりも、rm を呼んで、その最適化されたコードを利用したほうがお得な場合もあるかも。
2011年9月20日火曜日
CentOS 5.7 のトピックス
CentOS 5.7 で新たに追加された機能等の、自分用メモです。
2011年9月10日土曜日
Fedora 16 に新採用された chrony の設定
Fedora 16 (今現在は Alpha ですが) では、NTP クライアントが ntpd から chronyd に変更されています。設定方法について、メモです。
まず、rpm 情報です。
ここまで書いてなんですが、ntpd が無くなったわけではないので、そちらの方が良ければ、入れれば良いです。
2014-05-05追記
RHEL7.0 RC を試しましたが、デフォルトの NTP クライアントは、やはり chrony に変更になっていました。設定/操作方法は、Fedora 16 で調べた時と特段変わりないようです。それと、やはり ntpd も収録されているので、そちらを使うことも可能でした。
2015-02-01追記
追記していませんでしたが、RHEL7/CentOS7 では、デフォルトの NTP クライアントは、chrony でリリースされています。
殆どの場合、/etc/chronyd.conf 中の server 行を修正して、systemctl restart chrony.service を実行するだけで良いかと思います。6ヶ月以上動かしているマシンがありますが、chrony に関して特段不都合は無い感触です。
なお、ntpd に切り替えることもできるので、これまでの運用経験値・実績を重視するのであれば、切り替える選択肢もあります。当然ではありますが、ネット上の情報量は ntpd のほうが多いというメリットもあります。
まず、rpm 情報です。
[root@fedora16 ~]# rpm -qi chrony Name : chrony Version : 1.26 Release : 3.20110831gitb088b7.fc16 Architecture: x86_64 Install Date: Sat 10 Sep 2011 06:54:41 AM JST Group : System Environment/Daemons Size : 546684 License : GPLv2 Signature : RSA/SHA256, Tue 06 Sep 2011 07:54:34 PM JST, Key ID 067f00b6a82ba4b7 Source RPM : chrony-1.26-3.20110831gitb088b7.fc16.src.rpm Build Date : Wed 07 Sep 2011 12:29:09 AM JST Build Host : x86-14.phx2.fedoraproject.org Relocations : (not relocatable) Packager : Fedora Project Vendor : Fedora Project URL : http://chrony.tuxfamily.org Summary : An NTP client/server Description : A client/server for the Network Time Protocol, this program keeps your computer's clock accurate. It was specially designed to support systems with intermittent internet connections, but it also works well in permanently connected environments. It can use also hardware reference clocks, system real-time clock or manual input as time references.systemd の初期状態を確認。chronyd は disabled になってます。#それにしても、systemctl コマンドに慣れないなあ、、、
[root@fedora16 ~]# systemctl status chronyd.service chronyd.service - NTP client/server Loaded: loaded (/lib/systemd/system/chronyd.service; disabled) Active: inactive (dead) CGroup: name=systemd:/system/chronyd.serviceこれを、enable に変更する。
[root@fedora16 ~]# systemctl enable chronyd.service ln -s '/lib/systemd/system/chronyd.service' '/etc/systemd/system/multi-user.target.wants/chronyd.service' [root@fedora16 ~]# systemctl status chronyd.service chronyd.service - NTP client/server Loaded: loaded (/lib/systemd/system/chronyd.service; enabled) Active: inactive (dead) CGroup: name=systemd:/system/chronyd.service設定ファイル (/etc/chronyd.conf) は、ntpd と似た雰囲気です。
[root@fedora16 ~]# rpm -qc chrony ※設定ファイルの所在を確認 /etc/chrony.conf /etc/chrony.keys /etc/logrotate.d/chrony
# Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server 0.fedora.pool.ntp.org iburst server 1.fedora.pool.ntp.org iburst server 2.fedora.pool.ntp.org iburst server 3.fedora.pool.ntp.org iburst # Ignore stratum in source selection. stratumweight 0 # Record the rate at which the system clock gains/losses time. driftfile /var/lib/chrony/drift # Enable kernel RTC synchronization. rtcsync # In first three updates step the system clock instead of slew # if the adjustment is larger than 100 seconds. makestep 100 3 # Allow client access from local network. #allow 192.168/16 # Serve time even if not synchronized to any NTP server. #local stratum 10 keyfile /etc/chrony.keys # Specify the key used as password for chronyc. commandkey 1 # Disable logging of client accesses. noclientlog # Send a message to syslog if a clock adjustment is larger than 0.5 seconds. logchange 0.5 logdir /var/log/chrony #log measurements statistics trackingそんでもって起動!
[root@fedora16 ~]# systemctl start chronyd.service ※起動! [root@fedora16 ~]# systemctl status chrnoyd.service ※打ちにくい、、、typo した、、、 chrnoyd.service Loaded: error (Reason: No such file or directory) Active: inactive (dead) [root@fedora16 ~]# systemctl status chronyd.service ※確認 chronyd.service - NTP client/server Loaded: loaded (/lib/systemd/system/chronyd.service; enabled) Active: active (running) since Sat, 10 Sep 2011 20:54:47 +0900; 14s ago Process: 19657 ExecStartPost=/usr/libexec/chrony-helper add-dhclient-servers (code=exited, status=0/SUCCESS) Process: 19654 ExecStart=/usr/sbin/chronyd -u chrony $OPTIONS (code=exited, status=0/SUCCESS) Process: 19645 ExecStartPre=/usr/libexec/chrony-helper generate-commandkey (code=exited, status=0/SUCCESS) Main PID: 19656 (chronyd) CGroup: name=systemd:/system/chronyd.service └ 19656 /usr/sbin/chronyd -u chronyntpq のような状態確認は、chronyc で行います。
[root@fedora16 ~]# chronyc sources -v 210 Number of sources = 4 .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = OK for sync, '?' = unreachable, | / 'x' = time may be in error, '~' = time is too variable. || .- xxxx [ yyyy ] +/- zzzz || / xxxx = adjusted offset, || Log2(Polling interval) -. | yyyy = measured offset, || \ | zzzz = estimated error. || | | MS Name/IP address Stratum Poll LastRx Last sample ============================================================================ ^+ javanese.kjsl.com 2 6 18 -11ms[ -11ms] +/- 211ms ^* balthasar.gimasystem.jp 3 6 20 +321us[ +815us] +/- 53ms ^+ z2.ktroad.net 3 6 20 +1228us[+1722us] +/- 75ms ^+ 219x123x70x90.ap219.ftth. 2 6 20 -3397us[-3397us] +/- 57ms [root@fedora16 ~]# chronyc sourcestats -v 210 Number of sources = 4 .- Number of sample points in measurement set. / .- Number of residual runs with same sign. | / .- Length of measurement set (time). | | / .- Est. clock freq error (ppm). | | | / .- Est. error in freq. | | | | / .- Est. offset. | | | | | | On the -. | | | | | | samples. \ | | | | | | | Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev ============================================================================== javanese.kjsl.com 10 6 397 2.808 6.249 -12ms 570us balthasar.gimasystem.jp 10 8 395 0.171 8.376 +3871ns 717us z2.ktroad.net 10 5 395 0.157 8.272 +1367us 600us 219x123x70x90.ap219.ftth. 10 6 395 2.790 10.922 -3060us 979us
ここまで書いてなんですが、ntpd が無くなったわけではないので、そちらの方が良ければ、入れれば良いです。
[root@fedora16 ~]# yum search ntp | grep ^ntp.x86_64 ntp.x86_64 : The NTP daemon and utilities
2014-05-05追記
RHEL7.0 RC を試しましたが、デフォルトの NTP クライアントは、やはり chrony に変更になっていました。設定/操作方法は、Fedora 16 で調べた時と特段変わりないようです。それと、やはり ntpd も収録されているので、そちらを使うことも可能でした。
2015-02-01追記
追記していませんでしたが、RHEL7/CentOS7 では、デフォルトの NTP クライアントは、chrony でリリースされています。
殆どの場合、/etc/chronyd.conf 中の server 行を修正して、systemctl restart chrony.service を実行するだけで良いかと思います。6ヶ月以上動かしているマシンがありますが、chrony に関して特段不都合は無い感触です。
なお、ntpd に切り替えることもできるので、これまでの運用経験値・実績を重視するのであれば、切り替える選択肢もあります。当然ではありますが、ネット上の情報量は ntpd のほうが多いというメリットもあります。
Fedora 16 Alpha で GRUB2 をパーティションにインストール
Fedora 16 Alpha を試そうと、マルチブート環境 (マシンは ThinkPad X301) のパーティションの1つにインストールしましたが、インストールの終盤で bootloader のインストールに失敗したというエラーが出て、起動できず、いきなりハマってしまいました。
バグ情報を見たら、bootloader をパーティションにインストールできないよ とありました。
http://fedoraproject.org/wiki/Common_F16_bugs
仕方が無いので、レスキューモードでなんとかなるだろうと、ほぼ初体験の GRUB2 で悪戦苦闘。GRUB1 とほぼ同じだろうと、grub2-install をかけるも NG。--force をつけても NG。その後、grub2-各種 の --help を見ながら格闘しましたが、レスキューモードではうまく行きませんでした。
そんじゃあ別のパーティションに入っている Fedora 15 に GRUB2 を入れてなんとかできないかと、さらに格闘すること1時間ぐらい、やっと成功しました。
Fedora 15 で使ったコマンドは、次のような感じです。今回、/dev/sda8 に Fedora 16 を入れています。
最後にスクリーンショットでもと思ったのですが、PNG ファイルをセーブするときにクラッシュしてしまうようなので、ここまでです。なお、現在の Fedora (というか GNOME?) だと、PrtSc キー押下でスクリーンショットのキャプチャーが出来ます。つまり、Windows と同じ操作方法ということ。
2011-10-01追記
アップデートしたら、スクリーンショットが落ちなくなったので、いくつかアップします。
バグ情報を見たら、bootloader をパーティションにインストールできないよ とありました。
http://fedoraproject.org/wiki/Common_F16_bugs
Installation issues Installer cannot install bootloader to a system partition (but will try and fail) link to this item - Bugzilla: #730915 Fedora 16 uses the GRUB 2 bootloader for new installations. GRUB 2 does not currently support installation to a partition (rather than the MBR), but the Fedora 16 Alpha installer will still allow you to try and install the bootloader to a partition. This will fail, and so if you attempt this, the Fedora 16 Alpha installer will not install a bootloader at all. The installed system will be functional. To work around this issue, you can adjust your bootloader configuration from another installed operating system. You can force installation of GRUB 2 to the Fedora partition by booting the Fedora 16 Alpha installation disc in rescue mode, using chroot to access the installed system, and running grub2-install --force '(hd0,5)' (where hd0,5 is the appropriate designation for the target partition, with GRUB 2 partition numbering starting at 1 as opposed to 0 with old GRUB). Alternatively, specify an ordinary partition device name such as /dev/sda5. Note that with --force the warnings are still printed. This issue will be resolved in Fedora 16 Beta: the installer will use the --force parameter when trying to install the bootloader to a partition.わたしのマルチブート環境では、MBR には MBM を入れてあり、Fedora や CentOS のインストール時には、各パーティションの PBR に GRUB を入れるという構成にしています。GRUB2 の場合、PBR へのインストール時には --force オプションを指定する必要があるようですが、F16 Alpha のインストーラーが --force をつけていないために、失敗してしまうようです。
仕方が無いので、レスキューモードでなんとかなるだろうと、ほぼ初体験の GRUB2 で悪戦苦闘。GRUB1 とほぼ同じだろうと、grub2-install をかけるも NG。--force をつけても NG。その後、grub2-各種 の --help を見ながら格闘しましたが、レスキューモードではうまく行きませんでした。
そんじゃあ別のパーティションに入っている Fedora 15 に GRUB2 を入れてなんとかできないかと、さらに格闘すること1時間ぐらい、やっと成功しました。
Fedora 15 で使ったコマンドは、次のような感じです。今回、/dev/sda8 に Fedora 16 を入れています。
# mkdir /mnt_sda8 # mount /dev/sda8 /mnt_sda8 # grub2-install --force --root-directory=/mnt_sda8 /dev/sda8 # chroot /mnt_sda8 # grub2-mkconfig > /boot/grub2/grub.cfgGRUB2 の設定ファイル grub.cfg は手書きではないようで、上記のように grub2-mkconfig で生成するという方式になっているようです。
最後にスクリーンショットでもと思ったのですが、PNG ファイルをセーブするときにクラッシュしてしまうようなので、ここまでです。なお、現在の Fedora (というか GNOME?) だと、PrtSc キー押下でスクリーンショットのキャプチャーが出来ます。つまり、Windows と同じ操作方法ということ。
2011-10-01追記
アップデートしたら、スクリーンショットが落ちなくなったので、いくつかアップします。
2011年9月1日木曜日
perl でオプション解析(getoptコマンド編)
perl から、getopt(1) コマンドを呼び出してオプション解析するテンプレートです。
空白を含むような item にも対応できるように、get_quotedwordstr を記述しています。
また、getopt(1) の処理結果をうまく単語分割して配列に格納するため、Text::ParseWords に含まれる shellwords を使いました。これの存在に気づくまで時間がかかりました。
実行結果は、次のようになります。
perl でオプション解析(Getopt::Std編)
#!/usr/bin/perl # # getopt-cmd-template.pl # use Text::ParseWords ; sub usage_exit { print STDERR "Usage: getopt-cmd-template.pl [-a] [-d dir] item1 item2 ...\n" ; exit 1 ; } sub get_quotedwordstr { my $s ; foreach (@_) { $s = sprintf("$s '%s'", "$_") ; } return $s ; } print "@ARGV\n" ; ####DEBUG $argstr = get_quotedwordstr(@ARGV) ; print "$argstr\n" ; ####DEBUG $optstr = `getopt -q -o ad:h -- $argstr` ; if ($? != 0) { usage_exit ; } @opts = shellwords($optstr) ; while (1) { $_ = shift @opts ; m/^$/ && do { next ; } ; m/^-a/ && do { $opt_a = 1 ; next ; } ; m/^-d/ && do { $opt_d = shift @opts ; next ; } ; m/^--/ && do { last ; } ; usage_exit ; } $argc = scalar @opts ; print "\$argc=$argc\n" ; ####DEBUG print "\@opts=@opts\n" ; ####DEBUG print "\$opt_a=$opt_a\n" ; ####DEBUG print "\$opt_d=$opt_d\n" ; ####DEBUGひと手間かかった部分だけ補足しますと、
空白を含むような item にも対応できるように、get_quotedwordstr を記述しています。
また、getopt(1) の処理結果をうまく単語分割して配列に格納するため、Text::ParseWords に含まれる shellwords を使いました。これの存在に気づくまで時間がかかりました。
実行結果は、次のようになります。
# ./getopt-cmd-template.pl -d dir item1 item2 -d dir item1 item2 '-d' 'dir' 'item1' 'item2' $argc=2 @opts=item1 item2 $opt_a= $opt_d=dirコマンドラインの後半でオプション指定しても、うまく処理されます。
# ./getopt-cmd-template.pl item1 item2 -d dir item1 item2 -d dir 'item1' 'item2' '-d' 'dir' $argc=2 @opts=item1 item2 $opt_a= $opt_d=dirGetopt::Std では、このように、うまく処理はできません。次の記事を参照ください。
perl でオプション解析(Getopt::Std編)
登録:
投稿 (Atom)