Linux 笔记
1.shell 四舍五入
echo 1 |awk 'BEGIN {printf "%.0f\n",((51/10))}
=>5
echo 1 |awk 'BEGIN {printf "%.0f\n",((56/10))}'
=>6
2.shell 向上取整
echo 1 |awk '{print int(100/3)==(100/3)?int(100/3):int(100/3)+1}'
3.监控命令执行情况
watch -n 1 ls -l
4.赋值时,左值包含变量
例如a='11'
b_$a=20会报错
用eval b_$a=20正常
5.变量传递
a=10
b=a
echo $b
=>a
echo ${!b}
=>10
6.shell 16进制相加
a=0xaa; printf "%x\n" $(($a+1))
a=aa; printf "%x\n" $((16#$a+1))
7.shell 使用字典
declare -A dict 声明一个字典
dict=([n1]=x1 [n2]=x2)
echo ${dict[n1]} =>由key取value
echo ${dict[*]} =>取所有的value
echo ${!dickt[*]} =>取所有的key
8.shell 合并行
tr "\n" ","
9.字符串截取表达式(仅表达式,不包括awk,sed等语法来截取)
10.awk if语句
echo $a|awk -F _ '{if($1=="a"){ print $2}else {print $1}}'
11.利用${ } 还可针对不同的变数状态赋值(沒设定、空值、非空值):
${file-my.file.txt} :假如$file 沒有设定,則使用my.file.txt 作传回值。(空值及非空值時不作处理)
${file:-my.file.txt} :假如$file 沒有設定或為空值,則使用my.file.txt 作傳回值。(非空值時不作处理)
${file+my.file.txt} :假如$file 設為空值或非空值,均使用my.file.txt 作傳回值。(沒設定時不作处理)
${file:+my.file.txt} :若$file 為非空值,則使用my.file.txt 作傳回值。(沒設定及空值時不作处理)
${file=my.file.txt} :若$file 沒設定,則使用my.file.txt 作傳回值,同時將$file 賦值為my.file.txt 。(空值及非空值時不作处理)
${file:=my.file.txt} :若$file 沒設定或為空值,則使用my.file.txt 作傳回值,同時將$file 賦值為my.file.txt 。(非空值時不作处理)
${file?my.file.txt} :若$file 沒設定,則將my.file.txt 輸出至STDERR。(空值及非空值時不作处理)
12.awk 求和
[root@xd]$cat a.log
1.1
1.2
1.3
2
3
4
[root@xd]$cat a.log |awk 'BEGIN {sum=0} {sum+=$1} END {printf "SUM is :%.2f\n",sum}'
SUM is :12.60
*BEGIN是在awk开始扫描输入之前执行
*END是在awk扫描输入完后执行
*$1是一空格为分隔符,取第一个字段
13.awk match
a="qwert 1234"
echo $a|awk '{print match($0,"qwe")}'
=>1
14.qemu起guest
qemu-system-x86_64 \
-name vm_test,process=vm_test,debug-threads=on \
-enable-kvm \
-pidfile /tmp/.vm0.pid \
-daemonize \
-monitor unix:/tmp/vm0_monitor.sock,server,nowait \
#-monitor pty -serial stdio
-cpu host \
-smp cores=4,sockets=2,threads=2 \
-numa node,mem=15G,cpus=0-3,nodeid=0 \
-numa node,mem=15G,cpus=4-7,nodeid=1 \
-m 30720 \
-drive file=/home/centos7.6.img \
#-drive file=/home/centos7.6.img,if=virtio,format=qcow2\
-vnc :30 \
#-netdev tap,id=ipvm1,ifname=tap3,script=/etc/qemu-ifup \
#-device e1000,netdev=ipvm1,id=net0,mac=00:cb:dc:db:cf:05\
-nic user,model=virtio,hostfw=tcp::2222-:22\
-machine pc-i440fx-2.1,accel=kvm,usb=off\
ps -T -p `pgrep vm_test` 查看vcpu 线程