2012年04月03日

tmuxにした件

screenのバージョンが古いらしく、vimで表示が乱れちゃうのでtmuxを使ってみた。

$ tmux list-session
0: 1 windows (created Tue Apr 3 15:45:33 2012) [317x77] (attached)
$ tmux attach
>>> C-b d でデタッチ
$ tmux attach -t 0 <= session番号 0 にアタッチ

vimのC-bとtmuxのC-bがバッティングして2回C-bしないとバックスクロールしなくなっちゃった!><

posted by ほえ at 16:12| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2012年03月07日

tarで指定したディレクトリを除外する

find使ったりしていたけど、これでよいそうです。

$ cat backup_exclude.txt
.svn
./dmp
./log
./web/media
$ tar czvf backup.tgz -X backup_exclude.txt .

ファイル backup_exclude.txt に除外するディレクトリを書いておいて -X でそのファイルを指定すると。
./dmp のようにパス指定するとそのディレクトリが、
log のように名前だけ指定するとサブディレクトリ以下の全ての log が除外されると。

ははぁ。
posted by ほえ at 12:28| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2010年04月18日

ファイルを逆順に表示する件。


tac filname

posted by ほえ at 17:01| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年12月19日

ログインシェルの変更

ログインシェルを変更するのに、/etc/passwdを編集したりしてました。


chsh -s /usr/bin/zsh

なんていうコマンドがあるんですね。
指定できるシェルは
/etc/shells
に書いてあるシェルです。
こんなになってました。

~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/bash
/bin/rbash
/usr/bin/screen
/bin/zsh
/usr/bin/zsh

esとか、rcとか、eshなんてなじみの無いのがありますね。
screenもシェルに入ってる。

です。
posted by ほえ at 13:46| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年12月18日

apacheのDocumentRootをよそに移す件

apacheのhttpd.confで

DocumentRoot "/home/xxxx/public_html"

なんてしてapacheを再起動したら、403エラーでアクセスできませんでした。
おや?と思ったら、
/home/xxx
もhttpdの実行ユーザがアクセスできないとダメなのね。
なので

chmod 755 /home/xxx

ってした。

うわーん。
posted by ほえ at 19:46| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年11月06日

shのfor文

for文で繰り返し。foreachですな。
for name [ in word ] ; do list ; done


こんなにして使います。
for t in 1 2 3 4 5 6 7 ; do ls -1 $t ; done


別の形式。forですな。
for (( expr1 ; expr2 ; expr3 )) ; do list ; done

expr1が評価され、expr2が0になるまで、listが実行される。

こんなにして使います。
for ((i=0; i<10; i++)) ; do ls -1 $i ; done
posted by ほえ at 10:04| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年10月24日

shの変数の件

sh(bash)の変数についてメモです。

変数は"パラメータ(parameter)"といいます。
name=[value]

で値を設定します。
name = [value]

のように=の前後にスペースを空けてはいけません。
a=abc.def
echo $a

と$をつけて値を参照します。
unset $a

でパラメータを削除します。値をクリアするのではなくて、パラメータ自体を削除します。

./aaa.sh a b c

と引数つきでシェルスクリプトが呼ばれた時、$1, $2, $3はそれぞれ、a, b, cが設定されています。位置パラメータといいます。
引数が10以上の場合その値を参照するのに${10}, ${11}と{}が必要になります。
$1 = x

とは書けませんが、setを使って
set $1 x

と$1に値を設定することが可能です。

パラメータはブレース{}を使って展開する事ができます。

a=abc.defの時
${a} -> abc.def
${a#abc} -> .def 先頭の'abc'が削除されます。
${a%.def} -> abc 末尾の'.def'が削除されます。
${a/bc/xy} -> axy.def 文字列を置換します。

${b:-BBB} -> BBB $bが空か設定されていないとBBBになります。
echo $b -> '' ${b:-BBB}では$bに値は設定されません。

${c:=CCC} -> CCC $cが空か設定されていないとCCCになります。
echo $c -> CCC ${c:-CCC}では$Cに値が設定されます。

${d:?error desu!} -> ./aaa.sh: line 5: d: error desu! $dが空か設定されていないとエラーになります。'error desu!'がエラー出力されます。

e=xxx
${e:+EEE} -> EEE パラメータが設定されていると'EEE'になります。
f=''
${f:+FFF} -> '' パラメータが設定されていないと''になります。


他にもあるけどこれくらいで。
posted by ほえ at 11:08| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年09月13日

grepって

grepって\tじゃタブにならないのね…。しらなかった。

とりあえず
grep -v '^[[:space:]]' aaa.txt
でなんとかなったけど。
posted by ほえ at 17:02| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年04月20日

sudoでやる件

visudoでsudoできるユーザを設定します。

#visudo
test ALL=(ALL) ALL

これだとユーザtestが全てのホストで、全てのユーザとして、全てのコマンドが実行できます。


test ALL=(root) ALL

これだとユーザtestが全てのホストで、rootとして、全てのコマンドが実行できます。


test ALL=NOPASSWD: /home/script/sample.sh

これだとユーザtestがパスワードなして、/home/script/sample.shが実行できます。
スクリプト中で使用したりするのに便利ですね。
スクリプトはフルパス指定です。


test ALL=NOPASSWD: /home/script/

これは/home/script/ディレクトリの下のコマンドを全て実行する事が出来ます。最後に/が必要です。


test ALL=NOPASSWD: /home/script/sample.sh -x *

これだとsample.shの-x オプション引数を指定できます。
-xだけだと-x 'abc'のように-xに引数を渡せません。


test ALL=NOPASSWD: /home/script/sample.sh ""

だと、引数を使わないようにできます。

sudo便利ですね。

気になるのがコマンドを実行してファイルを変更したりする時の事です。

test$ sudo echo 'hoehoe' > /tmp/hoe

で、/tmp/hoeがroot:rootで644の時には、このユーザが/etc/sudoersで

test ALL=(root) ALL

でも、

bash: /tmp/hoe: 許可がありません

となってしまいました。
posted by ほえ at 16:17| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年04月16日

shでスクリプトを書く件

sh(bash)でスクリプトを書いていて、はまったので書いておきます。

変数$aと$bが両方とも空だったら○○と書きたくて、下記のように書いたらエラーになってしまいました。

if [ -z $a -a -z $b]
echo "hoehoe!"
fi

なぜエラーになるのかさっぱりわからなかったのですが、こういう事でした。

if [ -z $a -a -z $b] ; then
echo "hoehoe!"
fi


セミコロンとthenがいるのですね。

もう1つ。
sambaで共有されていたので、Windowsのエディタでスクリプトを下記のように書くと、

#!/bin/sh

echo 'ngng!'

次のようにエラーになります。
: bad interpreter: そのようなファイルやディレクトリはありません

これはさっぱりわかりませんでした。

同じスクリプトをviで作成すると、問題なく実行されます。
diffをとってみると、全行違いますがく〜(落胆した顔)

…改行が\r\nになっていたからでした。
普通にviとかcatで見てもわからないですふらふら

od -c ファイル名

で見ると、
0000000 # ! / b i n / s h \r \n \r \n e c h
0000020 o ' n g n g ! ' \r \n
0000033
と出てきます。
viで作ったファイルは、

0000000 # ! / b i n / s h \n \n e c h o
0000020 ' n g n g ! ' \n
0000030

というわけです。
Windowsのエディタで、改行コードをLFにして保存して、めでたしめでたしデス。
posted by ほえ at 20:58| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年03月07日

サービスの起動の件

サービスを自動起動させるのに、
/etc/init.d
にあるスクリプトのシンボリックリンクを
/etc/rc3.d
とかに作ったりしますが、sambaだったら
chkconfig smb on
とすると簡単ですね。
chkconfig smb off
で、自動起動しないと。

chkconfig smb --del
すると、
chkconfig smb --list
で一覧に出てこなくなっちゃいます。
chkconfig smb --add
でまた出てきますけどね。


現在のrunlevelを知りたいときは
runlevel
ってやると表示されます。
N 3
って感じで。Nは前のランレベルだそうです。前のランレベルがないのでNって表示されています。

who -r
で見ても、
less /etc/inittab
で見てもいいですね。

runlevelコマンドは/var/run/utmpファイルを読み取っているらしいです。このファイルは?
utmp, wtmp - login records

The utmp file allows one to discover information about who is currently using the system.

ですって。


posted by ほえ at 16:43| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

CentOSをインストールした件

訳あって、CentOSをインストールしました。
仕事でRHELを使う予定だったので、ローカルにLinuxの環境が欲しくなりました。で、以前インストールしてみたFC6を使おうかと思ったのですが、ちょうどCentOSについての記事を読んだので、「おお、そうじゃそうじゃ」というわけです。実は、OpenSUSEは使った事が無いので、これにしよう!とも思ったのですがやめておいて良かったです。

VMwareServerのゲストとしてインストールするのです。以前debianやら、fc6やらいろいろ入れていたのですが、ほんの数日前に全部整理しちゃったのでした。まあ、ちょうどよいですね。

どのバージョンが良いのか不明なのですが、とりあえず最新のCentOS4.4にする事にしました。
すると、Single Server CDというすばらしいものがあるではないですか。サーバ用でいりそうな物だけあつめたCDイメージですね。
CentOS-4.4.ServerCD-i386.iso
をダウンロードして、インストール。

パッケージを選択するところでは色々選べるようです。このSingle Server CDに入っていないものは出てこないのかな?とか思いつつも今回は必要ないのでsambaだけ選択しました。

今回の仕事ではapache、postgresql、phpはソースから入れるようです。
普通、RHELを使う場合はパッケージで選択するんでしょうか。

なんだかコンソール画面でのマウスの動きがいいですよ。インストール画面からそうでしたね。FC6ではカクカク動いて使いづらかったのにな。

で、インストール完了。何がインストールされたのかな?と思ったのですが、パッケージ管理についてすっかり忘れてます…。
最近FreeBSDばっかりだったしな。しょうがないよな。

yumとかすればいいんだっけ?あ、rpmとかもあったな。
自分の以前の記事を見直してみよう。


posted by ほえ at 11:55| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年02月13日

findで特定のフォルダを除く件

前にfindを使ってtarで固める件について書きました。
対象のディレクトリにtarに含めたくないディレクトリが出来てしまったので、それを除く件について調べてみました。

まず、否定から。
\! -name aaaa.txt
で、aaaa.txt以外という事になります。\はシェルのエスケープです。
ですが、
find -name xxxx

だと、
ファイルxxxxや、
ディレクトリxxxx/、
ファイルyyyy/xxxx
は見つけてくれますが、
xxxx/abcdefg.txt
は見つけてくれません。
つまり、
\! -name xxxx
としても、ディレクトリxxxx/の下のファイルは除外してくれないという事です。
で、便利なのが-regexです。
-regex '.*/iranai_dir/.*'
とすれば除外したいディレクトリ以下のファイルも見つけてくれます。

find ./public_html \
\( \
\( \
-name '*.php' \
-o -name '*.html' \
-o -name '*.inc' \
\) \
\! -regex './public_html/iranai_dir/.*' \
\) -exec tar cvf phpfiles.tar {} \;
という事です。


posted by ほえ at 11:08| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2007年01月24日

findで日付で検索する件

findで日付で検索する時

find . -xxxx nn

アクセス日:-atime days
更新日:-mtime days
作成日:-ctime days

10日前に更新されたファイル
find . -mtime 10

daysに+、-を指定できます。

10日前より後に作成されたファイル
find . -ctime -10

10日前より前に作成されたファイル
find . -ctime +10


週日時分秒も指定できます。

5週4日3時間2分1秒の間に更新されたファイル
find . -mtime 5w4d3h2m1s

ですって。
posted by ほえ at 10:29| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2006年11月24日

FTPをバッチでの件

ftpをバッチやシェルスクリプト中で動かしたい時、テキストファイルにコマンドを書いておいて、-s オプションつきでfptを実行します。

ftp -s:command.txt


command.txtの中身はこんな感じで、

open ftp.example.com
ftpusername
ftppassword
ascii
get /var/log/syslog.log
quit

posted by ほえ at 20:12| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2006年11月09日

_(アンダーバー)の付いたホストに接続できない件

「さくらエディタ」を検索して出てきた
sakura_editor.at.infoseek.co.jp

に行こうと思ったら、Squid君にダメダメ
Invalid URL

だよって言われてしまいました。http://sakura_editor.at.infoseek.co.jp/のどこがいけないんだよぉ!と思って調べてみました。

するとSquid FAQにこうありました。

( RFC 952, RFC 1101) によって、下線の付いたホスト名は使ってはならないことになっています。 

「名前」(ネット、ホスト、ゲートウェイ、あるいはドメイン名)は、アルファベット(A-Z)、数字(0-9)、マイナス記号( - )、ピリオド( . )を使い字列最大24文字。

へー。そうなんですね。


ずいぶん前にSQL Server7.0?のインストールでホスト名に"-"(ハイフン)使わないで!見たいな事があって、"_"(アンダーバー)にしてって事になってたような感じの事を思い出しました。あいまい。
SQL Serverを外に見えるようにすることはないと思いますけど…。
posted by ほえ at 12:11| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2006年10月26日

tarで固める件

tarはファイルを固められるので便利ですね。
ディレクトリごとではなく、その下の必要なファイルだけ固めるには?と思い調べてみました。こんなにするらしいです。
find . -name '*.php' | xargs tar zcf phpfiles.tar

だいたいうまくいきます。ついでに圧縮もしています。

*.phpと*.incと両方固めたいときにはどうするのでしょうね。

find . \( -name '*.php' -o -name '*.inc' \)

だそうです。
両括弧は\(や'('や"("でエスケープする必要があります。
また、括弧の前後はスペースを入れる必要があります。

find . \( -name '*.php' -o '*.inc' \)

ではありません。「-o」の後にも「-name」が必要なのです。

ただ、sambaで共有とかしてファイル名が日本語だったり、ファイル名にスペースが入っていたりすると、そのファイルはエラーになって無視されてしまいます。

どうすれば?


固めるところはこんなにしてもできます。
find . -name '*.php' -exec tar rvf phpfiles.tar {} \;

これだとスペースの入ったファイル名も固めてくれます。

ただ、sambaで共有とかしてファイル名が日本語だったりすると、文字コードによっては?見つけてくれません。ありがちなのは「コピー 〜 」が頭についているファイルですね。



どうすれば?

posted by ほえ at 14:13| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2006年03月01日

日本語が入力できなくなる件について(cannaとkinput2)

Firefoxやターミナルで日本語入力モードになっているときに、ついうっかりHomeキーを打っちゃうと、[あ]の所が、[拡張]ってなっちゃって、EnterとかEscとか矢印キーとか押しても反応しなくて、慌てて、Auxiliary Controlってタイトルのウィンドウを×クリックして閉じちゃったりすると、その後日本語入力モードにならなくって、Ctrl+oでファイルを開くウィンドウが出て来たりする事がしばしば。
これはkinput2が死んでしまっているからこうなるのですね。
ターミナルで
kinput2 -canna &
でまた使えるようになります。

また、[拡張]はDeleteキーでもとの[あ]に戻ります。他にも何か起きたらDeleteキーですね。
posted by ほえ at 17:12| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2006年02月07日

パーミッション

パーミッションが変更できるのは、所有ユーザのみ。

chmod [オプション] モード ファイル|ディレクトリ
オプション
-R:指定ディレクトリ以下を全て変更する。
モード
u:所有ユーザ
g:所有グループ
o:その他ユーザ
a:全てのユーザ

+:追加
-:削除
=:パーミッションの置き換え

r:読み 4
w:書き 2
x:実行 1
:なし 0

デフォルトのファイルパーミッションはumask値で決まる。.bashrcに記述があります。
umask=022
ならば、作成されるファイルは
644
になります。

特殊パーミッション
suid 所有ユーザ 4 実行可能ファイル
sgid 所有グループ 2 実行可能ファイル/ディレクトリ
sticky その他ユーザ 1 ディレクトリ

suid:
実行可能ファイル:
所有ユーザの権限で実行できる。
ディレクトリ:
意味がない。chmod o+s fileとしても何もしない。

sgid:
実行可能ファイル:
所有グループの権限で実行できる。
例)
-rw-r----- root shadow /etc/shadow

---x--s--x root root /bin/cat
では表示できません。
---x--s--x root shadow /bin/cat
でないと。
ディレクトリ:
ディレクトリ下に作成されるファイルの
所有グループがディレクトリと同じ
になる。

sticky:
実行可能ファイル:
本来はプログラムコードをスワップ上に残しておく(再実行の際に高速に実行できる ように)という意味があったらしいのですが、今ではいろいろ進歩したので必要なくなっ たので無視されているようです。chmod o+t fileとしても何もしない。
ディレクトリ:
stickyを設定すると、そのディレクトリのファイルは、
所有ユーザ
ディレクトリの所有ユーザ
以外は削除できなくなります。

posted by ほえ at 16:41| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

2005年11月28日

Synergyを入れてみた

Windowsの「どこドア」のようなソフトがあるというのを知ったので、入れてみました。
Synergyというソフトで、Windows、Unix、Mac OS Xといろいろ組み合わせて使用できるようなので便利そうです。

$ apt-cache search synergy
synergy - Share mouse and keyboard over the network

と、Debianのパッケージになっているようなので、インストール
$ apt-get install synergy

/etc/synergy.confを作成して、サーバの起動テストです。

# synergys -f --config /etc/synergy.conf
INFO: synergys.cpp,857: Synergy server 1.2.2 on Linux 2.6.8-2-686 #1 Thu May 19 17:53:30 JST 2005 i686
DEBUG: synergys.cpp,866: opening configuration "/etc/synergy.conf"
DEBUG: synergys.cpp,877: configuration read successfully
DEBUG: CXWindowsScreen.cpp,629: XOpenDisplay(":0.0")
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified

WARNING: synergys.cpp,360: cannot open primary screen: unable to open screen
DEBUG: synergys.cpp,392: retry in 60 seconds
NOTE: synergys.cpp,522: stopped server

と、怒られちゃいました。synergy.confにホスト名じゃなくてIPアドレス書いたんだけど、問題ないよね。とドキュメントを見てみると何やらhostnameで帰って来る名前って書いてありました。
サーバー側は問題無し。クライアント側は。。。と、つい
# hostname xxx.xxx.xxx.xxx <-(クライアントのIPアドレス)
#

とやってしまいました。もちろん何も表示されません。
何をやってしまったか気づかずに、もうちょっとドキュメントを読むとrootで起動するとNo protocol specifiedと出るとありました。
おお、そうかっていうんで
$ synergy -f --config /etc/synergy.conf

無事に起動しました。

次にクライアントとするWindows。インストーラで、インストール。
testボタンで確認してみても、「その名前じゃ拒否されちゃうよ」とエラー。
サーバのsynergy.confにIPアドレスしか書いてないものな、名前解決できてないし。と言う事で
advanceボタンでスクリーン名をIPアドレスに変更して、test。
「その名前のクライアントはもうつながっています」だって。おかしいなぁといろいろ調べている中で、サーバ側でふと
# hostname

とやると
# xxx.xxx.xxx.xxx <-(クライアントのIPアドレス)

。。。ここで気が付きました。
サーバのホスト名をxxx.xxx.xxx.xxxに設定していたのでした。

元にもどして、無事に接続しました。
こんな感じのを前にもやった事がある気がする、恥ずかしいあせあせ(飛び散る汗)

問題は英語101キーボードだからか、日本語入力にならない事でしょうか。

posted by ほえ at 14:33| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。