お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2014-01-04 02:41:46

macky_osaka
メンバ
登録日: 2013-12-15

定期的に、フォルダ内のファイルを連結させたい

お世話になります。
コマンドで手詰まりになっています。
どなたかご教授ください。

/var/www/html/home/sc/フォルダ内に、1.txt、2.txt、3.txt...と40ほどのテキストファイルがあります。
これを、定期的に
/var/www/html/home/フォルダ内のmain.txtに定期的に結合させたいと思っています。
30分毎にです。

端末で
$cd /var/www/html/home/sc/
として
ユーザー名@コンピュータ名:/var/www/html/home/sc$
となったところで
cat *.txt > /var/www/html/home/main.txt
とすればファイルが連結できるところまで来ました。

これを30分毎に繰り返すようにしたいのですが、cronの使い方がよくわかっておりません。
フォルダを開いたら、閉じる必要とかあるのでしょうか。
初心者の質問ですみませんが、ご教授いただけないでしょうか。

オフライン

 

#2 2014-01-04 10:57:51

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: 定期的に、フォルダ内のファイルを連結させたい

macky_osaka による投稿:

これを30分毎に繰り返すようにしたいのですが、cronの使い方がよくわかっておりません。

見た感じ、/var/www/html/home 以下を、一般ユーザ権限に変更しているように見えるのですが、
そうであれば、
$ crontab -e
そうでなく、root ユーザであれば、
$ sudo crontab -e
として、cron に、動作を登録します。
初めて立ち上げた場合、Ubuntu だと、編集に使う、エディタの選択画面になりますので、好きなエディタを選びます。
30分毎に、似であれば
*/30 * * * * cat /var/www/html/home/sc/*.txt > /var/www/html/home/main.txt
毎時30分なら
30 * * * * cat /var/www/html/home/sc/*.txt > /var/www/html/home/main.txt
とし、ファイルを保存します。
これで、OK です。
確認は、
$ cat /var/log/syslog | grep cron
で、

> フォルダを開いたら、閉じる必要とかあるのでしょうか
意味が通りませんが、多分、cd (チェンジ・ディレクトリ)のことを行っているのかと思いますが、cron で、cd しても、一連のコマンドが終了した時に、プロセスも終了しますので、元に戻る必要はありません。
*/30 * * * * cd /var/www/html/home/sc/ && cat *.txt > /var/www/html/home/main.txt
または
*/30 * * * * cd /var/www/html/home/sc/ ; cat *.txt > /var/www/html/home/main.txt
&& と ; の違いは、&& はエラーが出たら次のコマンドは実行せず、 ; はエラーの有無に関係なく次に進みます。

オフライン

 

#3 2014-01-04 15:13:40

macky_osaka
メンバ
登録日: 2013-12-15

Re: 定期的に、フォルダ内のファイルを連結させたい

siさま

不躾な投稿に対し、丁寧な回答をありがとうございました。
おかげさまで、無事に実行されるようになりました。

回答でおっしゃっている通り、var/www/にユーザーでhtmlフォルダを作成しルートフォルダとしています。
こちらでいろんな勉強をさせていただいております。
フォルダを閉じるとか書いたのは、PHPの場合、開いたファイルは閉じるように本に書いてあったので、フォルダも閉じる必要とかあるのかな?という疑問からでした。
回答は非常に勉強になりました。
ありがとうございました。

オフライン

 

#4 2014-01-04 16:38:30

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: 定期的に、フォルダ内のファイルを連結させたい

macky_osaka による投稿:

siさま

不躾な投稿に対し、丁寧な回答をありがとうございました。
おかげさまで、無事に実行されるようになりました。

回答でおっしゃっている通り、var/www/にユーザーでhtmlフォルダを作成しルートフォルダとしています。
こちらでいろんな勉強をさせていただいております。
フォルダを閉じるとか書いたのは、PHPの場合、開いたファイルは閉じるように本に書いてあったので、フォルダも閉じる必要とかあるのかな?という疑問からでした。
回答は非常に勉強になりました。
ありがとうございました。

フォルダという言い方は、mac のグラフィカルインターフェースでの、ディレクトリ・アイコンが、事務用品の書類を入れるホルダに似せて使ったことから、一般化したのですが、テキストモードで、ディレクトリを指す言葉として使うことは、あまり有りません。
また、cd は、カレントディレクトリを移動することで、開くとか、閉じるとかは、言い方として相応しくはないと思われます。
大変、些細なことかも知れませんが、状況を相手に伝えるという観点から見ると、言葉、用語の使い方、選び方は大事なことではないかと思います。
> PHPの場合、開いたファイルは閉じるよう
これは、ディレクトリではなく、個別のファイルのことです。
PHP等のプログラムから、標準的な関数を使い、ファイル操作のために、開いた(open)ファイルは、変更を確実するためや、開かれた接続チャネルを確実に閉じるために、プログラム終了前に閉じておく(close)必要があります。

オフライン

 

#5 2014-01-04 16:53:57

macky_osaka
メンバ
登録日: 2013-12-15

Re: 定期的に、フォルダ内のファイルを連結させたい

siさま

>また、cd は、カレントディレクトリを移動することで、開くとか、閉じるとかは、言い方として相応しくはないと思われます。
>大変、些細なことかも知れませんが、状況を相手に伝えるという観点から見ると、言葉、用語の使い方、選び方は大事なことではないかと思います。

おっしゃる通りですね。
Windowsしか知らなかったとはいえ、用語をちゃんと理解しておくこと痛感しました。
ご指摘いただけなかったら、同じ失敗で恥をかき続けるところでした。
ありがとうございます。

これからも教えを乞うこと多々あるかと思いますが、よろしくお願いします。

オフライン

 

Board footer

Powered by FluxBB