2017年10月01日
Linux trapコマンド
trapコマンド
31までのシグナルの意味を下記に掲示します。
シグナル名 シグナル番号 機能
EXIT 0 シェルプログラムが正常に終了
SIGHUP 1 ハングアップ
SIGINT 2 割り込み(ユーザーが割り込みキーを押したとき)
SIGQUIT 3* 中止
SIGILL 4* 不法な命令
SIGTRAP 5* トレーストラップ
SIGIOT 6* IOT 命令
SIGEMT 7* EMT 命令
SIGFPE 8* 浮動小数点の例外
SIGKILL 9 強制終了(キャッチすることも無視することもできない)
SIGBUS 10* バスエラー
SIGSEGV 11* セグメンテーション違反
SIGSYS 12* システムコールに対する無効な引数
SIGPIPE 13 読み取りが行われていないパイプへ書き込んだ
SIGALRM 14 アラームクロック
SIGTERM 15 ソフトウェア終了シグナル(killによる強制終了)
SIGURG 16@ ソケット上に緊急事態が存在する
SIGSTOP 17+ 中断 (キャッチすることも無視することもできない)
SIGTSTP 18+ キーボードから発生した中断シグナル
SIGCONT 19@ 中断後の継続
SIGCHLD 20@ 子プロセスのステータスが変化した
SIGTTIN 21+ 制御端末からバックグラウンド入力がされた
SIGTTOU 22+ 制御端末からバックグラウンド出力がされた
SIGIO 23@ ディスクリプタ上での入出力が可能 (fcntl(2) 参照)
SIGXCPU 24 CPU タイムの制限を超過した (setrlimit(2)参照)
SIGXFSZ 25 ファイルサイズの制限を超過した (setrlimit(2) 参照)
SIGVTALRM 26 仮想タイムアラーム (setitimer(2) 参照)
SIGPROF 27 プロファイリングタイマアラーム (setitimer(2) 参照)
SIGWINCH 28@ ウィンドウサイズの変更
SIGUSR1 30 ユーザ定義シグナル 1
SIGUSR2 31 ユーザ定義シグナル 2
上記のリストでアスタリスク (*) が付けられているシグナルは、
キャッチも無視もされない場合には、コアイメージを生成します
31までのシグナルの意味を下記に掲示します。
シグナル名 シグナル番号 機能
EXIT 0 シェルプログラムが正常に終了
SIGHUP 1 ハングアップ
SIGINT 2 割り込み(ユーザーが割り込みキーを押したとき)
SIGQUIT 3* 中止
SIGILL 4* 不法な命令
SIGTRAP 5* トレーストラップ
SIGIOT 6* IOT 命令
SIGEMT 7* EMT 命令
SIGFPE 8* 浮動小数点の例外
SIGKILL 9 強制終了(キャッチすることも無視することもできない)
SIGBUS 10* バスエラー
SIGSEGV 11* セグメンテーション違反
SIGSYS 12* システムコールに対する無効な引数
SIGPIPE 13 読み取りが行われていないパイプへ書き込んだ
SIGALRM 14 アラームクロック
SIGTERM 15 ソフトウェア終了シグナル(killによる強制終了)
SIGURG 16@ ソケット上に緊急事態が存在する
SIGSTOP 17+ 中断 (キャッチすることも無視することもできない)
SIGTSTP 18+ キーボードから発生した中断シグナル
SIGCONT 19@ 中断後の継続
SIGCHLD 20@ 子プロセスのステータスが変化した
SIGTTIN 21+ 制御端末からバックグラウンド入力がされた
SIGTTOU 22+ 制御端末からバックグラウンド出力がされた
SIGIO 23@ ディスクリプタ上での入出力が可能 (fcntl(2) 参照)
SIGXCPU 24 CPU タイムの制限を超過した (setrlimit(2)参照)
SIGXFSZ 25 ファイルサイズの制限を超過した (setrlimit(2) 参照)
SIGVTALRM 26 仮想タイムアラーム (setitimer(2) 参照)
SIGPROF 27 プロファイリングタイマアラーム (setitimer(2) 参照)
SIGWINCH 28@ ウィンドウサイズの変更
SIGUSR1 30 ユーザ定義シグナル 1
SIGUSR2 31 ユーザ定義シグナル 2
上記のリストでアスタリスク (*) が付けられているシグナルは、
キャッチも無視もされない場合には、コアイメージを生成します
2017年08月27日
SSHでbashコマンド解禁にする
■SSHでbashコマンド解禁にする
1. chshコマンド実行
$ chsh
user のシェルを変更します。
Password: ←パスワードを入力
Enter the new value, or press returen for the default.
Login Shell [/bin/rbash]: /bin/bash ←「/bin/bash」を入力
Shell changed. ←と出てくれば、変更OK
2. bashコマンド実行
$ bash
1. chshコマンド実行
$ chsh
user のシェルを変更します。
Password: ←パスワードを入力
Enter the new value, or press returen for the default.
Login Shell [/bin/rbash]: /bin/bash ←「/bin/bash」を入力
Shell changed. ←と出てくれば、変更OK
2. bashコマンド実行
$ bash
2013年02月13日
2013年02月11日
Ajax比較記事まとめ
(JavaScript)jQueryでAJAX
http://jehupc.exblog.jp/19078343/
AJAX(非同期通信)リクエストをPrototypeとjQueryで行う
http://blog.quall.net/program/237/
Ajaxライブラリ8選 2006/11/22
http://www.atmarkit.co.jp/fwcr/special/ajax_kaitai03/01.html
▼Ajaxライブラリ
Prototype
http://prototypejs.org/
http://www.s2factory.co.jp/tech/prototype/prototype.js.html
http://www.openspc2.org/JavaScript/Ajax/ref/prototype.js/index.html
jQuery
http://jquery.com/
http://ascii.jp/elem/000/000/498/498710/
http://semooh.jp/jquery/
http://dotinstall.com/lessons/basic_jquery
MochiKit
script.aculo.us
Rialto javascript API
Rico
Dojo
Yahoo! User Interface Library
Google AJAX Libraries API
https://developers.google.com/speed/libraries/?hl=ja
http://jehupc.exblog.jp/19078343/
AJAX(非同期通信)リクエストをPrototypeとjQueryで行う
http://blog.quall.net/program/237/
Ajaxライブラリ8選 2006/11/22
http://www.atmarkit.co.jp/fwcr/special/ajax_kaitai03/01.html
▼Ajaxライブラリ
Prototype
http://prototypejs.org/
http://www.s2factory.co.jp/tech/prototype/prototype.js.html
http://www.openspc2.org/JavaScript/Ajax/ref/prototype.js/index.html
jQuery
http://jquery.com/
http://ascii.jp/elem/000/000/498/498710/
http://semooh.jp/jquery/
http://dotinstall.com/lessons/basic_jquery
MochiKit
script.aculo.us
Rialto javascript API
Rico
Dojo
Yahoo! User Interface Library
Google AJAX Libraries API
https://developers.google.com/speed/libraries/?hl=ja
2012年09月07日
シェルの区切り文字を改行コードのみにする
参考サイト: http://d.hatena.ne.jp/n9d/20090313/1236912316
-----------------------------------------------------------------------
$ cat a
foo bar buzz
foo bar buzz
foo bar buzz
$ (for i in `cat a`;do echo ${i}; done)
foo
bar
buzz
foo
bar
buzz
foo
bar
buzz
$ (IFS=$'\n';for i in `cat a`;do echo ${i}; done)
foo bar buzz
foo bar buzz
foo bar buzz
$ for i in `cat a`;do echo ${i}bbb; done
foobbb
barbbb
bbbz
foobbb
barbbb
bbbz
foobbb
barbbb
bbbz
-----------------------------------------------------------------------
デフォルト(改行、タブ、空白)に戻すには
IFS="$'\n'$'\t' "
-----------------------------------------------------------------------
$ cat a
foo bar buzz
foo bar buzz
foo bar buzz
$ (for i in `cat a`;do echo ${i}; done)
foo
bar
buzz
foo
bar
buzz
foo
bar
buzz
$ (IFS=$'\n';for i in `cat a`;do echo ${i}; done)
foo bar buzz
foo bar buzz
foo bar buzz
$ for i in `cat a`;do echo ${i}bbb; done
foobbb
barbbb
bbbz
foobbb
barbbb
bbbz
foobbb
barbbb
bbbz
-----------------------------------------------------------------------
デフォルト(改行、タブ、空白)に戻すには
IFS="$'\n'$'\t' "
2012年09月07日
dateコマンドでX日前の年月日を出す
参考サイト: http://shellscript.sunone.me/date.html
-----------------------------------------------------------------------
1日前の日付データを出力
$ date -d '1 days ago'
2012年 9月 6日 木曜日 23:10:09 JST
-----------------------------------------------------------------------
1か月の日付データを出力
$ date -d '1 months ago'
2012年 8月 7日 火曜日 23:10:30 JST
-----------------------------------------------------------------------
2012年3月31日から1日前の日付データを出力
$ date -d '2012-03-31 1 days ago'
2012年 3月 30日 金曜日 00:00:00 JST
$ date -d '2012-3-31 1 days ago'
2012年 3月 30日 金曜日 00:00:00 JST
-----------------------------------------------------------------------
-----------------------------------------------------------------------
前月が31日ない月は出力が変になるので注意。
$ date -d '2012-3-31 1 months ago'
2012年 3月 2日 金曜日 00:00:00 JST
$ date -d '2012-5-31 1 months ago'
2012年 5月 1日 火曜日 00:00:00 JST
-----------------------------------------------------------------------
これだとエラーになるけど
$ date -d '1 day ago'
-bash: $: コマンドが見つかりません
こっちはsがなくても動くのね
$ date -d '2012-3-31 1 month ago'
2012年 3月 2日 金曜日 00:00:00 JST
-----------------------------------------------------------------------
月の2桁出力方法
$ date -d '2012-05-31 1 months ago' '+%m'
05
月の1桁出力方法
$ date -d '2012-05-31 1 months ago' '+%-m'
5
-----------------------------------------------------------------------
1日前の日付データを出力
$ date -d '1 days ago'
2012年 9月 6日 木曜日 23:10:09 JST
-----------------------------------------------------------------------
1か月の日付データを出力
$ date -d '1 months ago'
2012年 8月 7日 火曜日 23:10:30 JST
-----------------------------------------------------------------------
2012年3月31日から1日前の日付データを出力
$ date -d '2012-03-31 1 days ago'
2012年 3月 30日 金曜日 00:00:00 JST
$ date -d '2012-3-31 1 days ago'
2012年 3月 30日 金曜日 00:00:00 JST
-----------------------------------------------------------------------
-----------------------------------------------------------------------
前月が31日ない月は出力が変になるので注意。
$ date -d '2012-3-31 1 months ago'
2012年 3月 2日 金曜日 00:00:00 JST
$ date -d '2012-5-31 1 months ago'
2012年 5月 1日 火曜日 00:00:00 JST
-----------------------------------------------------------------------
これだとエラーになるけど
$ date -d '1 day ago'
-bash: $: コマンドが見つかりません
こっちはsがなくても動くのね
$ date -d '2012-3-31 1 month ago'
2012年 3月 2日 金曜日 00:00:00 JST
-----------------------------------------------------------------------
月の2桁出力方法
$ date -d '2012-05-31 1 months ago' '+%m'
05
月の1桁出力方法
$ date -d '2012-05-31 1 months ago' '+%-m'
5
2012年09月07日
lsでdateコマンドで使えるタイムスタンプを出力する
参考先: man lsのマニュアル
-------------------------------------------------------------------------
-------------------------------------------------------------------------
日付の形式がそのままdateコマンドに使える状態になっているので
cutや、awkで日付だけ区切って渡せばよい。
-------------------------------------------------------------------------
$ ls --full-time
-rwxr-xr-x 1 user None 27150 2012-02-06 22:59:45.000000000 +0900 [.exe
-rwxr-xr-x 1 user None 18958 2012-04-24 23:22:08.000000000 +0900 addftinfo.exe
-rwxr-xr-x 1 user None 165866 2012-04-24 23:22:06.000000000 +0900 afmtodit
-rwxr-xr-x 1 user None 1786 2011-11-15 10:01:09.000000000 +0900 apropos
-rwxr-xr-x 1 user None 18446 2012-02-06 22:59:05.000000000 +0900 arch.exe
-rwxr-xr-x 2 user None 90126 2011-12-04 07:26:03.000000000 +0900 ash.exe
lrwxrwxrwx 1 user None 8 2012-08-28 14:42:01.579520000 +0900 awk -> gawk.exe
-rwxr-xr-x 1 user None 9742 2012-04-14 10:50:16.000000000 +0900 banner.exe
-rwxr-xr-x 1 user None 26126 2012-02-06 22:59:05.000000000 +0900 base64.exe
-rwxr-xr-x 1 user None 17422 2012-02-06 22:59:05.000000000 +0900 basename.exe
-rwxr-xr-x 1 user None 536078 2011-02-26 08:01:28.000000000 +0900 bash.exe
-rwxr-xr-x 1 user None 27150 2012-02-06 22:59:45.000000000 +0900 [.exe
-rwxr-xr-x 1 user None 18958 2012-04-24 23:22:08.000000000 +0900 addftinfo.exe
-rwxr-xr-x 1 user None 165866 2012-04-24 23:22:06.000000000 +0900 afmtodit
-rwxr-xr-x 1 user None 1786 2011-11-15 10:01:09.000000000 +0900 apropos
-rwxr-xr-x 1 user None 18446 2012-02-06 22:59:05.000000000 +0900 arch.exe
-rwxr-xr-x 2 user None 90126 2011-12-04 07:26:03.000000000 +0900 ash.exe
lrwxrwxrwx 1 user None 8 2012-08-28 14:42:01.579520000 +0900 awk -> gawk.exe
-rwxr-xr-x 1 user None 9742 2012-04-14 10:50:16.000000000 +0900 banner.exe
-rwxr-xr-x 1 user None 26126 2012-02-06 22:59:05.000000000 +0900 base64.exe
-rwxr-xr-x 1 user None 17422 2012-02-06 22:59:05.000000000 +0900 basename.exe
-rwxr-xr-x 1 user None 536078 2011-02-26 08:01:28.000000000 +0900 bash.exe
-------------------------------------------------------------------------
日付の形式がそのままdateコマンドに使える状態になっているので
cutや、awkで日付だけ区切って渡せばよい。
2012年08月28日
JavaでCSVファイルを読み込む
参考サイト: http://www.atmarkit.co.jp/fjava/javatips/063java003.html
-------------------------------------------------------------------------
-------------------------------------------------------------------------
package javatips;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class ReadCSV {
public static void main(String[] args) {
try {
File csv = new File("writers.csv"); // CSVデータファイル
BufferedReader br = new BufferedReader(new FileReader(csv));
// 最終行まで読み込む
String line = "";
while ((line = br.readLine()) != null) {
// 1行をデータの要素に分割
StringTokenizer st = new StringTokenizer(line, ",");
while (st.hasMoreTokens()) {
// 1行の各要素をタブ区切りで表示
System.out.print(st.nextToken() + "\t");
}
System.out.println();
}
br.close();
} catch (FileNotFoundException e) {
// Fileオブジェクト生成時の例外捕捉
e.printStackTrace();
} catch (IOException e) {
// BufferedReaderオブジェクトのクローズ時の例外捕捉
e.printStackTrace();
}
}
}
2012年08月28日
Javaでコマンドプロンプトのコマンド実行
参考サイト: http://allabout.co.jp/gm/gc/80624/2/
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
public static void main(String[] args) {
String result;
try {
Runtime rt = Runtime.getRuntime();
Process p = rt.exec("CMD.EXE /C DIR c:\\windows\\");
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
while ((result = br.readLine()) != null) {
System.out.println(result);
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
2012年08月25日
Apache Commons Net
公式サイト: http://commons.apache.org/net/
参考サイト: http://www.syboos.jp/java/doc/jakarta-commons-net-ftpclient.html
------------------------------------------------------------------------------------------------
参考サイト: http://www.syboos.jp/java/doc/jakarta-commons-net-ftpclient.html
------------------------------------------------------------------------------------------------
package com.test.ftp;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FtpClientHelper {
private static final int FTP_PORT = 21;
public static void main(String[] args) {
try {
//ファイルアップロード
FileInputStream fis = new FileInputStream("c:\testftp.txt");
FtpClientHelper.sendFile("localhost", FTP_PORT, "testuser", "testpassword",
"remoteFilename", fis);
//ファイルダウンロード
FileOutputStream fos = new FileOutputStream("localfile");
FtpClientHelper.retrieveFile("localhost", FTP_PORT, "testuser", "testpassword",
"remoteFilename", fos);
} catch (Exception e) {
e.printStackTrace();
}
}
//ファイルアップロード
public static void sendFile (String host,
int port,
String user,
String password,
String remoteFilename,
InputStream is
) throws Exception {
FTPClient ftpclient = new FTPClient();
try {
//指定するホスト、ポートに接続します
ftpclient.connect(host, port);
int reply = ftpclient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
//接続エラー時処理
Exception ee = new Exception("Can't Connect to :" + host);
throw ee;
}
//ログイン
if (ftpclient.login(user, password) == false) {
// invalid user/password
Exception ee = new Exception("Invalid user/password");
throw ee;
}
//ファイル転送モード設定
ftpclient.setFileType(FTP.BINARY_FILE_TYPE);
//ftpclient.cwd("filetype=pdf");
//ファイル転送
ftpclient.storeFile(remoteFilename, is);
//"ファイル転送完了
// ファイル受信
FileOutputStream fos = new FileOutputStream("localfile");
ftpclient.retrieveFile("remotefile", fos);
} catch (IOException e) {
//TODO エラー処理
throw e;
} finally {
try {
ftpclient.disconnect(); //接続解除
} catch (IOException e) {
}
}
}
//ファイルダウンロード
public static void retrieveFile(String host,
int port,
String user,
String password,
String remoteFilename,
OutputStream os) throws Exception {
FTPClient ftpclient = new FTPClient();
try {
//指定するホスト、ポートに接続します
ftpclient.connect(host, port);
int reply = ftpclient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
//接続エラー時処理
Exception ee = new Exception("Can't Connect to :" + host);
throw ee;
}
//ログイン
if (ftpclient.login(user, password) == false) {
// invalid user/password
Exception ee = new Exception("Invalid user/password");
throw ee;
}
//ファイル転送モード設定
ftpclient.setFileType(FTP.BINARY_FILE_TYPE);
//ftpclient.cwd("filetype=pdf");
// ファイル受信
ftpclient.retrieveFile(remoteFilename, os);
} catch (IOException e) {
//TODO エラー処理
throw e;
} finally {
try {
ftpclient.disconnect(); //接続解除
} catch (IOException e) {
}
}
}
}
2005年08月17日
メモリ
【FROM】
EEPROM(Electric Erasable Programmable Memory)
電気的に消去(書き換え)できるROM。電源を切ってもデータは消えない。データの消去には5Vより高い電圧が必要だが、最近のEEPROMは内部で電源電圧の5Vを昇圧しているため、基板に実装したままデータを消去して書き換えるのが容易になった。そのためシステムの動作中にデータを書き換えることができる。ただEEPROMには、およそ数十万~百万回までしか、消去/書き換えができないという欠点がある。さらにEEPROMはそのデータを1bitだけ書き換えるときにも、すべてのbitをいったん消去して書き換えなければならないため、RAMのようにランダムな読み書きは困難。この欠点を改良したのがフラッシュメモリである。
構造上、メモリセルがビット線に対して並列に接続されるNOR型、
直列に接続されるNAND型に分けられ、NOR型は高速に向き、NAND型は高集積に向くとされている。
【フラッシュメモリ】
電気的に消去(書き換え)できるROM。電源を切ってもデータは消えない。EEPROMを改良したメモリで、ブロック単位で消去/書き込みができるようになっている。
EEPROMと同様に消去/書き込み回数には上限があるため、特定のブロックに書き込みが集中しないよう、ハードウェアまたはソフトウェアで対処する必要がある。
構造上、メモリセルがビット線に対して並列に接続されるNOR型、
直列に接続されるNAND型に分けられ、NOR型は高速に向き、NAND型は高集積に向くとされている。
【SRAM】
SRAM(Static Random Access Memory)
電源を切れば消えてしまう半導体メモリ。
擬似SRAMは、電源OFFでも、メモリに対して電源供給しつづけている。(はず)
このため、移動機の電池が完全になくなると、データが消去されてしまうことがある。
(マニュアルにもそう書かれているはず)
4~6個のトランジスタで構成されたメモリセルでbitの情報を記憶するRAM。DRAMのようなリフレッシュの必要はない。DRAMに比べると、SRAMはアクセスタイムを大幅に高速化できるので、PC互換機では外部キャッシュによく使われる。また消費電力についても、速度さえ落とせばDRAMよりはるかに小さくできるため、バッテリバックアップの必要なRAMにも利用される。
EEPROM(Electric Erasable Programmable Memory)
電気的に消去(書き換え)できるROM。電源を切ってもデータは消えない。データの消去には5Vより高い電圧が必要だが、最近のEEPROMは内部で電源電圧の5Vを昇圧しているため、基板に実装したままデータを消去して書き換えるのが容易になった。そのためシステムの動作中にデータを書き換えることができる。ただEEPROMには、およそ数十万~百万回までしか、消去/書き換えができないという欠点がある。さらにEEPROMはそのデータを1bitだけ書き換えるときにも、すべてのbitをいったん消去して書き換えなければならないため、RAMのようにランダムな読み書きは困難。この欠点を改良したのがフラッシュメモリである。
構造上、メモリセルがビット線に対して並列に接続されるNOR型、
直列に接続されるNAND型に分けられ、NOR型は高速に向き、NAND型は高集積に向くとされている。
【フラッシュメモリ】
電気的に消去(書き換え)できるROM。電源を切ってもデータは消えない。EEPROMを改良したメモリで、ブロック単位で消去/書き込みができるようになっている。
EEPROMと同様に消去/書き込み回数には上限があるため、特定のブロックに書き込みが集中しないよう、ハードウェアまたはソフトウェアで対処する必要がある。
構造上、メモリセルがビット線に対して並列に接続されるNOR型、
直列に接続されるNAND型に分けられ、NOR型は高速に向き、NAND型は高集積に向くとされている。
【SRAM】
SRAM(Static Random Access Memory)
電源を切れば消えてしまう半導体メモリ。
擬似SRAMは、電源OFFでも、メモリに対して電源供給しつづけている。(はず)
このため、移動機の電池が完全になくなると、データが消去されてしまうことがある。
(マニュアルにもそう書かれているはず)
4~6個のトランジスタで構成されたメモリセルでbitの情報を記憶するRAM。DRAMのようなリフレッシュの必要はない。DRAMに比べると、SRAMはアクセスタイムを大幅に高速化できるので、PC互換機では外部キャッシュによく使われる。また消費電力についても、速度さえ落とせばDRAMよりはるかに小さくできるため、バッテリバックアップの必要なRAMにも利用される。