Solaris8 なのですが、「/var/log/syslog」に、 TCPコネクションのログを出力させたいのです。 telnet、ftpなど、接続したログを出力したいの です。 どのようにすればよいのでしょうか。 「/etc/syslog.conf」には、以下の様な記述をしています。 user.notice /var/log/syslog syslogのデーモンも再起動したのですが、出力されません。 |
>>4829 68user ftpのログを取得するAIXの場合の例です。 #vi /etc/inetd.conf (ftpのエントリーで最後に「-l」または「-d」オプションを追加) ftp .... /usr/sbin/ftpd ftpd -l または ftpd -d (転送ファイル名を確認するだけであれば -l オプションの方がログが少なくて済みます) #refresh -s inetd (inetdデーモンをリフレッシュ) #vi /etc/syslog.conf (syslog設定ファイルにftpのログを取得するためのエントリを追加) daemon.info /tmp/ftpd.log (daemon.debugであればもう少し詳しい詳細が確認できます) #touch /tmp/ftpd.log (ログファイルを作成) #refresh -s syslogd (syslogデーモンを再起動) |
>>4931 バンガード ごめんなさい。 4929へのコメントでした。 |
>>4932 バンガード お礼が遅れ申し訳ありません。 ご説明ありがとうございます。 どちらにしてもデーモンの再起動(リフレッシュ)が 必要なんですね。 |
Solaris8 なのですが、シェルを実行する際、 ./シェル名としないと起動できません。 「./」で起動するにはどうしたらよいのでしょうか。 「./」で起動できるアカウントがあるので、違いを比べてみると PATHの変数が異なっていました。 PATH=./:/usr/bin・・・・・ とか PATH=・・・・/usr/bin: PATH変数の中に、「./」の設定がある。 PATH変数が「:」で終わっている。 「./」を指定しないと動かないアカウントは、両方がない状況と なっています。 どのように環境変数を設定すればよいのですか。 |
>>4934 べた > 「./」で起動するにはどうしたらよいのでしょうか。 「./」なしで起動したいということでしょうか? PATH 環境変数に ./ を含めれば可能ですが、お勧めはしません。 特定のディレクトリにスクリプトを集めて、そのディレクトリを PATH 環境変数に含める方がよいと思います。 なお、同じ名前のコマンド(スクリプト)が複数のディレクトリに 存在する場合は、PATH 環境変数で先に見つかったコマンド (左側のパスから順番に探しに行きます)が実行されます。 |
>>4934 べた PATH に . を含めない理由は以下のとおり。 ・セキュリティホールとなる。PATH=.:/bin:/usr/bin:/usr/local/bin となっていて、 cd ~foo; ls としたときに /home/foo/ls が存在したら、そのプログラムを実行 してしまう。cd /tmp; ls も同様。そのプログラムがどんな悪さをするかはわからない。 ・PATH に . を加えると、カレントディレクトリによって実行されるコマンドが異なる 可能性があるため、説明がめんどくさいし、はまりやすくなる。例えば /bin と /usr/bin に同名のコマンドがあるとして、コマンド foo をタイプしたときに、 - カレントディレクトリが /usr/bin の場合は /usr/bin/foo が実行される - カレントディレクトリが /usr/bin 以外の場合は /bin/foo が実行される というのはわかりづらい。 ・csh・tcsh・bash・zsh など、今どきなシェルを使っている場合は、 ./ からタイプした方がファイル名補完を使えるため、入力が速い。 |
>> 4935 >> 4936 返事が遅くなってすみません。 分かり易く説明ありがとうございます。 勉強になります。 |
Cシェルでのリダイレクションについてなのですが コマンドの実行結果で、標準エラー出力を捨てて、標準出力 だけを見たいのですがどうすればよいのですか。 cat file.txt >& /dev/null では、標準出力、標準エラー共に捨てられますが、 標準エラーを捨てて、標準出力を表示したい。 cat file.txt 2 >& /dev/null cat file.txt >2& /dev/null cat file.txt >& 2 /dev/null cat file.txt > /dev/tty >2 /dev/null cat file.txt > /dev/tty >& /dev/null とやってみたのですが、どれも上手くいきません。 どうすればよいのでしょうか。 環境は、 Solaris8 Cシェル です。 |
>>4942 べた tty 宛でよいなら、サブシェルを使って ( cat file.txt > /dev/tty ) >& /dev/null です。 |
>> 4944 ありがとうございます。 > tty 宛でよいなら、サブシェルを使って > ( cat file.txt > /dev/tty ) >& /dev/null > です。 出来ました。 tty 宛でよいなら、サブシェルを使って tty を使わない方法もあるのですか。あるのでした教えてください。 サブシェルとは。 「( command )」とはどのよな使い方でしょうか。 良い案が思い浮かばなかったので、「cat file.txt > /dev/tty」で 表示ができたので、 /dev/tty を使えば上手くできるのではないかと。 |
>>4944 べた tty を使わないなら、 ( cat file.txt > out.txt ) >& /dev/null などとファイルに保存する。 あるいは mknod や mkfifo で名前付きパイプを作ってそこに 流すなど (さすがに標準エラー出力を捨てるためにここまで やるのはバカバカしいですが)。 mkfifo out cat out & ( cat file.txt > out ) >& /dev/null あるいは sh -c "ls cat file.txt 2>/dev/null" などと sh で逃げる手もあります。 csh でやるなら、これ以外の方法はおそらくないです。 > サブシェルとは。 > 「( command )」とはどのよな使い方でしょうか。 こちらをどうぞ。 http://x68000.q-e-d.net/~68user/unix/pickup?%A5%B5%A5%D6%A5%B7%A5%A7%A5%EB |
>> 4945 ご説明ありがとうございます。 Windows XPの別端末で書き込みをしたら 「エラー : 内部エラーが起こりました。」 の画面が表示されました。 何かあるのでしょうか。 |
こんにちは.linuxを使い始めたものです. パイプに関する質問です.環境はVine Linux のbashです. あるファイル名(ここではtestfile)のものを検索して, さらにその中身に"test"という文字列を含むかどうかを 知りたいと思っています. 対象のファイルがひとつとは限りません.例えば, ........... ../Data1/testfile ⇒(中身)This is test file. ........... ../Data2/testfile ⇒ (中身) This is hoge hoge. といった感じで同じ名前のファイルが別のディレクトリにあります. cat,find, grepを組み合わせれば出来そうな気はしているのですが, findしてリスト表示されたファイル名を引数としてcatコマンドに 渡すことができません. 自分なりにいろいろ検索しましたが,よくわかりませんでした.. よろしくご教授ください. |
>>4947 素人 親ディレクトリ以下の testfile というファイル名のファイル中に test という文字列があるものをリストアップ、であれば % find ../ -name testfile | xargs grep -l test でしょうか。それを cat するなら % find ../ -name testfile | xargs grep -l test | xargs cat ですかね。 |
>>4948 68user できました!答えはxargsでしたか. 勉強不足で恐縮です.ありがとうございました. |
RSA1のプログラムを実行するにあったってエラーが多くでます。これのヘッダファイルはどこにあるのでしょうか。 |
>>4950 佐藤丈師 OpenSSL に同梱されていますので、OpenSSL をインストール済みであれば /usr/include/openssl や /usr/local/openssl/include などにあるはずです。 コンパイル時に -I /usr/include/openssl などのオプションを付加してください。 |
初めて投稿します。 全くの初心者ですが、次のことをお尋ねします。 Debian4.0ですが、デスクトップにアイコンを作成し、クリックすると プログラムを起動するようにしたいのですがどのようにすればいいの でしょうか。 #su - abc ’abcでログインし、「sh /usr/lib/scripts/claim/ORC_CLAIM_SERVER.sh 5001 /var/tmp」 ktermに記述などお尋ねします。 |
>>4952 kawasaki やり方はインストールしたデスクトップ環境 (GNOME とか KDE とか) によると思います。 が、お使いのデスクトップ環境をお教えいただいたとしても、ここ数年は UNIX 系 デスクトップ環境をいじっていないので、わたしはさっぱりわかりません。 |
初めまして。 ちょっと気になったので言わせて下さい。 UNIXの部屋 コマンド検索: Machでの説明で、 発音は、普通なら [まっは] が正しいと思うが、アメリカ人は "ch" の発音ができないらしくて [まーく] [まっく] といっている (発音できないような名前を付けるなと言いたい)。 とありますが、発音できないんじゃなくて、そういうスペルだと、 英語的には、マークって呼ぶだけです。hの2つ前は、aつまりエイって発音し、 cは、基本的には、ックって発音になり、 何も考えずにつなげて読むと、マークって読みます。 で、でもなんで、マッハが正しいかと言うと、 これは、ヨーロッパ系の言語の多くが、 machって書いてまっはって読むからです。 発音できないわけじゃないですよ^^; |
>>4954 uccこーひー ご指摘ありがとうございます。が、正直なところを申しますと、学がないので 真偽のほどが判断できません。よって、該当コンテンツより、 >>4954 uccこーひー の発言にリンクを張らせていただきますので、あとはお読みいただいた方に ご判断いただくことでご了承ください。 |
いつも便利に参照しています。 lsコマンドの紹介ページ(http://x68000.q-e-d.net/~68user/unix/pickup?ls)で 「man Solaris10 ls(1)」のリンク先が間違えているのに気がついたのでご連絡です。 正しくは、 「http://docs.sun.com/app/docs/doc/819-1210/ls-1?l=ja&a=view&q=ls」かな? |
>>4957 たけ > 「man Solaris10 ls(1)」のリンク先が間違えているのに気がついたのでご連絡です。 ありがとうございます。Sun のページはたまに URL が変わるんですよね…。 最新情報で更新しておきました。 NetBSD の manpage へのリンクも表示されなくなっていますが、そのうち直します。 |
SE募集の件で書き込みさせていただきました。 大変興味がありますので、一度詳細を教えていただけないでしょうか。 ご連絡をお待ちしています。 |
ありがとうございます。メールを送ります。 |
Perlで、前日のAM9時以降に作成されたファイルを 取得したいのですが、どのようにPerlを書けばよい のでしょうか。 Perlのシェルスクリプトを起動する前日のAM9以降 から、実行日までの間に作成されたファイルを取得 したいのです。 実行日の前日の9時というのは以下の方法で取得できる のですが、取得した日付とファイル作成日付を比較し、 対象か否かを判断して、必要なものだけを取得する 方法が分かりません。 どのよに書けばよいのでしょうか。 「実行日の前日の9時」は、 -------------------------------- #!/usr/local/bin/perl $tm = time - (24 * 60 * 60 * 1); ($sec, $min, $hour, $day, $mon, $year) = (localtime($tm))[0..5]; $now = sprintf("%04d/%02d/%02d %02d:%02d:%02d",$year+1900,$mon+1,$day,$hour,$min,$sec); print $now, "\n"; -------------------------------- #!/usr/local/bin/perl use POSIX 'strftime'; $tm = time - (24 * 60 * 60 * 1); my $now = strftime "%Y/%m/%d %H:%M:%S", localtime($tm); print $now, "\n"; |
>> 4974 環境を書き忘れました。 環境は、 Solaris8 Perl v5.8.5 |
>>4974 べた >>4975 べた Solaris なら適当なファイルを作って、touch コマンドでタイムスタンプを 前日 08:59:59 にしておいて、find . -newer foo とするのが一番簡単かと 思います。 FreeBSD なら find -mtime -99h とか、Linux なら find -mmin -9999 とか できますが (99 や 9999 は計算して求める)、結局は -newer の方が簡単な 気がします。 モジュール使うなら File::Find http://perldoc.perl.org/File/Find.html File::Find::Rule http://search.cpan.org/~rclamp/File-Find-Rule-0.28/lib/File/Find/Rule.pm あたりかと思いますが、いずれも前日9時と比較する部分は手で書かないと いけないように見えますので、イマイチですね。 |
>>4976 68user ありがとうございます。 また、返事が遅くなって申し訳ありません。 > find . -newer foo ですか。 シェルで、findの結果を取得することも考えました。 > あたりかと思いますが、いずれも前日9時と比較する部分は手で書かないと > いけないように見えますので、イマイチですね。 Perlを使おうとしていたので、手で書かなくてはいけないと思っていました この部分の良い方法が実現できなくて。 環境上、教えて頂いたモジュールも入れることができません。 |
>>4977 べた find . -newer foo の方法を書いておきます。find を使わないなら、 昨日9時の日時 (20090323090000) を Time::Local で epoch time に 直しておき、stat() が返す最終更新時刻と比較すればよいでしょう。 ------ my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time()-60*60*24); my $timestamp = sprintf("%04d%02d%02d%02d%02d.%02d", $year+1900, $mon+1, $mday, 9, 0, 0); my $yeasterday_9am_file = "foo.txt"; system("touch -t $timestamp $yeasterday_9am_file"); open(IN, "find . -type f -newer $yeasterday_9am_file |"); while (<IN>){ chomp; print "$_\n"; } |
>> 4978 ありがとうございます。 教えていただいた方法ですと、前日9時のタイムスタンプの 取得をPerlでやればあとは、シェルスクリプトでもできます ね。 実のところ、findを使わない、Perlでの記述、遣り方を教えて ほしいのですが。 |
>>4978 68user > find を使わないなら、 > 昨日9時の日時 (20090323090000) を Time::Local で epoch time に > 直しておき、stat() が返す最終更新時刻と比較すればよいでしょう。 Time::Local で epoch time に直しての「epoch time」とは なんでしょうか。 |
linuxのCでグラフィックの勉強がしたくてX-Windowまで辿り着いたのはよかったんですが、 ここ↓のソースを実行させようとしても何故かエラーが出てしまいます。 http://x68000.q-e-d.net/~68user/xprogram/xlib-4.html 一応類似の記事がないかどうか調べて見ましたが、 No.8552が近いと思いましたが全然分かりませんでした。 ちゃんとusr/include/X11ファイルに Xlib.hとXutil.hはありますし、 コンパイルオプションも活用してみました…… Xlib.hとXutil.hの意味も分からなくて困窮中です…… コマンドラインは、gcc -o xlib-4-1 xlib-4-1.c -I /usr/include/X11 -L /usr/include/X11 エラーは以下の文です /tmp/cc2pF4g1.o: In function `main': xlib-4-1.c:(.text+0x9f): undefined reference to `XOpenDisplay' xlib-4-1.c:(.text+0x149): undefined reference to `XCreateSimpleWindow' xlib-4-1.c:(.text+0x198): undefined reference to `XSetStandardProperties' xlib-4-1.c:(.text+0x1c0): undefined reference to `XCreateGC' xlib-4-1.c:(.text+0x1e8): undefined reference to `XSetBackground' xlib-4-1.c:(.text+0x20a): undefined reference to `XSetForeground' xlib-4-1.c:(.text+0x232): undefined reference to `XCreateGC' xlib-4-1.c:(.text+0x25a): undefined reference to `XSetBackground' xlib-4-1.c:(.text+0x27c): undefined reference to `XSetForeground' xlib-4-1.c:(.text+0x294): undefined reference to `XMapRaised' xlib-4-1.c:(.text+0x2ec): undefined reference to `XFillArc' xlib-4-1.c:(.text+0x344): undefined reference to `XFillArc' xlib-4-1.c:(.text+0x352): undefined reference to `XFlush' collect2: ld はステータス 1 で終了しました |
>>4982 ちびヴァル オプション -lX11 が足りていません。まずは http://x68000.q-e-d.net/~68user/xprogram/xlib-1.html からどうぞ。 |
>>4980 べた > 「epoch time」とはなんでしょうか。 http://oku.edu.mie-u.ac.jp/~okumura/php/date.php UNIX で Epoch とは,協定世界時(UTC,いわゆるグリニッジ標準時 GMT) 1970 年元旦 0 時 0 分のことです。 UNIX の内部ではこの瞬間からの秒数で 時刻を表しています。 のことです。 |