Linux命令笔记[八]

fc-list 查看系统中所有的可用字体列表。

执行命令报错:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = “en_US:en”,
LC_ALL = (unset),
LC_TIME = “zh_CN.UTF-8”,
LC_MONETARY = “zh_CN.UTF-8”,
LC_ADDRESS = “zh_CN.UTF-8”,
LC_TELEPHONE = “zh_CN.UTF-8”,
LC_NAME = “zh_CN.UTF-8”,
LC_MEASUREMENT = “zh_CN.UTF-8”,
LC_IDENTIFICATION = “zh_CN.UTF-8”,
LC_NUMERIC = “zh_CN.UTF-8”,
LC_PAPER = “zh_CN.UTF-8”,
LANG = “en_US.UTF-8”
are supported and installed on your system.
perl: warning: Falling back to the standard locale (“C”).

解决办法:

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
locale-gen en_US.UTF-8
dpkg-reconfigure locales

或:

sudo vi /var/lib/locales/supported.d/local
添加:
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
然后:
sudo dpkg-reconfigure locales

利用rsync传输文件:rsync -avzP –protocol=29 u4.meilapp.com:/data/idc_migration/*.sql .

ubuntu修改网络设置后,生效使用:sudo service network-manager restart , sudo ifdown eth0 && sudo ifup eth0

ubuntu安装包的32位版本,只要在所安装的软件包后面加上:i386就可以了,比如要安装libfontconfig1,那么我们所输入的命令就是 sudo apt-get install libfontconfig1:i386

ubuntu上的一款网页截图命令工具:webkit2png https://github.com/AdamN/python-webkit2png/ 安装:pip install webkit2png
There are a few python alternatives : Browshot, eagleeye_te, django-url2png, sharder, django-thummer, WeasyPrint, wkhtmltopdf and probably more (look for libraries like ReportLab too)
Browshot, WeasyPrint & wkhtmltopdf seems to be the best choices.
from selenium import webdriver

browser = webdriver.Firefox() 或 browser = webdriver.PhantomJS()
browser.get(‘http://www.google.com/’)
browser.save_screenshot(‘screenshot.png’)
browser.quit()

开源的png图片压缩工具:http://pngquant.com/

配置samba:
$ sudo apt-get install samba

$ sudo vim /etc/samba/smb.conf

在smb.conf最后添加:

[share]
path = /home/share
browseable = yes
writable = yes

注意,创建samba用户之前,必须先确保有一个同名的Linux用户,否则samba用户会创建失败。
添加一个专门用户来给samb用,sudo useradd share –shell /bin/false

$ sudo smbpasswd -a smbuser

重启samba服务

$ sudo service smbd restart

挂载的命令:sudo mount -t cifs //172.16.1.30/kyle/ /media/kyle/ -o username=kyle,password=kyle123456,uid=kyle,gid=users,file_mode=0640,dir_mode=0750,iocharset=utf8

将用户加入sudo权限组: sudo usermod -a -G sudo username

一个好用的diff工具:icdiff https://github.com/jeffkaufman/icdiff git difftool –extcmd icdiff

找出两个文本文件的差异行,比如一个文件多出的一些数据行:diff <(sort open_id.txt) <(sort open_id_union.txt)

grep日志文件中的unicode :grep ‘\\u4f60\\u73b0\\u5728\\u4eceL’ m19/meila_app/2014122300.log

$ head express
10000 aae AAE
10010 anxindakuaixi 安信达
$ cat express | awk ‘{print “(“$1″,””\””$2″\”””,””\””$3″\”””)”}’ | head
(10000,”aae”,”AAE”)
(10010,”anxindakuaixi”,”安信达”)

rsync通过非标准ssh端口传输文件: rsync -avz -e “ssh -p $portNumber” user@remoteip:/path/to/files/ /local/path/, 用-e参数

安装deluged包遇到错误 :Depends: python:any
解决办法:vi /var/lib/dpkg/status ,删除 python:any 这一部分 。

流量监控,按进程分类查看流程情况,sudo nethogs -p eth0

设置crontab使用vim编辑器:export VISUAL=vim
sudo update-alternatives –config editor

crontab 设置固定时间,不执行,但是设置每隔几分钟就可以正常执行,问题在于时区问题。debian中cron会读/etc/timezone来做为时区,我们需要编辑 /etc/timezone,把里面全部删除,然后添加Asia/Shangha,这样是设置为上海时区,最后重启一下cron。(ubuntu下配置时区 sudo dpkg-reconfigure tzdata)
查看cron日志 grep CRON /var/log/syslog

nginx屏蔽指定ip访问方法 ,vi nginx.conf 在http节点添加:include blockips.conf; 然后在 blockips.conf 文件中写
deny 1.2.3.4;
deny 91.212.45.0/24;
deny 91.212.65.0/24;
然后 再nginx -s reload,可以先用nginx -t 测试一下配置正确

vim在匹配到的前面新插入一行,命令 :%s/^####/—\r\r\0/g \r表示换行,\0表示匹配到的东西

awk求和,第一列大于600的所占比例:awk ‘BEGIN{s=0;a=0}{a+=($2>600?$1:0);s+=$1;}END{print a/s}’ aa.log

查看linux的脚本为什么被系统kill掉,日志在 /var/log/kern.log

给硬盘分区,sudo fdisk /dev/sdb ,然后 n 新建分区,p打印现有分区,w保存并退出。格式化分区 mkfs.ext4 /dev/sdb1

samba 服务 service samba restart 没有反应解决:sudo service nmbd restart 然后再 sudo service smbd restart

ubuntu下修改最大文件描述符,ulimit -n:
# /etc/security/ulimits/conf
* soft nofile 999999
* hard nofile 999999

# /etc/pam.d/su
session required pam_limits.so

# /etc/profile
ulimit -SHn 999999

获取外网ip地址,curl “http://members.3322.org/dyndns/getip”

查看内存使用率:free -b | awk ‘{split($1,a,” “);for (i in a){if (a[i]==”Mem:”)x=$2;else if (a[i]==”-/+”) y=$3} }END{printf (“%4.2f\n”,y/x)}’

ubuntu 14.04安装 PIL 报错
_imagingft.c:73:31: fatal error: freetype/fterrors.h: No such file or directory
解决办法
ln -s /usr/include/freetype2 /usr/include/freetype

jpeg压缩工具,apt-get install jpegoptim,png压缩工具,apt-get install optipng

Linux下面查看附近wifi列表的工具:LinSSID

mac下面tree显示中文乱码,是因为字符被转义了,加个参数就好了:tree -N
-N Print non-printable characters as is instead of as escaped octal numbers.

Mac用pip安装软件,会出现错误:
error: could not create ‘/System/Library/Frameworks/Python.framework/Versions/2.7/share’: Operation not permitted
解决办法是pip加上参数 ,pip –user,会安装到用户自己目录下现,然后加入到shell的全局path中,如果是fish:
set –universal fish_user_paths $fish_user_paths ~/Library/Python/2.7/bin/

export python环境变量需要注意的是:
LD_LIBRARY_PATH is Linux (UNIX), under OSX it’s DYLD_LIBRARY_PATH.
比如安装 naoqi SDK,需要设置环境变量,下面是fish shell的语法,bash就用export
set -gx PYTHONPATH /Users/kyle/Include/pynaoqi-python2.7-2.1.4.13-mac64
set -gx LD_LIBRARY_PATH /Users/kyle/Include/pynaoqi-python2.7-2.1.4.13-mac64
set -gx DYLD_LIBRARY_PATH /Users/kyle/Include/pynaoqi-python2.7-2.1.4.13-mac64

ubuntu server安装好后启动,出现“Adding 4051964K swap on /dev/sda5. Priority:-1 extents:1 across 4051964K FS” 这一行后,就死掉没反应了,原因是Ubuntu is trying to switch to a high resolution video mode for the console and your hardware isn’t cooperating,解决办法:
http://serverfault.com/questions/546079/ubuntu-server-hanging-on-adding-swap

装了Proxychains,解决了命令行下sock5代理问题。连不上时,只要在命令前加proxychains4就行了,比如sudo apt-get update,改成sudo proxychains4 apt-get update

对一个文件夹下面的图片,按从1.jpg递增的方式重命名:
find DSI_*.jpg | awk ‘BEGIN {a=1} {printf “mv %s %04d.jpg\n”, $0, a++}’ | bash

ubuntu server系统启动时报错:Target filesystem doesn’t have requested /sbin/init ,解决办法:
http://askubuntu.com/questions/17647/target-filesystem-doesnt-have-requested-sbin-init

mac下将iso文件系统制作成u盘启动盘。http://johanndutoit.net/making-a-bootable-usb-on-mac-osx/
hdiutil convert -format UDRW -o ~/path/to/ubuntu.img ~/path/to/ubuntu.iso
首先用 df -h 看U盘有没有挂载,diskutil list 看磁盘名称。如果有挂载,就用 diskutil unmount /dev/disk2s2,然后再用dd命令:
sudo dd if=/Users/kyle/Downloads/systemrescuecd-x86-4.7.1.iso.dmg of=/dev/disk2
最后卸载:diskutil eject /dev/diskN
注意:用unetbootin制作的启动盘可能会有问题。

如何不通过工具,自己自动制作U盘启动盘:http://askubuntu.com/questions/372607/how-to-create-a-bootable-ubuntu-usb-flash-drive-from-terminal

ubuntu支持ExFat文件格式 ,sudo apt-get install exfat-fuse exfat-utils,然后 sudo mount -t exfat /dev/sdxx /media/exfat

如果实时查看树莓派的摄像头 http://raspberrypi.stackexchange.com/questions/23182/how-to-stream-video-from-raspberry-pi-camera-and-watch-it-live
mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video0 -fps 30

树莓派需要运行 sudo modprobe bcm2835-v4l2 这个命令,才能使用主版上的 /dev/video设备,
You can access the camera board on /dev/video0 by running the command
http://raspberrypi.stackexchange.com/questions/19822/setting-camera-module-to-dev-video0-to-scan-qr-codes-using-zbar

将树莓派上的视频通过网络传输到电脑,在树莓派端,运行
raspivid -w 640 -h 380 -fps 30 -t 999999 -o – | nc 192.168.124.5 5001
然后在客户端 192.168.124.5 运行
nc -l 5001 | mplayer -fps 30 -cache 1024 –

pip默认安装的zbar模块有bug,import zbar 就直接 Segmentation fault,需要安装 git 上在修复的版本:sudo pip install git+https://github.com/npinchot/zbar.git

Linux视频监控相关程序,fswebcam ,它貌似是一个截图工具,然后 sudo apt-get install motion
树莓派中,将视频通过http形式转发出去,在浏览器里面查看:https://github.com/jacksonliam/mjpg-streamer
mjpg_streamer -i “input_raspicam.so -x 640 -y 480 -fps 6 -quality 8” -o ‘output_http.so –port=5001 -w ./www’

在mac中查看占用22端口的程序 : sudo lsof -n -i:22 | grep LISTEN

.DS_Store是Mac OS保存文件夹的自定义属性的隐藏文件,如文件的图标位置或背景色,相当于Windows的desktop.ini。
1,禁止.DS_store生成:
打开 “终端” ,复制黏贴下面的命令,回车执行,重启Mac即可生效。
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
2,恢复.DS_store生成:
defaults delete com.apple.desktopservices DSDontWriteNetworkStores

关掉ssh检查 know_hosts
In your ~/.ssh/config (if this file doesn’t exist, just create it):
Host *
StrictHostKeyChecking no

直接用网络连接raspberrypi和macbook时,打开mac系统设置-共享-网络共享,将wifi网络共享到usb网络,这样rasp就可以拿到一个网段的ip,再用nmap -sP –stats-every 10s 192.168.2.1/24 就可以发现树莓派的ip。
所有树莓派的mac地址都是以 b8:27:eb 开头的,通过网线连接时,可以发现请求dhcp信息 sudo tcpdump |egrep “b8:27:eb” ,或是通过分配的IP断来查看: sudo tcpdump |egrep “A 169.254”

给audio设备制造随机的声音:cat /dev/urandom | padsp tee /dev/audio > /dev/null
http://unix.stackexchange.com/questions/13732/generating-random-noise-for-fun-in-dev-snd

将声音通过网络传输给其它设备播放 : http://www.commandlinefu.com/commands/view/13030/piping-microphone-audio-over-netcat
在A端:port=3333;card=0;subdevice=0;arecord -D hw:${card},${subdevice} -f S16_LE -c2|nc -l $port
在B端:nc [A IP] 3333|aplay
或是通过 ssh传输(实际测试延迟非常大):http://unix.stackexchange.com/questions/116919/redirect-sound-microphone-via-ssh-how-to-telephone-via-ssh
arecord -f cd -t raw | oggenc – -r | ssh <user>@<remotehost> mplayer –
或是修改alsa配置文件来实现:http://superuser.com/questions/432894/pipe-system-sound-to-another-computer

bundle安装国外被block,换用taobao的源:bundle config mirror.https://rubygems.org https://ruby.taobao.org

mac老是连不上USB网络转接器,解决办法:
— Delete all network interfaces in System Preferences > Network
— Delete file /Library/Preferences/SystemConfiguration/NetworkInterfaces.plist (and maybe you can need delete file /Library/Preferences/SystemConfiguration/preferences.plist)
— Reboot
— After Reboot go to System Preferences > Network and add all network interfaces (wi-fi Ethernet and other)
— Done!
来源:https://discussions.apple.com/thread/7251574?start=0&tstart=0

ubuntu下面安装软件出现依赖问题:
“`
下列软件包有未满足的依赖关系:
mysql-client : 依赖: mysql-client-5.5 但是它将不会被安装
mysql-community-client:i386 : 依赖: libaio1:i386 (>= 0.3.93) 但是它将不会被安装
依赖: libncurses5:i386 (>= 5.5-5~) 但是它将不会被安装
依赖: libtinfo5:i386 但是它将不会被安装
mysql-community-server:i386 : 依赖: mysql-client:i386 (= 5.7.13-1ubuntu14.04)
依赖: apparmor:i386 但是它将不会被安装
依赖: psmisc:i386 但是它将不会被安装
依赖: libaio1:i386 (>= 0.3.93) 但是它将不会被安装
依赖: libmecab2:i386 (>= 0.996-1.1) 但是它将不会被安装
冲突: mysql-server-5.6 但是 5.6.30-0ubuntu0.14.04.1 正要被安装
mysql-server : 依赖: mysql-server-5.5 但是它将不会被安装
mysql-server-5.6 : 依赖: mysql-client-5.6 (>= 5.6.30-0ubuntu0.14.04.1) 但是它将不会被安装
依赖: mysql-server-core-5.6 (= 5.6.30-0ubuntu0.14.04.1) 但是它将不会被安装
推荐: mysql-common-5.6 但是它将不会被安装
破坏: virtual-mysql-server:i386
E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt-get -f install”(也可以指定一个解决办法)。
“`

原因是源的版本与系统版本不匹配,ubuntu版本为14.04.1,而通过dpkg看版本却为 14.04

“`
dpkg -l | grep mysql
rc mysql-community-server 5.7.13-1ubuntu14.04
“`

通过 dpkg -r 把版本不正确的包删除掉: dpkg -r mysql-community-server

virtualbox增加已经分配虚拟机硬盘大小:VBoxManage modifyhd ~/VirtualBox\ VMs/win10/win10.vdi –resize 15360

解决Supervisor不能真正停止django进程,在配置文件中添加配置:
stopasgroup=true

将视频文件去除掉音频 ffmpeg -i 1.MOV -vcodec copy -an 2.mov

mac上面 spotlight 可以手动窗口,有时候不小心拖走了,就没办法还原居中的位置,强迫症不能忍,一个命令解决:defaults delete com.apple.Spotlight userHasMovedWindow

调试nginx的配置文件规则 ,特别是 location 匹配的时候,可以在 nginx 的日志里面加上 debug :
error_log /var/log/nginx/app30.axmtec.com-error.log debug;