Skip to main content

I/O

Zero Copy

  • read + write: 4 context switch, 4 data copy (2 DMA, 2 CPU).
  • mmap + write: 4 context switch, 3 data copy (2 DMA, 1 CPU).
  • sendfile: 2 context switch, 3 data copy (2 DMA, 1 CPU).
  • scatter and gather sendfile: 2 context switch, 2 data copy (1 DMA, 1 SG-DMA).
  • 传输大文件 (无法命中内核 PageCache) 使用 异步 I/O + 直接 I/O, 传输小文件使用 Zero Copy.
location /video/ {
sendfile on;
aio on;
directio 1024m;
}

Swap

dd if=/dev/zero of=/swapfile bs=1G count=4
mkswap /swapfile
swapon /swapfile

Mount

主分区 (primary) 与延伸分区 (extended) 延伸分区可以继续划分成逻辑分区 (logical).

mount [-t 文件系统][-o 特殊选项] 设备文件名 挂载点(挂载目录/media /misc /mnt)
  • 无参数: 显示当前挂载设备.
  • -a: 依据 /etc/fstab 文件配置, 自动挂载.
umount 设备文件名/挂载点
fdisk –l

Repair

sudo debugfs /dev/sda9
> debugfs: lsdel

Partition

Fdisk

分区表类型 MBR

n p e l 新 主 逻辑 扩展 分区 w 激活

Parted

分区表类型 MBR/GPT

  • mklabel 选择分区表类型
  • print 打印分区信息
  • mkpart 新建分区
  • rm 删除分区
  • unit 选择单位
  • quit 结束分区

Du

du -sh /home/user

Host System Information

#!/bin/bash

# Simple print cpu topology

# numactl --hardware
# ls /sys/devices/system/node/node0
# lscpu

function get_nr_processor()
{
grep '^processor' /proc/cpuinfo | wc -l
}

function get_nr_socket()
{
grep 'physical id' /proc/cpuinfo | awk -F: '{
print $2 | "sort -un"}' | wc -l
}

function get_nr_siblings()
{
grep 'siblings' /proc/cpuinfo | awk -F: '{
print $2 | "sort -un"}'
}

function get_nr_cores_of_socket()
{
grep 'cpu cores' /proc/cpuinfo | awk -F: '{
print $2 | "sort -un"}'
}

echo '===== CPU Topology Table ====='
echo

echo '+--------------+---------+-----------+'
echo '| Processor ID | Core ID | Socket ID |'
echo '+--------------+---------+-----------+'

while read line; do
if [ -z "$line" ]; then
printf '| %-12s | %-7s | %-9s |\n' $p_id $c_id $s_id
echo '+--------------+---------+-----------+'
continue
fi

if echo "$line" | grep -q "^processor"; then
p_id=`echo "$line" | awk -F: '{print $2}' | tr -d ' '`
fi

if echo "$line" | grep -q "^core id"; then
c_id=`echo "$line" | awk -F: '{print $2}' | tr -d ' '`
fi

if echo "$line" | grep -q "^physical id"; then
s_id=`echo "$line" | awk -F: '{print $2}' | tr -d ' '`
fi
done < /proc/cpuinfo

echo

awk -F: '{
if ($1 ~ /processor/) {
gsub(/ /,"",$2);
p_id=$2;
} else if ($1 ~ /physical id/){
gsub(/ /,"",$2);
s_id=$2;
arr[s_id]=arr[s_id] " " p_id
}
}

END{
for (i in arr)
printf "Socket %s:%s\n", i, arr[i];
}' /proc/cpuinfo

echo
echo '===== CPU Info Summary ====='
echo

nr_processor=`get_nr_processor`
echo "Logical processors: $nr_processor"

nr_socket=`get_nr_socket`
echo "Physical socket: $nr_socket"

nr_siblings=`get_nr_siblings`
echo "Siblings in one socket: $nr_siblings"

nr_cores=`get_nr_cores_of_socket`
echo "Cores in one socket: $nr_cores"

let nr_cores*=nr_socket
echo "Cores in total: $nr_cores"

if [ "$nr_cores" = "$nr_processor" ]; then
echo "Hyper-Threading: off"
else
echo "Hyper-Threading: on"
fi

echo
echo '===== END ====='

Screen Monitor

Xrandr

xrandr -s 1920x1800 # set resolution

Monitor Info

sudo apt-get install read-edid
sudo get-edid | parse-edid

Touch Pad Synoptics

synclient TouchpadOff=0

File

Cat

concatenate files

Sort

sort lines of text

Uniq

report or omit repeated lines

Wc

print newline, word, and byte counts for each file

Head and Tail

output the first/last part of a file

head -n 5 filename
tail -f filename

Tee

read from standard input and write to standard output and files

[me@linuxBox ~]$ ls /usr/bin | tee ls.txt | grep zip
bunzip2
bzip2
....

Nl

number lines

Fold

wrap each line to a specified length

Fmt

a simple text formatter

Pr

prepare text for printing

Printf

format and print data

Compression

Zip

  • zip -r(目录) 压缩文件 源文件/源目录.
  • unzip 源文件 -d 指定路径.
zip -r archive_name.zip folder_to_compress
unzip archive_name.zip

zipinfo archive_name.zip
unzip -l archive_name.zip

Gz

  • gzip 源文件.
  • gzip –c 源文件 > 压缩文件.
  • gzip -r 源目录 将源目录下所有子文件分别单独压缩.
  • gzip –d(解压缩) 文件.
  • gunzip 压缩文件.

Bz2

不可压缩目录:

  • bzip2 –k(保留源文件) 源文件.
  • bzip2 –d(解压缩) –k(保留压缩文件) 压缩文件.
  • bunzip2 –k(保留压缩文件) 压缩文件.

Tar

.tar.gz/.tar.bz2:

tar [可选参数] 压缩文件(可指定压缩路径) [-c 解压缩路径]源文件/源目录:

  • -z: 将 .tar 压缩为 .tar.gz.
  • -j: 将 .tar 压缩为 .tar.bz2.
  • -c: 打包 -x 解打包.
  • -t: 查看压缩文件.
  • -v: 显示过程.
  • -f: 指定压缩文件名.
  • -C: 指定解压缩路径.
  • -zcvf/-zxvf/-ztcf.
  • -jcvf/-jxvf/-jtvf.
tar -xzf archive.tar.gz

7z

  • a: add.
  • x: extract.
  • -r: recursive.
  • -o: specific path.
  • -t: type.
7z x manager.7z -r -o /home/xx
7z a -t7z -r manager.7z /home/manager/*

UnAr

Decompress files of any format:

unar archive_name.zip
unar archive_name.7z
unar archive_name.rar
unar archive_name.ISO
unar archive_name.tar.gz

LsAr

Peek files in a compress file of any format:

lsar -l archive_name.zip
lsar -l archive_name.7z
lsar -l archive_name.ISO
lsar -l archive_name.rar
lsar -l archive_name.tar.gz