※ ChatGPTを利用し、要約された質問です(原文:perl readlink 返り値にゴミ文字が・・・)
perl readlink 返り値にゴミ文字が・・・
このQ&Aのポイント
perlのreadlinkを使用すると返り値にゴミが付与された状態になり困っています。mysqlのバージョンアップを実施し、prelinkを起動し、readlinkにて返り値を確認するとゴミ文字が付与されてしまいます。
readlinkは返り値にゴミ文字を付与してしまう理由、prelinkを実行するとreadlinkの不具合が発生する理由について教えてください。
bindのバージョンアップを実施してprelinkを起動させた場合、readlinkの返り値にゴミ文字が混ざらなかった理由を教えてください。
perl readlink 返り値にゴミ文字が・・・
いつもお世話になっています。
OS:Redhat Linux5.2
Perl:5.8.8
perlのreadlinkを使用すると返り値にゴミが付与された状態になり困っています。
状況としては、mysqlのバージョンアップ(rpmにて)を実施しました。
その後、prelinkを起動し、readlinkにて返り値を確認するとゴミ文字が付与されてしまいます。
# ps aux | grep mysql | grep -v root
mysql 9279 0.0 0.3 117688 12664 ? Sl Aug24 0:00 /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/hostname.pid --skip-external-locking
#
# cat test.pl
#!/usr/bin/perl
$i = readlink('/proc/9279/exe') ;
print ("$i\n") ;
#
# ./test.pl
/usr/sbin/mysqld4a924ea5I ;deleted)
#
Webで調べると以下のページでreadlinkにゴミ文字が付与されて困っている同様のやり取りをしているようですが、読み解けずこちらで質問をさせていただきます。
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-05/msg00398.html
【質問1】
何故、readlinkは返り値にゴミ文字を付与してしまうのでしょうか?
【質問2】
私が確認したのは、prelink実行後なのですが、何故prelinkを実行するとreadlinkの不具合を併発するのでしょうか?
【質問3】
質問1とかぶってしまうかも知れませんが、試しにbindのバージョンアップを実施してprelinkを起動させましたが、同様の事象(readlinkの返り値にゴミが混ざる)になりませんでした。
この理由が知りたいです。
ちなみに、mysqlもbindも/usr/sbin上で起動しています。
★参考
# cat /etc/prelink.conf
# This config file contains a list of directories both with binaries
# and libraries prelink should consider by default.
# If a directory name is prefixed with `-l ', the directory hierarchy
# will be walked as long as filesystem boundaries are not crossed.
# If a directory name is prefixed with `-h ', symbolic links in a
# directory hierarchy are followed.
# Directories or files with `-b ' prefix will be blacklisted.
-b *.la
-b *.png
-b *.py
-b *.pl
-b *.pm
-b *.sh
-b *.xml
-b *.xslt
-b *.a
-b *.js
-b /lib/modules
-b /usr/lib/locale
-b /usr/X11R6/lib{,64}/X11/xfig
-b /usr/lib{,64}/libfreebl3.so
-b /usr/lib{,64}/libsoftokn3.so
-l /bin
-l /usr/bin
-l /sbin
-l /usr/sbin
-l /usr/X11R6/bin
-l /usr/kerberos/bin
-l /usr/games
-l /usr/libexec
-l /var/ftp/bin
-l /lib{,64}
-l /usr/lib{,64}
-l /usr/X11R6/lib{,64}
-l /usr/kerberos/lib{,64}
-l /usr/X11R6/LessTif
-l /var/ftp/lib{,64}
#
質問1,2,3のうち何でも結構です。
皆様の知恵をお貸し下さい。
宜しくお願いします。
お礼
t-okuraさん ご回答ありがとうございます。 確かに運用の中で対処していけばいいんですよね。 readlinkに関しては検討しようと思います。 今回、prelinkを実行するとゴミ文字がついてしまうので prelinkのバグ(?)とも考えているんですが、何故prelinkを実行すると ゴミ文字がつくかは未だに謎です・・・ ただ、prelinkに関してはこれ以上回答がなさそうなので 締め切ろうと思います。 ありがとうございました!