kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

mark problem

C语言中宽字符和多字节字符 MB_CUR_MAX

stdlib.h
MB_CUR_MAX 当前locale中多字节字符的最大字节数目
如果把字符串当成多字节字符处理会慢很多
sort命令的一些版本中会根据locale中的LANG来设置比较函数,如果没设置好会导致sort跑的很慢。

内核栈溢出

因为内核栈中栈底保存thread_info,所以如果内核栈溢出会破坏thread_info,这样当进程发生睡眠、中断、抢占等调度时就会出错。
容易报try_to_wakeup+XXX错误,等等

定时器 timer 注意

如果mod_timer设置成马上执行,然后下面又是setup_timer。
有可能的情况是:进入了中断执行过程,可是setup_timer又改变timer结构,导致继续执行时用到timer结构出错。

查看内核栈

用 echo t > /proc/sysrq-trigger 把内核栈整个打出来。
可以看/proc/{pid}/wchan,里面是该进程阻塞位置的内核函数名,在所有办法都没戏的时候可以看它。

mark

修复ext4日志(jbd2)bug
rhel6再次发现jbd2的bug
rhel6 的软RAID问题
stable pages
追踪CPU跑满

VirtualBox摄像头功能

1、下载Oracle VM VirtualBox Extension Pack。下载网址如下:

https://www.virtualbox.org/wiki/Downloads

2、安装Oracle VM VirtualBox Extension Pack

安装外部扩展包很简单

第一:打开Oracle VirtualBox,在菜单栏中找到“管理”–>“全局设定”
第二:打开“全局设定”,参考下图:

第三:“Extension Packages”中添加下载的Oracle VM VirtualBox Extension Pack,根据提示安装即可,

然后虚拟机就能用摄像头了

开机自动挂载硬盘

一、Linux磁盘分区UUID的获取

1
2
1、$ ls -l /dev/disk/by-uuid/
2、$ blkid /dev/sdb1

二、开机自动挂载

1
2
vim /etc/fstab
UUID=XXXX /XXXX ext4 defaults 0 0

我们在linux中常常用mount命令把硬盘分区或者光盘挂载到文件系统中。/etc/fstab就是在开机引导的时候自动挂载到linux的文件系统。 在linux中/etc/fstab的数据项如下所示:

1
2
/dev/device   mountpoint   type   rules   dump   order
设备名称        挂载点          分区类型   挂载选项     dump选项    fsck选项

例如这是一个普通的/etc/fstab:

1
2
3
4
5
/dev/hda2     /                    ext3        defaults   0 1
/dev/hda3     swap             swap      defaults   0 0
/dev/hda5     /usr               ext3        defaults   0 0
/dev/fdo        /mnt/flopy     ext3        noauto     0 0
/dev/cdrom    /mnt/cdrom   iso9660  noauto,ro 0 0

(1)设备名称

/dev/device就是需要挂载的设备,/hda2就是第一个IDE插槽上的主硬盘的第二个分区。如果是第二个IDE插槽主硬盘的第三个分区,那就是/dev/hdc3,具体可以在linux下使用fdisk -l 查看。

(2)挂载点

mountpoint 就是挂载点。/、 /usr、 swap 都是系统安装时分区的默认挂载点。
如果你要挂载一个新设备,你就要好好想想了,因为这个新设备将作为文件系统永久的一部分,需要根据FSSTND(文件系统标准),以及它的作用,用户需求来决定。比如你想把它做为一个共享资源,放在/home下面就是一个不错选择。

(3)分区类型

type 是指文件系统类型,下面列举几个常用的:

1
2
3
4
5
6
7
8
9
10
Linux file systems: ext2, ext3, jfs, reiserfs, reiser4, xfs, swap.
Windows:
vfat = FAT 32, FAT 16
ntfs= NTFS
Note: For NTFS rw ntfs-3g
CD/DVD/iso: iso9660
Network file systems:
nfs: server:/shared_directory /mnt/nfs nfs <options> 0 0
smb: //win_box/shared_folder /mnt/samba smbfs rw,credentials=/home/user_name/winbox-credentials.txt 0 0
auto: The file system type (ext3, iso9660, etc) it detected automatically. Usually works. Used for removable devices (CD/DVD, Floppy drives, or USB/Flash drives) as the file system may vary on thesedevices.

(4)挂载选项

rules 是指挂载时的规则。下面列举几个常用的:

1
2
3
4
5
6
7
auto 开机自动挂载
default 按照大多数永久文件系统的缺省值设置挂载定义
noauto 开机不自动挂载
nouser 只有超级用户可以挂载
ro 按只读权限挂载
rw 按可读可写权限挂载
user 任何用户都可以挂载

请注意光驱和软驱只有在装有介质时才可以进行挂载,因此它是noauto

(5)dump选项

这一项为0,就表示从不备份。如果上次用dump备份,将显示备份至今的天数。

(6)fsck选项

order 指fsck(启动时fsck检查的顺序)。为0就表示不检查,(/)分区永远都是1,其它的分区只能从2开始,当数字相同就同时检查(但不能有两1)。
如果我要把第二个IDE插槽主硬盘上的windows C 区挂到文件系统中,那么数据项是:

1
2
/dev/hdc1 /c vfat defaults 0 0
(/c 是事先建立的文件夹,作为c盘的挂载点。)

当你修改了/etc/fstab后,一定要重新引导系统才会有效。
fstab中存放了与分区有关的重要信息,其中每一行为一个分区记录,每一行又可分为六个部份,下面以/dev/hda7 / ext2 defaults 1 1为例逐个说明:

  1. 第一项是您想要mount的储存装置的实体位置,如hdb或如上例的/dev/hda7。
  2. 第二项就是您想要将其加入至哪个目录位置,如/home或如上例的/,这其实就是在安装时提示的挂入点。
  3. 第三项就是所谓的local filesystem,其包含了以下格式:如ext、ext2、msdos、iso9660、nfs、swap等,或如上例的ext2,可以参见/prco/filesystems说明。
  4. 第四项就是您mount时,所要设定的状态,如ro(只读)或如上例的defaults(包括了其它参数如rw、suid、exec、auto、nouser、async),可以参见「mount nfs」。
  5. 第五项是提供DUMP功能,在系统DUMP时是否需要BACKUP的标志位,其内定值是0。
  6. 第六项是设定此filesystem是否要在开机时做check的动作,除了root的filesystem其必要的check为1之外,其它皆可视需要设定,内定值是0。