強制コピー

Amazon Linuxにおいて表題の通り。毎度ハマっている気がするのでメモ。

■ 環境

  • Amazon Linux

■ cp

ファイルをコピーしようとしたところ、下記のように確認がされた。

$ cp -pr /path/to/dir/* .
cp: overwrite ‘./index.php’? 

ファイルが多いので毎回”y“とうっていくのは面倒である。かといって`yes`コマンドを使うのも。そもそも”-f“オプションがあるだろうと思いやってみたが変わらず。

$ cp -prf /path/to/dir/* .
cp: overwrite ‘./index.php’? 

“-f”オプションって無かったか?と思ったが`man cp`にもしっかり載っている。と思っていたら`alias`が設定されていた。

$ alias
alias cp='cp -i'
  :
$

これが”-f“が効かない原因のようである。下記のように解決する。

$ \cp -prf /path/to/dir/* .
$

無事やりたいことができた。

以上。

1日以内に更新されたファイルを探す

表題をLinuxの`find`コマンドで行う。よく忘れるのでメモ。

■ 環境

  • Linux

■ find

更新されたファイルを探す場合には下記オプションを使う。

$ man find
  :
 -mtime n
  File's data was last modified n*24 hours ago.  See the comments for -atime to understand  how  rounding  affects  the
  interpretation of file modification times.
  :

-ctime“とかもある。が、いつもハマるのが”-ls“オプションと併用する場合である。

自身の場合は、オプションをどんどん追加しながら対象を絞っていくやり方なので、先に”-ls”で時間を見て「さらに絞らないと」と”-mtime“等のオプションを使用することになる。しかしその場合は”-mtime“が正しく効いてくれずに”-ls“より前のオプションの条件に当てはまる全てのファイルが対象となってしまう。

-ls“は最後につけなければならない。

以上。

%2520

表題の文字列について。

■ 環境

  • Mac OSX El Capitan

■ urldecode

下記のような文字列があった。

Mozilla/5.0%2520(Macintosh;%2520Intel%2520Mac%2520OS%2520X%252010_11_6)%2520AppleWebKit/537.36%2520(KHTML,%2520like%2520Gecko)%2520Chrome/63.0.3239.84%2520Safari/537.36

URLエンコードされているんだな、と思いデコードしてみる。

$ echo "Mozilla/5.0%2520(Macintosh;%2520Intel%2520Mac%2520OS%2520X%252010_11_6)%2520AppleWebKit/537.36%2520(KHTML,%2520like%2520Gecko)%2520Chrome/63.0.3239.84%2520Safari/537.36" | nkf -w --url-input
Mozilla/5.0%20(Macintosh;%20Intel%20Mac%20OS%20X%2010_11_6)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/63.0.3239.84%20Safari/537.36
$

実行してみたがまだエンコードされているようだ。さらにデコードしなければなさそうである。

echo "Mozilla/5.0%2520(Macintosh;%2520Intel%2520Mac%2520OS%2520X%252010_11_6)%2520AppleWebKit/537.36%2520(KHTML,%2520like%2520Gecko)%2520Chrome/63.0.3239.84%2520Safari/537.36" | nkf -w --url-input | nkf -w --url-input
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36
$

これで目的の文字列が得られた。

単なる空白を2度URLエンコードしたことにより”%2520“という文字列が現れていたようである。

以上。

■ 関連

urldecode

ipcrm

先日のエントリの続きである。不要なセマフォが残ってしまっている件。

■ 環境

  • CentOS 6.9

■ ipcrm

セマフォの一覧は先日のエントリの通りに取得できた。視認性を良くする為に不要な情報は削除し、セマフォだけに絞ることにする。

$ sudo ipcs -s

------ セマフォ配列 --------
キー     semid      所有者  権限     nsems
0x00000000 0          root       600        1
0x00000000 65537      root       600        1
0x7a00ec33 98306      root       600        13
0x00000000 262147     nginx      600        1
0x00000000 294916     nginx      600        1
0x00000000 327685     nginx      600        1
0x00000000 360454     nginx      600        1

$

また、作成時間も一緒に表示することも可能なようだ。

$ sudo ipcs -st

------ セマフォ 命令/変更回数 --------
semid    所有者  最終操作               最終の変更
0        root        Fri Jan 12 11:52:19 2018   Fri Jan 12 11:52:18 2018
65537    root        Fri Jan 12 11:52:20 2018   Fri Jan 12 11:52:19 2018
98306    root        Mon Jan 15 15:29:10 2018   Mon Jan 15 10:54:47 2018
262147   nginx       セットされていま   Mon Jan 15 19:15:28 2018
294916   nginx       セットされていま   Mon Jan 15 19:15:28 2018
327685   nginx       セットされていま   Mon Jan 15 19:17:22 2018
360454   nginx       セットされていま   Mon Jan 15 19:17:22 2018

$

次に不要なセマフォの削除は下記のようにする。

$ sudo ipcrm -s [semid]

ただし、どのセマフォを削除して良いかの判断は別途必要である。

以上。

■ 関連

ipcs

ipcs

表題のコマンドについて。

■ 環境

  • CentOS 6.9

■ semaphore

そもそもセマフォって何よ?という状態であったりするのだが、共有メモリやセマフォ、メッセージキューの状態を`ipcs`コマンドで取得できるようである。

$ ipcs

------ 共有メモリセグメント --------
キー     shmid      所有者  権限     バイト  nattch     状態

------ セマフォ配列 --------
キー     semid      所有者  権限     nsems

------ メッセージキュー --------
キー     msqid      所有者  権限     使用バイト数 メッセージ
$

root“で実行すると全ユーザが見えるようだ。

$ sudo ipcs

------ 共有メモリセグメント --------
キー     shmid      所有者  権限     バイト  nattch     状態
0x6c00200b 0          root       600        219056     6

------ セマフォ配列 --------
キー     semid      所有者  権限     nsems
0x00000000 0          root       600        1
0x00000000 65537      root       600        1
0x00000000 7143426    nginx      600        1
0x00000000 7176195    nginx      600        1
0x7a00200b 163844     root       600        13
0x00000000 7208965    nginx      600        1
0x00000000 229382     4294967295 600        1
0x00000000 262151     4294967295 600        1
0x00000000 294920     4294967295 600        1
0x00000000 327689     4294967295 600        1
0x00000000 360458     4294967295 600        1
0x00000000 458763     4294967295 600        1
0x00000000 491532     4294967295 600        1
0x00000000 524301     4294967295 600        1
0x00000000 557070     4294967295 600        1
0x00000000 7241743    nginx      600        1

------ メッセージキュー --------
キー     msqid      所有者  権限     使用バイト数 メッセージ

これはとあるホストの状況であるが、セマフォが解放されずに残ってしまっているらしい…。

以上。

■ 関連

ipcrm