EL9:
cat /etc/redhat-release AlmaLinux release 9.4 (Seafoam Ocelot) df -hT Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 4.0M 0 4.0M 0% /dev tmpfs tmpfs 955M 168K 955M 1% /dev/shm tmpfs tmpfs 382M 36M 347M 10% /run /dev/nvme0n1p4 xfs 19G 6.4G 13G 34% / /dev/nvme0n1p3 xfs 960M 147M 814M 16% /boot /dev/nvme0n1p2 vfat 200M 7.1M 193M 4% /boot/efi ...
xfs_info /dev/nvme0n1p4 meta-data=/dev/nvme0n1p4 isize=512 agcount=54, agsize=91808 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=1 inobtcount=1 nrext64=0 data = bsize=4096 blocks=4929019, imaxpct=25 = sunit=1 swidth=1 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=16384, version=2 = sectsz=512 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
記事:
df -hT | grep ebs /dev/nvme1n1 xfs 1.0T 910G 90G 91% /ext/ebs0
sudo xfs_growfs /dev/nvme1n1
~/.config/procps/toprc
# Ubuntu 20.04 LTS sudo apt install nbtscan nbtscan 192.168.1.10 ... IP address NetBIOS Name Server User MAC address ------------------------------------------------------------------------------ 192.168.1.10 MY-HOST <server> <unknown> 01:02:03:04:05:06 # プログラムで処理する場合。Nameだけを抽出 nbtscan -s "," 192.168.1.10 | cut -d, -f 2 # parallel で並列してNameだけを抽出 echo -e "192.168.1.10\n192.168.1.11" | parallel nbtscan -s "," {} | cut -d, -f 1,2
# Ubuntu 20.04 LTS sudo apt install samba-common-bin nmblookup -A 192.168.1.10 Looking up status of 192.168.1.10 MY-HOST <20> - B <ACTIVE> MY-HOST <00> - B <ACTIVE> WORKGROUP <00> - <GROUP> B <ACTIVE> MAC Address = 01-02-03-04-05-06
記事:
sudo dnf repoquery --installonly sudo dnf -y remove --oldinstallonly
sudo yum install yum-utils sudo package-cleanup --oldkernels --count=2
記事:
ip addr
ethtool -p eth0 10
記事:
記事:
cat /path/to/example.log | LANG=C grep -n -v '^[[:cntrl:][:print:]]*$' | head
touch /tmp/file.tmp ls --full-time /tmp/file.tmp -rw-r--r-- 1 user1 user1 0 2021-03-25 16:31:10.810000000 +0900 /tmp/file.tm # %z: modify time stat -c %z /tmp/file.tmp 2021-03-25 16:31:10.810000000 +0900 # %Z: modify time (Epoch sec) stat -c %Z /tmp/file.tmp 1616657470
stat /tmp -c '%a' 1777
sudo yum install coreutils
sudo yum install coreutils
単位系:
例:
echo 1024000 | numfmt --to iec 1000K echo 1048576 | numfmt --to iec 1.0M
echo 1.0M | numfmt --from iec 1048576
current open files:
sudo ls -A1 -U1 /proc/$(pgrep -u user01 java)/fd/ | wc -l 100 # OR sudo find /proc/$(pgrep -u user01 java)/fd/ | wc -l 100
max open files:
sudo prlimit -p $(pgrep -u user01 java) --nofile --noheadings NOFILE max number of open files 1024 4096 # SOFT limitのみ表示 sudo prlimit -p $(pgrep -u user01 java) --nofile --noheadings -o SOFT 1024
# SOFT limitのみ表示 sudo grep "Max open files" /proc/$(pgrep -u "user01" "java" | head -1)/limits | perl -ne 's/[ ]{2,}/\t/g;print;' | cut -f2
sudo prlimit --pid $(pgrep -u user01 java) | grep -i nofile NOFILE max number of open files 1024 10240 sudo prlimit --pid $(pgrep -u user01 java) --nofile=65536:65536
sudo bash -c "echo -n 'Max open files=65536:65536' > /proc/$(pgrep -u user01 java)/limits"
sudo grep -i -E "open|proc" "/proc/$(pgrep -u user01 java)/limits" Max processes 1024 257555 processes Max open files 1024 1024 files
diff -uw <(echo "hoge") <(echo "hage") --- /dev/fd/63 2020-08-01 13:51:38.468642200 +0900 +++ /dev/fd/62 2020-08-01 13:51:38.468642200 +0900 @@ -1 +1 @@ -hoge +hage
w -i 16:12:56 up 4:53, 2 users, load average: 0.54, 0.56, 0.53 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT user01 pts/0 192.168.61.1 11:27 32.00s 10.58s 0.00s ssh -F ssh-config -W bashton:22 web-01 user01 pts/1 192.168.61.1 11:44 0.00s 0.69s 0.00s w -i
cat a.txt a1 a2 cat b.txt b1 b2 paste a.txt b.txt a1 b1 a2 b2
単純にソートすると、「1.1.0, 1.10.0, 1.2.0」の順に並んでしまう。
0.0.1 0.0.10 0.0.2 0.1.0 0.10.0 0.2.0 1.1.0 1.10.0 1.2.0 2.0.0
sort -t . -n -k 1,1 -k 2,2 -k 3,3 -r /tmp/ver.txt 2.0.0 1.10.0 1.2.0 1.1.0 0.10.0 0.2.0 0.1.0 0.0.10 0.0.2 0.0.1
time sleep 0.1 real 0m0.106s ... time sleep 0.01 real 0m0.013s ... time sleep 0.001 real 0m0.003s ...
grep VmSwap /proc/*/status | sort -k 2 -r | head -n 10 /proc/1337/status:VmSwap: 848 kB /proc/1357/status:VmSwap: 840 kB /proc/1035/status:VmSwap: 676 kB ... # pidからコマンドや引数名を得る grep VmSwap /proc/*/status | sort -k 2 -r | head -n 10 | cut -d/ -f 3 | xargs -i ps -o pid,comm,args h {} 1337 master /usr/libexec/postfix/master 1357 qmgr qmgr -l -t fifo -u 1035 rsyslogd /sbin/rsyslogd -i /var/run/syslogd.pid -c 5 ...
getent passwd postfix postfix:x:89:89::/var/spool/postfix:/sbin/nologin # HOMEの取得 getent passwd postfix | cut -f6 -d: /var/spool/postfix # SHELLの取得 getent passwd postfix | cut -f7 -d: /sbin/nologin
通常「cp src/* dest/」としても、ドットから始まるファイル/ディレクトリは対象外になる
# 有効化 shopt -s dotglob # 無効化 shopt -u dotglob
ps -eo comm,user:32,rss h | grep -P "postmaster\s+postgres\s+" | awk '{sum+=$3} END {print sum}' 15832 # KB
pgrep -U postgres postmaster | xargs -i sudo grep -i pss /proc/{}/smaps | awk '{sum+=$2} END {print sum}' 5483 # kB
pmap --version pmap (procps version 3.2.8) sudo pmap -x 13025 13025: /usr/bin/postmaster -p 5432 -D /var/lib/pgsql/data Address Kbytes RSS Dirty Mode Mapping 0000000000400000 4492 816 0 r-x-- postgres ... ---------------- ------ ------ ------ total kB 220728 6688 3300
sudo yum install smem --enablerepo=epel sudo smem -P postmaster -U postgres -t PID User Command Swap USS PSS RSS 13031 postgres postgres: logger process 0 140 309 1548 13036 postgres postgres: wal writer proces 0 152 338 1732 13038 postgres postgres: stats collector p 0 184 377 1780 13035 postgres postgres: writer process 0 172 474 2004 13037 postgres postgres: autovacuum launch 0 276 519 2080 13025 postgres /usr/bin/postmaster -p 5432 0 2804 3483 6688 ------------------------------------------------------------------------------- 6 1 0 3728 5500 15832
LANG=C ll /usr/share/doc/ | grep zabbix drwxr-xr-x 2 root root 4096 Dec 9 18:09 zabbix-agent-3.0.5 drwxr-xr-x 2 root root 4096 Dec 9 18:09 zabbix-get-3.0.5 drwxr-xr-x 2 root root 4096 Dec 9 18:10 zabbix-sender-3.0.5 drwxr-xr-x 2 root root 4096 Dec 9 18:09 zabbix-server-mysql-3.0.5 drwxr-xr-x 2 root root 4096 Dec 9 18:09 zabbix-web-3.0.5
cd /usr/share/doc/zabbix-*-mysql* pwd /usr/share/doc/zabbix-server-mysql-3.0.5
HDDを廃棄する時に安全に削除を行うツール
SSDは「Secure Erase」が安全。
"rm -rf /" や "rm .*" 等の事故を防ぎたい。
mkdir -p ~/.Trash echo "alias rm='find ~/.Trash/ -mtime +30 -a \( -type f -o -type l \) -delete -o -empty -type d -delete;mv -f --backup=numbered --target-directory ~/.Trash/'" >> ~/.bashrc source ~/.bashrc
/etc/resolv.confの自動書き換え停止するために、NetworkManagerを止めていたが割と便利そう
cp --parents /etc/hosts /tmp/ tree /tmp/etc/ /tmp/etc/ └── hosts
sudo sshd -T | sort
sudo sshd -T -f ./sshd_config
CentOS6/7だと abrtd が起動しており、設定によってはコアダンプした後にすぐ消すようだ。
コアダンプ対象のプロセスのメモリ使用量が大きいと、数GBのファイルを作った後に消すという無駄な処理のため、iowaitが高くなる場合がある。
for srv in abrtd abrt-ccpp abrt-oops abrt-pstoreoops abrt-vmcore abrt-xorg abrt-dbus;do sudo service $srv stop;sudo chkconfig $srv off; done
echo -e "1:foo\n2:var" >> tmp.txt sed -i -e "1i 1:hoge" tmp.txt cat tmp.txt 1:hoge 1:foo 2:var
rename .htm .html *.htm
HDD入れ替え等でfstabを書く際に、デバイスの接続順が変わっても、明示的にドライブを指定できる。
sudo blkid /dev/sda1: UUID="b599d616-e521-449f-89a0-7f838614bc56" TYPE="ext2" /dev/sda5: UUID="HOiXD0-6j1h-Q3up-Et62-fvHk-mPIr-Ynglet" TYPE="LVM2_member" /dev/mapper/mediacenter-root: UUID="e0aeadc6-742f-42b4-b0e4-de4ecd6f5abd" TYPE="ext4" /dev/mapper/mediacenter-swap_1: UUID="9874055b-0ddc-4910-a319-fc3c1e20ab81" TYPE="swap" # デバイスを指定して調べる sudo blkid /dev/sda1 /dev/sda1: UUID="b599d616-e521-449f-89a0-7f838614bc56" TYPE="ext2"
proc /proc proc nodev,noexec,nosuid 0 0 UUID=e0aeadc6-742f-42b4-b0e4-de4ecd6f5abd / ext4 errors=remount-ro 0 1 UUID=b599d616-e521-449f-89a0-7f838614bc56 /boot ext2 defaults 0 2 UUID=9874055b-0ddc-4910-a319-fc3c1e20ab81 none swap sw 0 0
sudo gpasswd -a user01 wheel # または sudo usermod -aG wheel user01 id user01 uid=501(user01) gid=501(user01) groups=501(user01),10(wheel)
sudo gpasswd -d user01 wheel
sudo mount -fav
nc -zv -w 3 www.example.com 80;echo $? Connection to www.example.com 80 port [tcp/http] succeeded! 0
nc -v -i 1 -w 3 www.example.com 80;echo $? Ncat: Version 6.40 ( http://nmap.org/ncat ) Ncat: Connected to 93.184.216.34:80. Ncat: Idle timeout expired (1000 ms). 1 # または timeout 1 bash -c 'cat < /dev/null > /dev/tcp/www.example.com/80';echo $? # 正常の場合:0 / 異常(timeout)の場合:124
# 1回リクエストがあると終了する nc -l 10080 # -k: 接続を継続する nc -l 10080 -k
chage -l <username>
sudo chage -M 90 <username>
sudo chage -I -1 -m 0 -M 99999 -E -1 <username>
ulimit -a | grep core core file size (blocks, -c) 0
for pid in $(pgrep mysqld); do sudo cat /proc/$pid/limits | grep -P "open"; done
# 1GB ulimit -c 1000000 # 無制限 ulimit -c unlimited
cat /proc/sys/kernel/core_pattern core # 例:/tmp/core echo /tmp/core > /proc/sys/kernel/core_pattern # 例:/tmp/core.<%e:実行ファイル名>.<%p:PID>.<%u:UID> echo /tmp/core.%e.%p.%u > /proc/sys/kernel/core_pattern
vim /etc/security/limits.conf ---- * soft core unlimited ---- echo -e "kernel.core_pattern = /tmp/core.%e.%p.%u\nfs.suid_dumpable = 2" >> /etc/sysctl.conf echo "DAEMON_COREFILE_LIMIT=unlimited" >> /etc/sysconfig/init sysctl -p # daemonの再起動またはホストの再起動 service <daemon> restart
cp /usr/share/doc/bash-3.2/scripts/timeout /usr/local/bin/ chmod 755 /usr/local/bin/timeout
sudo timeout 3 tail -f /var/log/messages
timeout 1 sleep 5;echo $? 124
search example.com localdomain nameserver 192.168.61.2
NETWORKING=yes HOSTNAME=web01.example.com
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 127.0.0.1 web01.example.com web01 localhost
hostname -f web01.example.com hostname -s web01 hostname web01.example.com
127.0.0.1 web01 web01.example.com localhost localhost.localdomain
hostname -f web01 hostname -s web01 hostname web01.example.com
head -c 100m /dev/urandom > 100m.dummy
for i in {1..10000} ; do \ printf "%05d\t%s\n" "${i}" "$(date --iso-8601=seconds)" >> /tmp/dummy.log; \ done
less /etc/passwd | grep apache apache:x:48:48:Apache:/var/www:/sbin/nologin sudo su - apache --shell=/bin/bash --command="pwd" /var/www
echo -en "\t" | od -An -tx1 09 echo Hello | od -tx1c 0000000 48 65 6c 6c 6f 0a H e l l o \n 0000006
od -tx1c hello.txt
pgrepで探したプロセスをkillするのに使える
ssh -fNg -L 13306:mysql.example.com:3306 gw.example.com pgrep -u $USER -l -f 13306 2225 ssh -fNg -L 13306:127.0.0.1:3306 127.0.0.1 pkill -u $USER -f 13306: # シグナルを指定: -15 (SIGKILL)、-9 (SIGTERM) -9はDBやLDAP等のデータストアに対して通常は実行しない。データが失われる可能性がある pkill -9 -f <process name>
ファイルのmd5ハッシュをとってリスト化し、比較してくれるツール
sudo yum install md5deep --enablerepo=epel
sudo aptitude install md5deep
nohup md5deep -r /mnt/disk1/SRC-DIR > SRC-DIR.$(date +%Y%m%d).list &
md5deep -X SRC-DIR.list -r /mnt/disk2/DEST-DIR
特にオプションをつけずにmkfs.ext3/4等でフォーマットすると 5%がroot向けに予約されるようだ。(2TBなら100GB、3TBなら150GB)
データ用ドライブなら不要だと思う。
また大きいファイルだけを扱うならば、「-T largefile」とするとi-nodeが少なくなり、フォーマットの時間が短くなる。
sudo mkfs.ext4 /dev/sdb1 -m 0 -T largefile
iostat -x 5 # iowaitが44%と高く、sdbの%utilが異常に高い avg-cpu: %user %nice %system %iowait %steal %idle 1.00 0.00 3.50 44.36 0.00 51.15 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 80.40 0.20 47.60 0.80 512.00 21.46 0.11 2.27 12.00 2.23 0.50 2.40 dm-0 0.00 0.00 0.20 128.00 0.80 512.00 8.00 1.03 8.01 13.00 8.00 0.19 2.44 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 sdb 39.40 0.00 48.80 0.00 6364.80 0.00 260.85 1.48 29.23 29.23 0.00 18.31 89.36
sudo yum install iotop # 5秒毎に更新 sudo iotop -d 5 # バッチ処理用に、1回だけ実行 sudo iotop -b | head
sudo yum install dstat sudo dstat --time --top-io
pgrep -u nginx | xargs -i ps -o lstart h {} Fri Mar 3 12:34:25 2017
ps -eo pid,ppid,lstart,etime,cmd h ... 1303 1 Thu May 29 09:52:18 2014 06:04:05 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5 1339 1 Thu May 29 09:52:20 2014 06:04:03 /usr/sbin/sshd ...
# psの結果 ps -eo comm,user:32,etime,args h | grep -P "^crond\s+root" crond root 01:50:19 crond # 秒に変換 ps -eo comm,user:32,etime,args h | grep -P "^crond\s+root" | perl -ane '@t=reverse split(/[:-]/,$F[2]); $s=$t[0]+$t[1]*60+$t[2]*3600+$t0; print "$s"' 6619
echo "NETWORKING_IPV6=no" >> /etc/sysconfig/network echo "options ipv6 disable=1" >> /etc/modprobe.d/disable-ipv6.conf service ip6tables stop chkconfig ip6tables off vim /etc/hosts ---- #::1 localhost ---- service network restart
echo "2014-01-02 20:11:22 [INFO] There are 0/10 players online:" | gawk 'match($6, /([0-9]+)\/[0-9]+/, m) { print m[1] }'
ps aux | awk 'BEGIN {c=0} {if ($8 ~ /Z/) c+=1} END {print c}' 1 top -b -d1 -n1 | awk 'BEGIN {c=0} {if ($8 ~ /Z/) c+=1} END {print c}' 1 # ゾンビプロセスだけ表示 ps aux | awk '{if($8 ~ /Z/) print}'
yum install expect
vim /etc/profile.d/user-logging.sh ---- LOG_DIR=/tmp if [ -n "$SSH_CLIENT" ]; then TOPPROCESS_JUDGE_TOKEN='sshd:' else TOPPROCESS_JUDGE_TOKEN='login' fi if [ ! -z "$(ps -eo 'pid,args,tty' | awk -v pid=$PPID -v args=$TOPPROCESS_JUDGE_TOKEN '{if ($1 == pid && $2 == args && $3 ~ /@pts/) print $1,$2,$3}')" ]; then SCRIPTLOGFILE="${LOG_DIR}/$(whoami)_$(date +%Y%m%d%H%M)_$$.log" touch $SCRIPTLOGFILE chmod 600 $SCRIPTLOGFILE script $SCRIPTLOGFILE exit fi ----
yum install iperf iperf -s
yum install iperf iperf -c server.hostname
cat /etc/issue | cut -d ' ' -f 1 | head -1 | tr "[:upper:]" "[:lower:]" centos ubuntu raspbian
sudo yum install samba
sudo aptitude install samba-common-bin
net rpc shutdown -f -t '30' -C 'shutdown by remote user' -I '192.168.1.100' -U 'shutdown%password'
visudo ---- Defaults !requiretty ----
useradd -g root -M shutdown passwd shutdown
echo -e '#!/bin/sh\n/usr/bin/sudo /sbin/shutdown -h now' > /usr/local/sbin/shutdown.sh chmod 750 /usr/local/sbin/shutdown.sh vipw ---- #shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown shutdown:x:6:0:shutdown:/sbin:/usr/local/sbin/shutdown.sh ---- visudo ---- shutdown ALL=NOPASSWD: /sbin/shutdown, /sbin/halt, /sbin/poweroff, /sbin/reboot ----
su - shutdown
seq 10 > seq.txt
sed -n '2,4p' seq.txt
START=2;END=4;head -n $END seq.txt | tail -n $(($END - $START + 1))
flock -n locktest sleep 10 echo $?
ps -eo user,pcpu,comm h root 0.0 bash apache 0.0 httpd ...
ps -eo user,comm,pcpu h | grep -P "apache\s+httpd" | awk '{sum+=$3} END {print sum}' 1.1
ps -eo user,comm,rss h | grep -P "apache\s+httpd\s+" | awk '{sum+=$3} END {print sum}' 134712
yum install sysstat # 一覧表示 pidstat Linux 2.6.18-308.1.1.el5 (hostname) 07/09/13 _x86_64_ (2 CPU) 17:49:10 UID PID %usr %system %guest %CPU CPU Command 17:49:10 0 1 0.00 0.00 0.00 0.00 0 init 17:49:10 0 3 0.00 0.00 0.00 0.00 0 ksoftirqd/0 ... # PIDを指定 pgrep -u apache httpd ... 30222 # 1秒おきに、2回取得 pidstat -p 30222 1 2 Linux 2.6.18-308.1.1.el5 (hostname) 07/09/13 _x86_64_ (2 CPU) 17:51:42 UID PID %usr %system %guest %CPU CPU Command 17:51:43 48 30222 0.00 0.00 0.00 0.00 1 httpd 17:51:44 48 30222 0.00 0.00 0.00 0.00 1 httpd Average: 48 30222 0.00 0.00 0.00 0.00 - httpd
cd /usr/src/redhat/ wget http://pagesperso-orange.fr/sebastien.godard/sysstat-10.1.6-1.src.rpm rpm -ivh --nomd5 sysstat-10.1.6-1.src.rpm rpmbuild -ba SPECS/sysstat-10.1.6.spec rpm -Uvh RPMS/x86_64/sysstat-10.1.6-1.x86_64.rpm
sudo groupadd share sudo mkdir -p /var/www/example.com sudo chown :share /var/www/example.com sudo chmod 775 /var/www/example.com sudo chmod g+s /var/www/example.com
sudo chmod g-s /var/www/example.com
yum install jdk.x86_64 wget http://ftp.riken.jp/net/apache/hadoop/common/hadoop-1.1.2/hadoop-1.1.2-1.x86_64.rpm rpm -Uvh hadoop-1.1.2-1.x86_64.rpm
デフォルトでは長い引数は省略されてしまう。"w"か"ww"を付ける
ps uxww
zgrep -o -P 'Failed password for [\w\-\_]+' /var/log/secure | sort | uniq -c | sort -nr 1098 Failed password for root 489 Failed password for invalid 11 Failed password for bin 1 Failed password for ftp
usermod -u 1000 user1 groupmod -g 1000 user1 find /home/user1 -gid 2000 -exec chown user1. {} \;
zmore /var/log/maillog.1.gz zless /var/log/maillog.1.gz zcat /var/log/maillog.1.gz
zcat zdiff zegrep zforce zic zipcloak zipgrep zipnote zless znew zcmp zdump zfgrep zgrep zip zipdetails zipinfo zipsplit zmore zsoelim
ps aux | grep httpd root 1975 0.0 0.9 247992 9828 ? Ss 12:27 0:00 /usr/sbin/httpd apache 1992 0.0 0.6 247992 6164 ? S 12:27 0:00 /usr/sbin/httpd ... hoge 3386 0.0 0.0 107444 964 pts/1 S+ 18:00 0:00 grep httpd # httpdプロセスだけ表示 ps aux | grep '[h]ttpd'
pgrep -lf httpd 1975 /usr/sbin/httpd 1992 /usr/sbin/httpd ...
pgrep -u apache -f /usr/sbin/httpd 1975 1992 ...
$ pstree init─┬─acpid ├─atd ├─automount───5*[{automount}] ...
cat /var/run/httpd.pid 30607
umount -f /mnt fuser -muv /mnt
seq 0 3 0 1 2 3
seq 10 -2 5 10 8 6
seq -f "%04.2f" 1 0.1 1.5 1.00 1.10 1.20 1.30 1.40 1.50
seq -s , 0 3 0,1,2,3
seq -w 0 10 100 000 010 020 030 040 050 060 070 080 090 100
command >& /dev/null
* * * * * cronlog /path/to/command
* * * * * /path/to/command 2>&1 | logger -t mycommand -p local0.info
メモリ節約のためクラウド環境(AWS EC2等)なら仮想コンソールは1つで良い。デフォルト6つ
perl -p -i -e 's#ACTIVE_CONSOLES=/dev/tty\[1-6\]#ACTIVE_CONSOLES=/dev/tty[1-1]#' /etc/sysconfig/init reboot
perl -p -i -e 's/^2:2345/#2:2345/' /etc/inittab perl -p -i -e 's/^3:2345/#3:2345/' /etc/inittab perl -p -i -e 's/^4:2345/#4:2345/' /etc/inittab perl -p -i -e 's/^5:2345/#5:2345/' /etc/inittab perl -p -i -e 's/^6:2345/#6:2345/' /etc/inittab reboot
記事:
df -T
HISTTIMEFORMAT="%F %T " history
mount -o remount,ro /dev/sdb1
sudo yum install extundelete --enablerepo=epel
yum -y install make gcc gcc-c++ e2fsprogs-devel mkdir /tmp/0 cd /tmp/0 wget --trust-server-names "http://downloads.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2" tar xvfj extundelete-0.2.4.tar.bz2 cd extundelete-0.2.4 ./configure --prefix=/usr/local make sudo make install extundelete --help
cd /tmp # 復元したいファイルパスが分かっている場合 sudo extundelete --restore-file /home/user01/README.md /dev/sdb1 # 1時間以内に削除したファイルを復元 sudo extundelete --restore-all --after $(date +%s -d '1 hour ago') /dev/sdb1 # RECOVERED_FILES ディレクトリ以下に復元されたか確認。安全な場所にコピー
mount -o remount,rw /dev/sdb1
# file内の文字'e'を'x'に変換する。 tr e x < file # file内の小文字を大文字に変換する。 tr '[a-z]' '[A-Z]' < file # file内のスペースをすべてタブに変換する。 tr ' ' '\11' < file # file内の複数スペースをすべて1つのタブに変換する。 tr -s ' ' '\11' < file # file内のスペースをすべて削除する。 tr -d ' ' < file
物理サーバが手元にある場合、またクラウドでもさくらのVPSのように「コンソール」が提供されkernel選択画面が使える場合は、シングルモードに入りrootユーザのパスワードを変更できる。
cat /proc/cpuinfo | grep "processor" | wc -l 2 egrep -c "^processor[[:space:]]+:[[:space:]]+[0-9]+$" /proc/cpuinfo 2 # coreutils にある nproc 2 # util-linux-ng にある LANG=C lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 2 ... # glibc-common にある getconf _NPROCESSORS_ONLN 2
cat /proc/cpuinfo | grep "physical id" physical id : 0 physical id : 1
crontab -eで編集する際、パラメータ等に「%」が含まれていると正常に実行されないので「\%」とエスケープが必要
touch test stat test File: `test' Size: 0 Blocks: 0 IO Block: 4096 通常の空ファイル Device: fd00h/64768d Inode: 16825 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 501/user01) Gid: ( 501/user01) Access: 2017-01-04 13:07:45.113462561 +0900 Modify: 2017-01-04 13:07:45.113462561 +0900 Change: 2017-01-04 13:07:45.113462561 +0900
touch test stat --print=%y test | cut -d ' ' -f 1 2017-01-04
デリミタの無い行の場合"-f1", "-f2"でもすべて同じ値になる。
そのような行を無視したい場合は"-s"を付けると良い。
echo -e "var1" | cut -f1 var1 echo -e "var1" | cut -f2 var1 echo -e "var1" | cut -s -f1 echo -e "var1\tvar2" | cut -s -f2 var2
id hoge uid=500(hoge) gid=500(hoge) 所属グループ=500(hoge) id -u 500 id -u -n hoge id -g 10 id -g -n wheel
MTAやJAVAなど複数ソフト、バージョンを切り替えて使える
# 手動選択 alternatives --config mta # 自動選択 alternatives --set mta /usr/sbin/sendmail.postfix # 自動選択。番号がわかっていれば上と同様 echo 2 | alternatives --config mta
# 追加。複数ファイルで構成されている場合は--slaveオプションも付ける # --install [シンボリックリンク名] [グループ名] [バイナリ本体] [優先度] \ # --slave [シンボリックリンク名] [グループ名] [バイナリ本体] # ※優先度は大きいほど高い alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_31/bin/java 16031 \ --slave /usr/bin/jar java-jar /usr/java/jdk1.6.0_31/bin/jar \ --slave /usr/bin/javac java-javac /usr/java/jdk1.6.0_31/bin/javac \ --slave /usr/bin/javadoc java-javadoc /usr/java/jdk1.6.0_31/bin/javadoc \ --slave /usr/bin/javaws java-javaws /usr/java/jdk1.6.0_31/bin/javaws \ --slave /usr/bin/jcontrol java-jcontrol /usr/java/jdk1.6.0_31/bin/jcontrol # 手動選択 alternatives --config java # 自動選択 alternatives --set java /usr/java/jdk1.6.0_31/bin/java # 削除 # --remove [グループ名] [削除したいバイナリ本体] alternatives --remove java /usr/java/jdk1.6.0_31/bin/java # 現在の設定 alternatives --display java java - ステータスは手動です。 リンクは現在 /usr/java/jdk1.6.0_31/bin/java を指しています。 /usr/java/jdk1.6.0_31/bin/java - 優先項目 30 現在の「最適」バージョンは /usr/java/jdk1.6.0_31/bin/java です。 # 設定情報 ls -l /etc/alternatives/
dd if=/dev/zero of=/tmp/dummy count=1 bs=1 seek=10G
通常、ssh等でログインした場合、ログアウトした時点で実行したプロセスは停止する。
時間がかかる処理やデーモン化させたい処理がある場合。
nohup hoge.sh &
disown job番号
vi /etc/pam.d/password-auth ---- auth required pam_env.so # 6回以上の失敗アクセスがあった場合、システム管理者がリセットするまで無効 auth required pam_tally2.so deny=6 auth sufficient pam_unix.so try_first_pass nullok auth required pam_deny.so account required pam_unix.so password requisite pam_cracklib.so try_first_pass retry=3 type= # 過去4回のパスワードを回転使用できないように password sufficient pam_unix.so try_first_pass use_authtok nullok sha512 shadow remember=4 password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so ----
# 公開鍵の消去 echo "" > /root/.ssh/authorized_keys # ログの消去 # /var/log/cron.1 や cron.1.gz も削除 find /var/log/* -regextype posix-egrep \( -regex ".+\.[0-9]+$" -or -regex ".+\.[0-9]+\.gz$" \) -type f -delete echo "" > /var/log/boot.log echo "" > /var/log/btmp echo "" > /var/log/cron echo "" > /var/log/dmesg echo "" > /var/log/dmesg.old echo "" > /var/log/lastlog echo "" > /var/log/maillog echo "" > /var/log/messages echo "" > /var/log/secure echo "" > /var/log/spooler echo "" > /var/log/tallylog echo "" > /var/log/wtmp echo "" > /var/log/yum.log echo "" > /var/log/audit/audit.log if [ -d /var/log/httpd ]; then for file in `ls /var/log/httpd/*_log`; do echo "" > $file done fi if [ -f /var/log/mysqld.log ]; then for file in `ls /var/log/mysql*.log`; do echo "" > $file done fi if [ -f /var/log/postgresql.log ]; then for file in `ls /var/log/postgresql*.log`; do echo "" > $file done fi # コマンドヒストリーのクリア history -c
groupadd -g 2001 hoge cat >> user.txt << EOS test1:test1:2001:2001::/home/test1:/bin/bash test2:test2:2002:2001::/home/test2:/bin/bash EOS newusers user.txt
local SWAPFILE=/swap.1 cat /etc/fstab | grep -i "swap" > /dev/null 2>&1 if [ $? == 1 -a ! -f $SWAPFILE ]; then # swap=512MB dd if=/dev/zero of=$SWAPFILE bs=1M count=512 mkswap $SWAPFILE swapon $SWAPFILE echo "$SWAPFILE swap swap defaults,nofail 0 0" >> /etc/fstab swapon -s fi
$ dig ドメイン名
dig www.google.co.jp +short
172.217.26.35
$ dig mx ドメイン名
$ dig @DNSサーバ ドメイン名
dig +short -t NS example.com b.iana-servers.net. a.iana-servers.net. 199.43.135.53
time find /tmp -type f | wc -l
SRC_DIR=./ for d in $(find $SRC_DIR -maxdepth 1 -type d); do echo $(find "$d" -type f | wc -l),$d; done | sort -nr | head -n 10
find -name '*.sh' | xargs nkf --overwrite -w
pingライクにhttpチェックができる
tune2fs -l /dev/sda1
tune2fs -L eraid0 /dev/sda1
tune2fs -m 0 /dev/sda1
/var/spool/cron/USERNAME
du -m --max-depth=1 ~/ | sort -nr | head 10492 /home/user01/ 1359 /home/user01/.anyenv 765 /home/user01/.local 445 /home/user01/.cache ...
du -S -m --exclude=.svn | sort -n
du -h -d1 ~/ | sort -nr | head 765M /home/user01/.local 472K /home/user01/.config 445M /home/user01/.cache ...
kernel: VFS: file-max limit 8192 reached
cat /proc/sys/fs/file-attachref(example.chkconfig); #geshi(bash){{ mv example.chkconfig /etc/rc.d/init.d/example chmod 755 example chown root:root example chkconfig --add example chkconfig example on service example restart
. /etc/rc.d/init.d/functions
cat max # CentOS5.4の場合のデフォルト 102274
echo 102274 > /proc/sys/fs/file-max
fs.file-max=102274
rm !(*.foo|*.bar|*.baz)
some_very_long_and_complex_command # label
echo 1 2 3 1 2 3 !:- echo 1 2 1 2
mv filename.{old,new}
kill -SIGUSR1 [PID]
yum install pv --enablerepo=rpmforge #または wget http://pipeviewer.googlecode.com/files/pv-1.1.4-1.i386.rpm sudo rpm -ivh pv-1.1.4-1.i386.rpm # 実行例 dd if=/dev/zero count=1024 bs=1M | pv -s 1g > output.log 024+0 records in67.4MB/s] [===============================================================================> ] 98% ETA 0:00:00 1024+0 records out 1GB 0:00:11 [91.3MB/s] [=================================================================================>] 100% 1073741824 bytes (1.1 GB) copied, 10.751 seconds, 99.9 MB/s
ls -ltr
kernel: ACPI: Unable to turn cooling device [ddc8b748] 'on'
vi /boot/grub/grub.conf ---- kernel /vmlinuz-2.6.18-194.3.1.el5 ro root=/dev/VolGroup00/LogVol00 acpi=off ---- service acpid stop chkconfig acpid off
$ cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: WDC WD10 Model: -WCAV50611046 Rev: Type: Direct-Access ANSI SCSI revision: 02 Host: scsi0 Channel: 00 Id: 00 Lun: 01 Vendor: WDC WD50 Model: -WCAPW1876244 Rev: Type: Direct-Access ANSI SCSI revision: setup (hd1) grub 02
$ cat /proc/ide/hda/model HITACHI_DK23DA-30
$ echo 'a\nb' a\nb
$ echo -e 'a\nb' a b
echo $'\n''\n' \n
yum install lsyncd -y --enablerepo=rpmforge
yum -y install convmv
convmv -r -f sjis -t utf8 *
convmv -r -f sjis -t utf8 * --notest
$ ssh -i .ssh/id_rsa 192.168.1.2 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
$ chmod 600 .ssh/id_rsa
# vi /etc/motd ---- __| __|_ ) Fedora 8 _| ( / 32-bit ___|\___|___| Welcome to an EC2 Public Image :-) Base --[ see /etc/ec2/release-notes ]-- ----
cat >> hoge.txt << EOS a b c EOS
cat >> hoge.txt << 'EOS' VAR=hoge echo $hoge EOS
cd /tmp wget http://www.coker.com.au/bonnie++/experimental/bonnie++-1.96.tgz tar xvfz bonnie++-1.96.tgz cd bonnie++-1.96 必要ならインストール # yum groupinstall ./configure vi bonnie.h ---- #define MinTime (0.01) ---- make ./bonnie++ -d /tmp -u root cd .. rm -rf bonnie++*
yum install bonnie++ --enablerepo=rpmforge bonnie++ -u ユーザ -d /tmp
bon_csv2html < input.csv > output.html
uname -i i386 x86_64
getconf LONG_BIT 32 // 32bit 64 // 64bit
yum install tcpflow --enablerepo=rpmforge
sudo yum install libpcap http://pkgs.repoforge.org/tcpflow/tcpflow-0.21-1.2.el6.rf.$(uname -i).rpm
# HTTP:80をパケットキャプチャしてコンソールに出力。-cを省略するとファイルに出力 sudo tcpflow -cs port 80 -i eth0 CTRL+Cで停止 # 送受信が[IP Address]かつポート80のパケットのみキャプチャ(HTTPリクエスト/レスポンス) tcpflow -cs -i eth0 host [IP Address] and port 80 # 送信元が[IP Address]かつポート80のパケットのみキャプチャ(HTTPリクエストのみ表示) tcpflow -cs -i eth0 src host [IP Address] and port 80 # 送信先が[IP Address]かつポート80のパケットのみキャプチャ(HTTPレスポンスのみ表示) tcpflow -cs -i eth0 dst host [IP Address] and port 80
perl -MCPAN -e shell cpan> o conf prerequisites_policy follow cpan> o conf commit cpan> quit
ps alx | awk '{printf ("%d\t%s\n", $8,$13)}' | sort -n -r
ps alx | grep mysql | awk '{printf ("%d\t%s\n", $8,$13)}'
sudo yum install time
sudo yum install time make gcc perl perl-Time-HiRes wget http://byte-unixbench.googlecode.com/files/UnixBench5.1.3.tgz tar xvfz UnixBench5.1.3.tgz cd UnixBench make ./Run -i 1 index
sudo yum install time wget http://www.tux.org/pub/tux/benchmarks/System/unixbench/unixbench-4.1.0.tgz tar zxvf unixbench-4.1.0.tgz cd unixbench-4.1.0 make ./Run -1 index
yum install doxygen
yum install graphviz graphviz-gd
# yum -y install httpd-devel
# wget ftp://ftp.aconus.com/fc5/modhttp://www.itmedia.co.jp/help/tips/linux/l0458.html]] # tar xvfz mod_encoding-2.2.0-1.src.tar.gz # rpm -ivh iconv_hook-1.0.0-1.src.rpm mod_encoding-2.2.0-1.src.rpm ビルドエラー「インストール済み(ただし未伸張)ファイルが見つかりました」が出るので、以下を先頭に追加 # vi SPECS/iconv_hook.spec ---- %define __check_files %{nil} ---- # rpmbuild -ba SPECS/iconv_hook.spec # rpm -ivh RPMS/i3861p*.log/iconv_hook-1.0.0-1.i386.rpm ビルドエラー「インストール済み(ただし未伸張)ファイルが見つかりました」が出るので、以下を先頭に追加 # vi SPECS/mod_encoding.spec ---- %define __check_files %{nil} ---- # rpmbuild -ba SPECS/mod_encoding.spec # rpm -ivh RPMS/i386/mod_encoding-2.2.0-1.i386.rpm
# vi /etc/httpd/conf.d/mod_encoding.conf ---- LoadModule encoding_module modules/mod_encoding.so <IfModule mod_encoding.c> EncodingEngine on NormalizeUsername on SetServerEncoding UTF-8 DefaultClientEncoding UTF-8 CP932 EUCJP-MS AddClientEncoding "Microsoft .* DAV 1.1" ASCII CP932 UTF-8 AddClientEncoding "Microsoft .* DAV" UTF-8 CP932 AddClientEncoding "(Microsoft .* DAV $)" UTF-8 CP932 AddClientEncoding "(Microsoft .* DAV 1.1)" CP932 UTF-8 AddClientEncoding "Microsoft-WebDAV*" UTF-8 CP932 AddClientEncoding "RMA/*" CP932 AddClientEncoding "xdwin9x/" CP932 AddClientEncoding "cadaver/" UTF-8 EUCJP-MS AddClientEncoding "Mozilla/" EUCJP-MS </IfModule> ---- # service httpd restart
# vi /etc/httpd/conf.d/dav.example.com.conf ---- <VirtualHost *:80> ServerAdmin webmaster@dav.example.com ServerName dav.example.com ServerAlias www.dav.example.com DocumentRoot /var/www/vhost/dav.example.com/public_html ErrorLog logs/dav.example.com-error_log CustomLog logs/dav.example.com-access_log combined env=!no_log <Directory /> Options -Indexes FollowSymLinks AllowOverride All </Directory> <Location /> DAV On #SSLRequireSSL AuthType Basic AuthUserFile /var/www/vhost/dav.example.com/.htpasswd AuthName "password" Require valid-user </Location> </VirtualHost> ---- # chown -R apache. /var/www/vhost/dav.example.com/public_html # service httpd graceful
# cd /usr/local/src/ # wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz # tar xvfz libiconv-1.9.2.tar.gz # cd libiconv-1.9.2 # ./configure # make # make install # vi /etc/ld.so.conf ---- /usr/local/lib ---- # ldconfig
ls | xargs du -ks | sort -n -r
dotファイルをUTF-8で記述し、以下の方法で、nodeとlabelが日本語になった。
「-G」でgraph環境変数も追加できる。
yum install graphviz graphviz-gd
$ locate .ttf /usr/share/fonts/ja/TrueType/kochi-gothic-subst.ttf /usr/share/fonts/ja/TrueType/kochi-mincho-subst.ttf /usr/share/fonts/japanese/TrueType/sazanami-gothic.ttf /usr/share/fonts/japanese/TrueType/sazanami-mincho.ttf
dot -T png -Nfontname=kochi-gothic-subst -Efontname=kochi-gothic-subst < trac.dot > trac.png
digraph G { node [fontname="kochi-gothic-subst"] edge [fontname="kochi-gothic-subst"] ... }
メモリが256MBしかないPCに、CentOS5.3をネットワークインストールしようとすると、rootパスワード入力後、パッケージ選択前に以下のエラーが発生する。
メモリ512MBあれば問題なくインストールできる。
# dmeshttp://www.itmedia.co.jp/enterprise/0309/05/epn05.html]] ipw2100: Intel(R) PRO/Wireless 2100 Network Driver, git-1.2.2 ipw2100: Copyright(c) 2003-2006 Intel Corporation ipw2100: Detected Intel PRO/Wireless 2100 Network Connection ipw2100: eth0: Firmware 'ipw2100-1.3.fw' not available or load failed. ipw2100: eth0: ipw2100_get_firmware failed: -2 ipw2100: eth0: Failed to power on the adapter. ipw2100: eth0: Failed to start the firmware. ipw2100Error calling register_netdev. ipw2100: probe of 0000:01:04.0 failed with error -5
$ wget http://dl.atrpms.net/all/ipw2100-firmware-1.3-6.0.1.noarch.rpm $ rpm -ivh ipw2100-firmware-1.3-6.0.1.noarch.rpm $ rmmod ipw2100 $ modprobe ipw2100 $ iwconfig
# wpa_supplicant on # chkconfig dhcdbd on
# vi /etc/sysconfig/iptables ---- -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10080 -j ACCEPT ---- # service iptables restart
$ vi ssh_10080_www.google.co.jp_80.sh ---- #!/bin/bash ssh -g -L 10080:www.google.co.jp:80 user@localhost ---- $ chmod 700 ssh_10080_www.google.co.jp_80.sh
grep -r -i --color=auto "検索文字列" /tmp/*
cpan -i App::Ack
# localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS # export LANG=ja_JP.sjis
split -b 1m hogehoge hogehoge.
split -l 1000 hogehoge hogehoge.
rootでcp -fしても、「yes/no」と訪ねられる。yesコマンドの出力を食わせてやればよい。
$ yes | cp -f ...
ssh -g -L 30022:remotehost2:22 username@remotehost1
scp -P 30022 filename username@localhost:/home/foo/
ssh -g -L 30443:localhost:443 username@remotehost1
svn co https://localhost:30443/svn/SandBox/trunk/src SandBox
ls | nkf --sjis --euc
cd `printf "あいうえお" | nkf -s`
"grep -r"の代わりに使える。
デフォルトで CVS, RCS, .svn, blib といったバージョン管理ディレクトリを無視、-i, -v といった grep 由来のコマンドラインや、 --perl で perl ソースコードだけ検索。カラーリングにも対応。
# perl -MCPAN -e shell cpan> install App::Ack
cpan> install P/PE/PETDANCE/ack-1.58.tar.gz
ack [options] PATTERN [FILE...] ack -f [options] [DIRECTORY...]
#!/bin/bash export LANG="ja_JP.eucjp" export PAGER="/usr/bin/less -isr"
#!/bin/bash export LANG="ja_JP.utf8" export PAGER="/usr/bin/iconv -f euc-jp -t utf-8 | /usr/bin/less -isr"
Redhat系ならば、lsusbがある。
あとはlshwとか。
# yum install usbutils # lsusb
usb 5-2: USB disconnect, address 36 usb 5-2: new full speed USB device using uhci_hcd and address 40 usb 5-2: configuration #1 chosen from 1 choice pwc: Unknown parameter `index'
Dec 18 15:52:26 tech-fsv last message repeated 2 times Dec 18 15:54:16 tech-fsv kernel: usb 5-2: USB disconnect, address 40 Dec 18 15:54:19 tech-fsv kernel: usb 5-2: new full speed USB device using uhci_hcd and address 41 Dec 18 15:54:20 tech-fsv kernel: usb 5-2: configuration #1 chosen from 1 choice Dec 18 15:54:20 tech-fsv kernel: pwc Philips webcam module version 9.0.2-unofficial loaded. Dec 18 15:54:20 tech-fsv kernel: pwc Supports Philips PCA645/646, PCVC675/680/690, PCVC720[40]/730/740/750 & PCVC830/840. Dec 18 15:54:20 tech-fsv kernel: pwc Also supports the Askey VC010, various Logitech Quickcams, Samsung MPC-C10 and MPC-C30,
locateコマンドでファイルを高速に検索可能だが、RedHatやFedoraだと、インストール時にはupdatedbの自動更新が無効になっている。
有効にするには以下のファイルを編集し「yes」に変更する。
# vi /etc/updatedb.conf ----------------------------- DAILY_UPDATE=yes -----------------------------
毎日午後4時に実行されるが、負荷が高すぎて問題が出る場合は、PRUNEPATHSでディレクトリを除外しておく。キャッシュやテンポラリファイルが膨大にあるディレクトリを指定すると良さそう。
tailの出力結果をgrepで絞り込んで、それをファイルに出力しようとしても、以下の方法では何も出力されません。
# tail -f /var/log/httpd/access_log | grep 絞りこみ文字列 > ファイル名
# tail -f /var/log/httpd/access_log | grep 絞りこみ文字列 > ファイル名& # killall tail
# fdisk -l Disk /dev/hda: 122.9 GB, 122942324736 bytes ... Disk /dev/hdb: 300.0 GB, 300090728448 bytes ... Disk /dev/hdd: 61.4 GB, 61492838400 bytes ...
# fdisk /dev/hdd m - help p - 現在の領域設定表示 n - 新規に領域作成 w - 書き込み
# mkfs.ext3 /dev/hdd1
# mkdir /mnt/hdd1 # mount -t ext3 /dev/hdd1 /mnt/hdd1
# vi /etc/fstab # LABEL=/dev/hdd1 /mnt/hdd1 ext3 defaults 1 2
スクリプト等で一括登録する方法。useradd -p コマンドではあらかじめcrypt()したパスワードを渡す必要があります。passwdコマンドにパイプ経由でパスワードを渡してみます。
# useradd hoge # echo 'hogehoge' | passwd --stdin hoge
デバック時にのみ有効にしたいコードが有る場合、Makefile, gcc, cc時にオプションで「-DDEBUG」を付ける事により、ソース中に「#define DEBUG」記述するのと同じ効果を持たせる事ができる。
Makefile --------------------------------- CFLAGS = -g -O2 -DDEBUG ---------------------------------
test.c --------------------------------- #ifdef DEBUG printf("DEBUG:..."); #endif ---------------------------------
Windowsでもbmp -> jpeg2000は可能だが、逆がほとんどない。
複数ファイルの一括変換ができなくて面倒。
Value | Description |
bmp | Windows BMP |
jp2 | JPEG-2000 JP2 |
jpc | JPEG-2000 Code Stream |
jpg | JPEG |
pgx | PGX |
pnm | PNM/PGM/PPM |
mif | My Image Format |
ras | Sun Rasterfile |
jasper -f 入力ファイル名.jp2 -F 出力ファイル名.bmp -T bmp
# localedef -f SHIFT_JIS -i ja_JP ja_JP.sjis
# locale -a | grep ja ja_JP ja_JP.eucjp ja_JP.sjis ja_JP.ujis ja_JP.utf8 japanese japanese.euc
# export LANG=ja_JP.SJIS
$ whereis perl perl: /usr/bin/perl /usr/share/man/man1/perl.1.gz
diff -up hello.c patch/hello.c > hello.patch
diff -uprN dir.org/ dir/ > dir.patch
patch -u -p0 --dry-run < hello.patch
patch -u -p0 < hello.patch
$ wget http://jaist.dl.sourceforge.net/sourceforge/ezix/lshw-B.02.03.tar.gz $ tar vxzf lshw-B.02.03.tar.gz $ cd lshw-B.02.03/src/ $ make $ su # make install
# lshw -html > abc.html # lshw -xml > efg.xml
inetd経由のデーモンのみ制御可能。
よって、apache等はその範囲ではない。
ただし、最近はlibwrapを取り込んでいるらしく、inetd経由でなくとも有効になるものがある。
lddコマンドでリンクしてるライブラ^processorリをみてlibwrap.soとかリンクしてれば制限かかるらしい。
ハッキングに利用されるrootkitを検出するツール。
http://www.chkrootkit.org/
$ wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz $ tar xvzf chkrootkit.tar.gz $ cd chkrootkit-0.44 $ make sense $ su # cp -p chkrootkit /usr/local/bin/
# ./chkrootkit
# su - # cd /etc/cron.daily/ # vi chkrootkit #!/bin/sh # /usr/local/bin/chkrootkit > /var/log/chkrootkit_log grep "INFECTED" /var/log/chkrootkit_log chmod 600 /var/log/chkrootkit_log # chmod 751 chkrootkit
# /etc/cron.daily/chkrootkit
iptablesの設定を確認。
passiveモードでログインできない場合も同様。
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # service iptables save # service iptables restart
kernel等アップデートができる。
通常のインストール後に、「rebootしますか?」とダイアログが出るが、
そのときに、ALT+F2でコンソール画面に移動できる。
rpm -ivh rpmパッケージ名
元に戻るにはALT+F1。
FTPサーバーがPASSIVEモードに対応しているか確認する。
どうやら、強制的にPASSIVEモードでアクセスするようなので、失敗する場合がある。
apache2.0用にインストールする場合、オプションの変更が必要なので、
SRPMからコンパイルし、インストールする。
4.3.3をインストールする場合
http://blogs.yahoo.co.jp/airmikan/31578937.html]] rpm -e 古いパッケージ名
rpm -ivh php-4.3.3-4.1.src.rpm
cd /usr/src/redhat/SPECS//usr/src/redhat/SPECS/php.specに以下の行を追加
#build --with-apxs=%{_sbindir}/apxs build --with-apxs2filter=%{_sbindir}/apxsコンパイル時に、libphp4
EncodingEngine on NormalizeUsername on SetServerEncoding UTF-8 DefaultClientEncoding UTF-8 CP932 EUCJP-MS AddClientEncoding .soが存在すると言って怒られるので無効にする。 # vihttp://blogs.yahoo.co.jp/airmikan/31578937.html]]
%_unpackaged_files_terminate_build 0
# rpmbuild -bb --clean php.spec # cd /usr/src/redhat/RPMS/ # rpm -ivh php-4.3.3-4.1.i386.rpm # rpm -ivh php-debuginfo-4.3.3-4.1.i386.rpm # rpm -ivh php-devel-4.3.3-4.1.i386.rpm # rpm -ivh php-domxml-4.3.3-4.1.i386.rpm # rpm -ivh php-imap-4.3.3-4.1.i386.rpm # rpm -ivh php-ldap-4.3.3-4.1.i386.rpm # rpm -ivh php-manual-4.3.3-4.1.i386.rpm # rpm -ivh php-mysql-4.3.3-4.1.i386.rpm # rpm -ivh php-odbc-4.3.3-4.1.i386.rpm # rpm -ivh php-pgsql-4.3.3-4.1.i386.rpm # rpm -ivh php-snmp-4.3.3-4.1.i386.rpm
# ln -s /usr/lib/apache/libphp4.so /etc/httpd/modules/libphp4.so
# service httpd restart
<? phpinfo(); ?>
ファイルをオープンできる上限に達する現象は、 非常に負荷の高いWEBサーバーなどでみられる
du -sm /home/* | sort -nr
パーミッションを許可しているのにエラーとなる場合は、これを疑う。
getenforce Disabled sestatus SELinux status: disabled
sudo setenforce 0 sudo perl -p -i -e 's#^SELINUX=.+#SELINUX=disabled#' /etc/selinux/config
md5sum, sha1sum 等を使って、ファイルの破損等検証を行う。
sha1sum *.tar.gz > checksum.sha1sum
sha1sum -c checksum.sha1sum
echo -n "文字列" | md5sum
※"echo -n" で改行を出力しない事で、phpのmd5()関数と同じ結果になる。
# ls -tl --full-time 合計 96 -rw-r--r-- 1 root root 395 2006-11-24 16:38:46.000000000 +0900 id_rsa.pub -rw------- 1 root root 5310 2006-07-20 20:09:17.000000000 +0900 mbox
内側だけに、pingが飛ぶ、外側には飛ばない場合は、
/etc/sysconfig/network にゲートウェイの設定がされていない事を疑う。
[root@bs1 root]# more /etc/sysconfig/network NETWORKING=yes HOSTNAME=bs1 GATEWAY=192.168.254.1 [root@bs1 root]# service network restart
特定のIPからのアクセスを制限するには、/etc/hosts.allow と /etc/hosts.denyで行う。
例えば、ローカルLANのみ許可する場合は
/etc/hosts.allow
ALL: 192.168.1.0/255.255.255.0 # Local Network
/etc/hosts.deny
ALL: ALL
scpコマンドを使う。
sshポートが空いていれば、ftpデーモンが起動していなくとも、使用できる。
hogeアカウントで、xxx.hoge.co.jpの*.txtをカレントに転送する場合。
再起は-rオプション
scp hoge@xxx.hoge.co.jp:\*.txt ./
/etc/inittab を開き、「5」の部分を「3」にする。
#id:5:initdefault: id:3:initdefault:
nmapコマンドを使います。
# nmap IPアドレス
cat /etc/os-release NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-7" CENTOS_MANTISBT_PROJECT_VERSION="7" REDHAT_SUPPORT_PRODUCT="centos" REDHAT_SUPPORT_PRODUCT_VERSION="7"
cat /etc/os-release NAME="Ubuntu" VERSION="18.04.3 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.3 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic
ls -l /etc/*-release -rw-r--r-- 1 root root 37 Sep 5 22:05 /etc/centos-release -rw-r--r-- 1 root root 393 Sep 5 22:05 /etc/os-release lrwxrwxrwx 1 root root 14 Feb 6 14:14 /etc/redhat-release -> centos-release lrwxrwxrwx 1 root root 14 Feb 6 14:14 /etc/system-release -> centos-release
Red Hat Enterprise Linux Server release 6.3 (Santiago) Red Hat Enterprise Linux Server release 6.2 (Santiago) Red Hat Enterprise Linux Server release 5.4 (Tikanga) Red Hat Enterprise Linux Server release 5.3 (Tikanga) CentOS release 6.3 (Final) CentOS release 6.2 (Final) CentOS release 6.1 (Final) CentOS Linux release 6.0 (Final) CentOS release 5.8 (Final) CentOS release 5.7 (Final) CentOS release 5.5 (Final) CentOS release 4.6 (Final) Fedora Core release 4 (Stentz) Debian GNU/Linux 4.0 Turbolinux Server 6.5 (Jupiter) SUSE Linux Enterprise Server 9 (ia64)
readonly target_os="CentOS .*release [6-7]|Red Hat Enterprise Linux .* [6-7]" # OSチェック CHK=$(grep -E "$target_os" /etc/redhat-release) if [ "$CHK" == "" ]; then echo "Not support OS. Target $TARGET_OS" exit 1 fi echo "OK"
unameコマンドを使う。バージョン情報のみは -r。全ては --all。
# uname --all Linux bs1 2.4.22-1.2115.nptl #1 Wed Oct 29 15:20:17 EST 2003 i686 i686 i386 GNU/Linux
# uname -m i686
aptというのはDebianでのパッケージ管理システムでしたが、最近はredhat等のrpmベースのディストリビューションにも移植されています。
rpmとの違いは依存性のある関連パッケージも同時にダウンロードしてインストールしてくれるます。
rpmのようにインストールしようとすると依存するrpmが不足していていちいちダウンロードしてインストールする必要がありません。
http://apt.freshrpms.net/からDLする。
RedHat Linux 9なら
# rpm -ivh http://ftp.freshrpms.net/pub/freshrpms/redhat/9/apt/apt-0.5.5cnc6-fr1.i386.rpm
パッケージ情報の更新
# apt-get update
依存性に問題ないかチェック
# apt-get check
phpをインストールしたい時は
# apt-get install php
説明 | コマンド |
パッケージデータベースの更新 | apt-get update |
パッケージのインストール | apt-get install パッケージ名 |
パッケージのアップグレード(インストール済みパッケージを最新にします) | apt-get upgrade |
ディストリビューションごとアップグレードされます | apt-get dist-upgrade |
パッケージのアンインストール | apt-get remove パッケージ名 |
パッケージの検索 | apt-cache search 検索文字列 |
パッケージの依存関係表示 | apt-cache depends パッケージ名 |