Tag: CLI

  • Command Line Recording Goes SVG

    Term To SVG is lovely little utility to record a terminal session into a .svg animation. And below is a recording of how I installed termtosvg myself on Arch Linux.

  • 利用 bash 命令做 SQL 数据修补

    如果是把一个 DB 或者一个 table 从一个服务器送到另一个, 那么使用 mysqldump 命令就可以了. 但有的时候, 需要的数据可能只是若干条记录, 就不能用 mysqldump 了. 奇怪的是我 google 了一番居然也没找到很方便的方法. 求人不如求自己吧, 下面是用 bash 命令的解决方法: mysql <database> -uroot -e “select * from <table> where <condition>…” |tail -n +2 |sed -e ‘s/^/(“/g’ -e ‘s/$/”)/g’ -e ‘s/\t/”,”/g’ |while read values; do echo “insert into <table> values $values”; done 然后把输出的 SQL 在目标服务器上运行即可. 记得把<…

  • Linux 命令行上的文字处理

    总是有些用户, 明明是自己手抖点错了, 却偏偏要怪服务器出问题. 如果让我选择相信一个人还是一台机器, 那… 还是选机器比较放心. 当然也不能冤枉好人, 于是如何从若干 GB 的服务器日志里找到线索就成为解决问题的关键了. 首先是 grep. grep 就好像是个过滤器, 将无关的内容滤掉, 却从不漏下真相. 假设服务器日志是 server.log, 其中包含时间, 地点, 人物: 1, 找出所有含 beijing 的记录 grep beijing server.log 2, 包含 2013-12-01 当天, 在 beijing 关于 user 的记录 grep  -E -e ‘2013-12-01.*beijing.*user’ server.log 3, 也可以将 grep 串联起来, 逐步缩小包围圈, 这样如果个别记录不符合时间, 地点, 人物的顺序, 也不会被漏掉. 当然我觉得日志还是规矩一点的好. grep ‘2013-12-01’ server.log…

  • 在 Linux 中充分利用多核 CPU 来转码

    上回写的<听美剧, 练英语听力>之后, 发现忘了放个批量处理的脚本. 下面补上, 顺便练习一下多核心协同处理. 嗯, 手机都4核了不是? 用到的命令类似: avconv -i your.mkv -vn -acodec libmp3lame -ac 2 -f mp3 your.mp3 简单的 bash 单循环写法: ls *.mkv |while read i; do avconv -i $i -vn -acodec libmp3lame -ac 2 -f mp3 $i.mp3; done 这就只用到了一个 CPU 核心. 如果将 avconv 放到后台执行就可以做到多进程, 但又不方便控制进程数, 当进程数远远大于 CPU 核心数时就可以体验一下一台服务器快被烤熟时的感觉了. 后来发现 xargs 支持指定数目的进程, 简直是无法要求更多了: ls *.mkv…

  • 给 Ubuntu Linux 添加一个大硬盘

    曾经预测 3.5″ 的硬盘即将被 2.5″ 硬盘取代. 无奈存储业不争气, 2.5″ 硬盘的容量依旧远远落后于 3.5″. 下面是在 Ubuntu Linux 中使用命令行添加一个 3TB 硬盘的过程. 首先使用 parted (fdisk已退休), 假设新硬盘是第二块, 因此是 sdb: (parted) select /dev/sdb  Using /dev/sdb (parted) print Model: ATA WDC WD30EZRX-00M (scsi) Disk /dev/sdb: 3001GB Sector size (logical/physical): 512B/4096B Partition Table: msdos 可以看出, 出厂的硬盘使用的是旧式的 MBR 分区表, 不支持大于 2TB 的分区. 那么接班的是谁呢, 是 GPT (parted) mklabel…

  • 继续在 Linux 世界里找东西

    续上一篇. 对于新手老手, 都有一些文件是要找的. 自己的脑子永远不会比一块几百元的硬盘更方便存东西, 所以与其记住每个文件在哪, 不如记住如何找到这些文件. 当然, 养成一个一致的文件存放习惯也很有帮助. 找不常更改的系统文件, 例如某个命令的”真身”位置, 我一般用 locate 命令. Locate 命令是从有索引的数据库里搜索匹配的文件, 所以速度最快. 但有可能数据库更新的不够及时, 也就是说数据库里搜到的文件实际在磁盘上可能不存在了. 因此我不推荐使用 locate 来搜索经常更改的用户文档. 使用方法很简单, 例如我要找 lsb-release (LSB = Linux Standard Base): ~ locate lsb-release /etc/lsb-release /usr/share/bug/lsb-release /usr/share/doc/lsb-release /usr/share/doc/lsb-release/README.Debian /usr/share/doc/lsb-release/changelog.Debian.gz /usr/share/doc/lsb-release/copyright /var/lib/dpkg/info/lsb-release.list /var/lib/dpkg/info/lsb-release.md5sums /var/lib/dpkg/info/lsb-release.postinst /var/lib/dpkg/info/lsb-release.postrm /var/lib/dpkg/info/lsb-release.prerm 输入 locate file, 那么 locate 会自动按照 *file* 的规则来查找, 也就是说任何包含 file 的文件以及文件夹都会被搜出来的. 一个更强力的命令是…

  • 在 Linux 世界里找东西

    今天看到年轻的同事在那费力的找系统里某个文件, 我就指点了一下如何使用 find 命令找文件. 估计同事对我的敬仰又高了些吧, 开玩笑了, 我还羡慕他年轻呢… 说实话我的 Linux 水平也顶多算是唬人阶段, 抽空总结一下, 共勉. 首先是互联网里找某个域名的信息, 用 dig (就是挖), 很简单的. $ dig raynix.info ; <<>> DiG 9.9.2-P1 <<>> raynix.info ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37258 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 6, ADDITIONAL: 13 ;;…

  • 笔记: Linux CLI 点滴

    尽管使用 Linux 很多年了, 我还是经常发现: 哇, 原来还有更方便的方法! 1, 调用前面一条后台执行命令的 PID: $! 是的, 就是这么简单. 如果想终止前面一条后台运行的指令, 那么 kill $! 就可以了. 我以前还有模有样的用 ps aux | grep 呢… 2, 重复上一条命令: !! 就是说, 如果敲了一条很长的指令, 结果是忘记了 sudo, 原来我会按 ↑ 呼出上一条命令, 然后按 Home 将光标放到行首, 再嵌入 sudo; 现在只需要 sudo !! 即可了. 3, 显示进度: 一些命令例如 wget 会很好的显示下载进度, 但不是每个命令都如此友好. 例如 mysql, 当你导入一个巨大的 sql 文件时, 除了等待还有什么办法呢? 这时就用上…