Litao OK Blog

A little blog for my life.

Mac OS X 创建启动USB盘

一、ISO文件制作U盘启动盘

  1. 先把ISO转成dmg格式
1
hdiutil convert -format UDRW -o ubuntu-15.04-desktop-amd64.img ubuntu-15.04-desktop-amd64.iso
  1. 先查看U盘设备名称:
1
diskutil list (我的系统显示 /dev/disk1)
  1. 释放卷:
1
diskutil unmountDisk /dev/disk1
  1. 写入ISO到U盘:
1
sudo dd if=~/Downloads/ubuntu-14.04-server-amd64.iso of=/dev/disk1 bs=1m

二、Mac OS X安装文件(.app)制作启动安装U盘

  1. 格式化U盘为Mac OS 扩展(日志式),注意分区选项中要选择GUID分区表

  2. 执行命令,把安装文件 Install OS X.app 安装到U盘中,并制作启动盘(例如在~/Downloads目录中)

1
sudo Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/MyOS --applicationpath Install\ OS\ X\ Yosemite.app --nointeraction
  1. 根据提示,看到完成后即可。

三、把U盘启动安装盘制作dmg文件

测试磁盘的IOPS

1
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=5G -numjobs=30 -runtime=1000 -group_reporting -name=mytest

示例结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
mytest: (g=0): rw=randread, bs=16K-16K/16K-16K/16K-16K, ioengine=psync, iodepth=1
...
mytest: (g=0): rw=randread, bs=16K-16K/16K-16K/16K-16K, ioengine=psync, iodepth=1
fio-2.0.13
Starting 30 threads
Jobs: 30 (f=30): [rrrrrrrrrrrrrrrrrrrrrrrrrrrrrr] [100.0% done] [4464K/0K/0K /s] [279 /0 /0  iops] [eta 00m:00s]
mytest: (groupid=0, jobs=30): err= 0: pid=17982: Tue May 19 14:18:07 2015
  read : io=4328.5MB, bw=4431.6KB/s, iops=276 , runt=1000189msec
    clat (usec): min=119 , max=3050.7K, avg=108296.76, stdev=121702.40
     lat (usec): min=119 , max=3050.7K, avg=108296.98, stdev=121702.40
    clat percentiles (msec):
     |  1.00th=[    6],  5.00th=[    9], 10.00th=[   12], 20.00th=[   21],
     | 30.00th=[   32], 40.00th=[   46], 50.00th=[   65], 60.00th=[   90],
     | 70.00th=[  124], 80.00th=[  176], 90.00th=[  269], 95.00th=[  359],
     | 99.00th=[  570], 99.50th=[  660], 99.90th=[  775], 99.95th=[  791],
     | 99.99th=[  816]
    bw (KB/s)  : min=    6, max=  524, per=3.44%, avg=152.44, stdev=70.00
    lat (usec) : 250=0.03%, 500=0.07%, 750=0.01%
    lat (msec) : 2=0.01%, 4=0.04%, 10=7.25%, 20=12.28%, 50=23.02%
    lat (msec) : 100=20.78%, 250=25.17%, 500=9.65%, 750=1.52%, 1000=0.17%
    lat (msec) : 2000=0.01%, >=2000=0.01%
  cpu          : usr=0.00%, sys=0.01%, ctx=266799, majf=18446744073709551466, minf=18446744073708222853
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=277022/w=0/d=0, short=r=0/w=0/d=0

Run status group 0 (all jobs):
   READ: io=4328.5MB, aggrb=4431KB/s, minb=4431KB/s, maxb=4431KB/s, mint=1000189msec, maxt=1000189msec

Disk stats (read/write):
  sda: ios=277006/100, merge=0/141, ticks=29993265/10330436, in_queue=40378421, util=100.00%

通过结算可以了解该磁盘每天最高只能承受2400万次IO请求,所以要做静态化来提高服务器处理能力建议使用SSD硬盘,非SSD硬盘可以考虑缓存方式(即利用内存的高IO)

Ffmpeg编码示例

1. 使用指定音频替代原视频音频部分

1
ffmpeg -i A.mp4 -i B.m4v -vcodec copy -acodec copy -map 0:v:0 -map 1:a:0 -y OUT.mp4

2. 多个视频合并

首先,建立一个文本文件list.txt,里面放带合并视频文件名列表,要求所有视频编码相同,例如:

1
2
3
file A.mp4
file B.mp4
file C.mp4

然后使用下面方法合并:

1
ffmpeg -f concat -i list.txt -c copy OUT.mp4

3. 将源视频编码为H.264 high profile

1) 如果追求更高质量,可以使用两个pass进行编码,不过耗时会长一些:

pass1 :

1
ffmpeg -i A.avi -vcodec h264 -vprofile high -preset slow -b:v 1500k -maxrate 2000k -bufsize 2000k -vf scale='-1:720' -aspect '16:9' -threads 0 -pass 1 -an -f mp4 /dev/null

pass2 :

1
ffmpeg -i A.avi -vcodec h264 -vprofile high -preset slow -b:v 1500k -maxrate 2000k -bufsize 2000k -vf scale='-1:720' -aspect '16:9' -threads 0 -pass 2 -acodec libfaac -b:a 128k -f mp4 OUT.mp4

2) 如果要求编码节省时间,可以只执行一个pass:

1
ffmpeg -i A.avi -vcodec libx264 -vprofile high -preset slow -b:v 1500k -maxrate 2000k -bufsize 2000k -vf scale='-1:720' -aspect '16:9' -threads 0 -acodec libfaac -b:a 128k -f mp4 OUT.mp4

另外,需要注意以上编码中,-b:v后面的码率,-maxrate的码率是要根据源视频进行调整,如果源视频只有800k,那这里肯定不能设置超过800k,另外,scale是编码后的分辨率,本例中是要转成720p尺寸,如果源视频非标准16:9或保持源视频尺寸和比例,则可以去掉参数-vf scale和-aspect 编码类型是要使用ffmpeg -formats来查看你装的ffmpeg版本和库名来确定的,比如有的版本中H.264编码名称为 libx264

4. 按照时间节点截取视频

下面是截取A视频的1分20秒开始,持续30秒的片段,保存为B视频。

1
ffmpeg -i A.mp4 -ss 00:01:20 -t 30 -vcodec copy -acodec copy B.mp4

5. 给视频添加ass字幕

mp4文件:

1
ffmpeg -i video.mp4 -vf "ass=subtitle.ass" out.mp4

mkv文件:

1
ffmpeg -i input.mp4 -i input.ass -c:v copy -c:a copy -c:s copy -map 0:0 -map 0:1 -map 1:0 -y out.mkv

wmv文件:

1
ffmpeg -i input.wmv -i input.ass -c:v copy -c:a copy -c:s copy -map 0:0 -map 0:1 -map 1:0 -y out.mkv

Mac OS X解决文件“打开方式”菜单中应用名称重复出现的问题

在终端窗口输入下面命令即可:

1
2
3
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/\
LaunchServices.framework/Versions/A/Support/\
lsregister -kill -r -domain local -domain user

或者:

1
2
3
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain user
killall Finder
echo "Open With has been rebuilt, Finder will relaunch"

运行这条命令号,Launch服务数据库将被重建,重建之后重复的应用名称就会消失。当然有的是偶你可能需要退出,然后重新启动Finder才能看到效果,使用下面这条命令迅速重启Finder:

1
killall Finder

打开.bash_profile来创建快捷命令,这样就不用每次输入上面这么长的命令了:

1
alias macxfix='/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain user;killall Finder;echo "Open With has been rebuilt, Finder will relaunch"'

Linux上创建密钥登录方式的步骤

1. 在Server创建密钥

1
ssh-keygen -t rsa

一路回车即可,然后进入.ssh目录修改:

1
2
3
cd ~/.ssh
mv id_rsa.pub authorized_keys
chmod 600 *

2. 将私钥下载到本地

1
2
3
mkdir ~/.ssh
cd ~/.ssh
scp 用户名@服务器/用户名/.ssh/id_rsa 用户名@服务器

3. 客户端~/.ssh目录下创建config,内容如下

1
2
3
4
5
HostName 登录名称
  Host 服务器IP或域名
  Port 端口号
  User 用户名
  identitiFile ~/.ssh/用户名@服务器

修改权限:

1
chmod 600 *

4. 验证是否能正常登录

1
ssh 登录名称

如果可以登录,则登录到服务器删除相应私钥:

1
rm -f ~/.ssh/id_rsa

5. 如果要分配多个用户名,可以在服务器端重复1,2,3步骤,然后把新生成的id_rsa.pub内容添加到authorized_keys中。