Ubuntu命令参考手册

来源:互联网 发布:ubuntu selinux 关闭 编辑:程序博客网 时间:2024/04/30 16:10

     本文包括两个部分,

     第一部分是Ubuntu官网的Ubuntu命令技巧。 我添加、修改和补充了其中部分内容。

     第二部分是我在Ubuntu上经常使用的其他常用命令。  会随时更新,以备大家查询。

      Linux下常用的一些优秀软件,看我的另一篇文章《推荐一些Linux下常用的软件》http://blog.csdn.net/shendl/article/details/6173408


参考资料

Ubuntu12.04 桌面培训   http://people.ubuntu.com/~happyaron/udc-cn/lucid-html/index.html



Ubuntu命令技巧

前言

下面的命令大都需要在控制台/终端/shell下输入。

控制台,终端,shell意味着同样一件事-一个命令行界面,他可以用来控制系统。

打开一个控制台:

应用程序-->附件-->终端

任何一个使用'sudo'作为前缀的命令都需要拥有管理员(root)访问权限。所以你会被提示输入你自己的密码。

 

安装升级

查看软件xxx安装内容

dpkg -L xxx 

查找软件库中的软件

apt-cache search 正则表达式aptitude search 软件包

显示系统安装包的统计信息

apt-cache stats

显示系统全部可用包的名称

apt-cache pkgnames

显示包的信息

apt-cache show k3b

查找文件属于哪个包

apt-file search filename

查看已经安装了哪些包

dpkg -l

查询软件xxx依赖哪些包

apt-cache depends xxx

查询软件xxx被哪些包依赖

apt-cache rdepends xxx

增加一个光盘源

sudo apt-cdrom add

系统更新

sudo apt-get update (这一步更新包列表)sudo apt-get dist-upgrade (这一步安装所有可用更新)或者sudo apt-get upgrade (这一步安装应用程序更新,不安装新内核等)

查询程序属于哪一个debian包

如,程序名是 dh_installdeb
$dpkg  -S `which dh_installdeb`debhelper: /usr/bin/dh_installdeb$dpkg -l | grep debhelperii  debhelper                              7.4.15ubuntu1                                   helper programs for debian/rules

另一种更强的方法:

apt-file update
apt-file search  filename
   可以找到该文件属于哪一个deb包。


清除所有已删除包的残馀配置文件

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P 

如果报如下错误,证明你的系统中没有残留配置文件了,无须担心。


dpkg:--purge needs at least one package name argument

Typedpkg --help for help about installing and deinstalling packages[*];
Use `dselect' or `aptitude' for user-friendly packagemanagement;
Type dpkg -Dhelp for a list of dpkg debug flagvalues;
Type dpkg --force-help for a list of forcing options;
Typedpkg-deb --help for help about manipulating *.deb files;
Type dpkg--license for copyright license and lack of warranty (GNU GPL) [*].

Optionsmarked [*] produce a lot of output - pipe it through `less' or`more' !

 


编译时缺少h文件的自动处理

sudo auto-apt run ./configure

查看安装软件时下载包的临时存放目录

ls /var/cache/apt/archives
      如果你有一些自己的deb包需要安装,可以把它们复制到/var/cache/apt/archives目录下,然后就可以使用apt-get install 包名   安装。
       使用apt-get install命令比dpkg -i 命令更好,因为apt-get install命令会自动安装依赖的软件包。  
      dpkg -i 命令安装时,则可能会遇到软件包依赖不满足而无法安装的错误。

备份当前系统安装的所有包的列表

dpkg --get-selections | grep -v deinstall > ~/somefile

从上面备份的安装包的列表文件恢复所有包

dpkg --set-selections < ~/somefilesudo dselect  或者 sudo  apt-get  dselect-upgrade  

安装debian包时自动回答yes

sudo apt-get install/dselect-upgrade 等命令后,可以加上-y 表示自动回答yes。
但在遇到安装一个未验证的deb包,或者删除一个本质的deb包时,安装过程会终止。
如果再加上

--force-yes 

那么不论什么样的情况,apt-get都会执行安装。 但使用这个选项可能会造成系统问题。

清理旧版本的软件缓存

sudo apt-get autoclean

清理所有软件缓存

sudo apt-get clean

删除系统不再使用的孤立软件

sudo apt-get autoremove

查看包在服务器上面的地址

apt-get -qq --print-uris install ssh | cut -d/' -f2

 

彻底删除Gnome

apt-get --purge remove liborbit2

彻底删除KDE

apt-get --purge remove libqt3-mt libqtcore4

一键安装LAMP服务

sudo tasksel install lamp-server

删除旧内核

sudo aptitude purge ~ilinux-image-.*/(/!`uname -r`/)

导入ppa源的key

#W: GPG签名验证错误: http://ppa.launchpad.net jaunty Release: 由于没有公钥,下列签名无法进行验证: NO_PUBKEY 5126890CDCC7AFE0sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 5126890CDCC7AFE0 #5126890CDCC7AFE0替换为你需要导入的Key

增加一个ppa

sudo add-apt-repository ppa:user/ppa-name  #使用 ppa 的地址替换 ppa:user/ppa-name

系统升级

  1. 这里指的是版本间的升级,例如9.04=>10.04

  2. 使用该升级方式通常需要使能backports源。

sudo apt-get updatesudo apt-get install update-manager-coresudo do-release-upgrade

系统

查看内核

uname -a

查看系统是32位还是64

#查看long的位数,返回3264getconf LONG_BIT#查看文件信息,包含32-bit就是32位,包含64-bit就是64file /sbin/init

查看Ubuntu版本

cat /etc/issuecat /etc/lsb-release lsb_release -dsc

查看内核加载的模块

lsmod

查看PCI设备

lspci

查看USB设备

lsusb #加参数 -v 可以显示USB设备的描述表(descriptorslsusb -v

查看网卡状态

sudo apt-get install ethtool sudo ethtool eth0

激活网卡的Wake-on-LAN

sudo apt-get install wakeonlansudo ethtool -s eth0 wol g

查看CPU信息

cat /proc/cpuinfo

显示当前硬件信息

sudo lshw
      这个命令可以显示详尽的硬件信息,包括厂商,信号,能力,总线等信息。使用lshw |more 耐心查看。
    lshw -html  > lshw.html 生成网页形式的页面。
    lshw  -short  查看硬件的简要信息。

获取CPU序列号或者主板序列号

#CPU IDsudo dmidecode -t 4 | grep ID#Serial Numbersudo dmidecode  | grep  Serial#CPUsudo dmidecode -t 4#BIOSsudo dmidecode -t 0#主板:sudo dmidecode -t 2#OEM:sudo dmidecode -t 11

显示当前内存大小

free -m |grep "Mem" | awk '{print $2}'

查看硬盘温度

sudo apt-get install hddtempsudo hddtemp /dev/sda

显示系统运行时间

uptime

查看系统限制

ulimit -a

查看内核限制

ipcs -l

查看当前屏幕分辨率

xrandr

硬盘

查看硬盘的分区

sudo fdisk -l
Blocks字段表示分区的大小,它的单位是1024字节,也就是KB。

硬盘分区

#危险!小心操作。sudo fdisk /dev/sda

硬盘格式化

#危险!将第一个分区格式化为 ext3 分区, mkfs.reiserfs mkfs.xfs mkfs.vfatsudo mkfs.ext3 /dev/sda1

硬盘检查

#危险!检查第一个分区,请不要检查已经挂载的分区,否则容易丢失和损坏数据sudo fsck /dev/sda1

分区挂载

sudo mount -t 文件系统类型 设备路经 访问路经 #常用文件类型如下: iso9660 光驱文件系统, vfat fat/fat32分区, ntfs ntfs分区, smbfs windows网络共享目录, reiserfsext3xfs Linux分区#如果中文名无法显示尝试在最後增加 -o nls=utf8 -o iocharset=utf8 #如果需要挂载後,普通用户也可以使用,在 -o 的参数後面增加 ,umask=022 如:-o nls=utf8,umask=022

分区卸载

sudo umount 目录名或设备名

只读挂载ntfs分区

sudo mount -t ntfs -o nls=utf8,umask=0 /dev/sdb1 /mnt/c

可写挂载ntfs分区

sudo mount -t ntfs-3g -o locale=zh_CN.utf8,umask=0 /dev/sdb1 /mnt/c
     默认安装的ubuntu桌面版,会自动只读mount ntfs格式的分区。    
sudo apt-get install ntfs-3g
    安装这个软件包之后,就会自动以读写方式mount ntfs格式的分区了。
      如果不安装这个软件包,必须使用root权限写fat格式的磁盘。而且速度很慢。安装这个软件包后,可以用一般用户写fat格式磁盘,速度恢复正常。
      我曾经写fat格式的U盘速度非常慢,只有几百KB/s。安装这个软件包后,写入速度恢复正常,达到30多MB/s。

挂载fat32分区

sudo mount -t vfat -o iocharset=utf8,umask=0 /dev/sda1 /mnt/c

挂载共享文件

sudo mount -t smbfs -o  username=xxx,password=xxx,iocharset=utf8 //192.168.1.1/share /mnt/share

挂载ISO文件

sudo mount -t iso9660 -o loop,utf8 xxx.iso /mnt/iso

查看IDE硬盘信息

sudo hdparm -i /dev/hda

查看软raid阵列信息

cat /proc/mdstat

参看硬raid阵列信息

dmesg |grep -i raidcat /proc/scsi/scsi

查看SATA硬盘信息

sudo hdparm -I /dev/sdasudo apt-get install blktoolsudo blktool /dev/sda id

查看硬盘剩余空间

df

用法:df[选项]...[文件]...显示每个<文件>所在的文件系统的信息,默认是显示所有文件系统。

长选项必须用的参数在使用短选项时也是必需的。  -a, --all             包括大小为 0 个块的文件系统  -B, --block-size=大小 块以指定<大小>的字节为单位  -h, --human-readable  以容易理解的格式印出文件系统大小 (例如 1K 234M 2G)  -H, --si              类似 -h,但取 1000 的次方而不是 1024  -i, --inodes          显示 inode 信息而非块使用量  -k                    --block-size=1K  -l, --local           只显示本机的文件系统      --no-sync         取得使用量数据前不进行同步动作 (默认)  -P, --portability     使用 POSIX 兼容的输出格式      --sync            取得使用量数据前先进行同步动作  -t, --type=类型       只印出指定文件系统为指定<类型>的信息  -T, --print-type      印出文件系统类型  -x, --exclude-type=类型   只印出文件系统不是指定<类型>信息  -v                    (忽略)      --help     显示此帮助信息并离开      --version  显示版本信息并离开

查看目录占用空间

du -hs 目录名

优盘没法卸载

syncfuser -km /media/usbdisk

使用文件来增加交换空间

#创建一个512M的交换文件 /swapfilesudo dd if=/dev/zero of=/swapfile bs=1M count=512 sudo mkswap /swapfilesudo swapon /swapfile#sudo vim /etc/fstab #加到fstab文件中让系统引导时自动启动/swapfile swap swap defaults 0 0

查看硬盘当前读写情况

# 首先安装 sysstat sudo apt-get install sysstat#2秒刷新一次sudo iostat -x 2

进程

查看当前的内存使用情况

free

usage:free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V]

  -b,-k,-m,-g show output in bytes, KB, MB, or GB  -l show detailed low and high memory statistics  -o use old format (no -/+buffers/cache line)  -t display total for RAM + swap  -s update every [delay] seconds  -c update [count] times  -V display version information and exit

连续监视内存使用情况

watch  -d free# 使用 Ctrl + c 退出

动态显示进程执行情况

toptop指令运行时输入H或?打开帮助窗口,输入Q退出指令。

查看当前有哪些进程

ps -AFL

查看目前登入用户运行的程序

w

查看当前用户程序实际内存占用,并排序

ps -u $USER -o pid,rss,cmd --sort -rss

统计程序的内存耗用

ps -eo fname,rss|awk '{arr[$1]+=$2} END {for (i in arr) {print i,arr[i]}}'|sort -k2 -nr

按内存从大到小排列进程

ps -eo "%C  : %p : %z : %a"|sort -k5 -nr

cpu利用率从大到小排列进程

ps -eo "%C  : %p : %z : %a"|sort  -nr

查看当前进程树

pstree

中止一个进程

kill 进程号(就是ps -A中的第一列的数字)或者 killall 进程名

强制中止一个进程(在上面进程中止不成功的时候使用)

kill -9 进程号或者 killall -9 进程名

图形方式中止一个程序

xkill 出现骷髅标志的鼠标,点击需要中止的程序即可

 

查看进程打开的文件

lsof -p 进程的pid

显示开启文件abc.txt的进程

lsof abc.txt 

显示22端口现在运行什么程序

lsof -i :22 

显示nsd进程现在打开的文件

lsof -c nsd

在後台运行程序,退出登录後,并不结束程序

nohup 程序 &#查看中间运行情况 tail nohup

在后台运行交互式程序,退出登录后,并不结束程序

sudo apt-get install screenscreen vim a.txt#直接退出后使用 screen -ls   # 1656.pts-0.ubuntu   (Detached)screen -r 1656  #恢复#热键,同时按下Ctrla键结束后,再按下功能键C-a ?   #显示所有键绑定信息C-a w   #显示所有窗口列表C-a C-a #切换到之前显示的窗口C-a c   #创建一个新的运行shell的窗口并切换到该窗口C-a n   #切换到下一个窗口C-a p   #切换到前一个窗口(C-a n相对)C-a 0..9        #切换到窗口0..9C-a a   #发送 C-a到当前窗口C-a d   #暂时断开screen会话C-a k   #杀掉当前窗口

详细显示程序的运行信息

strace -f -F -o outfile <cmd>

增加系统最大打开文件个数

echo 4096 > /proc/sys/fs/file-max#或者ulimit -n 4096

清除僵尸进程

ps -eal | awk '{ if ($2 == "Z") {print $4}}' | xargs sudo kill -9

将大于120M内存的php-cgi都杀掉

ps -eo pid,fname,rss|grep php-cgi|grep -v grep|awk '{if($3>=120000) print $1}' | xargs sudo kill -9

Linux系统中如何限制用户进程CPU占用率

renice +10 `ps aux | awk '{ if ($3 > 0.8 && id -u $1 > 500) print $2}'` #或直接编辑/etc/security/limits.conf文件。

ADSL

配置ADSL

sudo pppoeconf

ADSL手工拨号

sudo pon dsl-provider

激活ADSL

sudo /etc/ppp/pppoe_on_boot

断开ADSL

sudo poff

查看拨号日志

sudo plog

如何设置动态域名

#首先去 http://www.3322.org 申请一个动态域名#然後修改 /etc/ppp/ip-up 增加拨号时更新域名指令sudo vim /etc/ppp/ip-up#在最後增加如下行w3m -no-cookie -dump 'http://username:password@members.3322.org/dyndns/update?system=dyndns&hostname=yourdns.3322.org'

网络

根据IP查网卡地址

arping IP地址

根据IP查电脑名

nmblookup -A IP地址

查看当前IP地址

ifconfig eth0 |awk '/inet/ {split($2,x,":");print x[2]}'

查看当前外网的IP地址

w3m -no-cookie -dump www.ip138.com/ip2city.asp|grep -o '[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}'w3m -no-cookie -dump ip.loveroot.com|grep -o '[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}'curl ifconfig.me

查看当前监听80端口的程序

lsof -i :80

查看当前网卡的物理地址

ifconfig eth0 | head -1 | awk '{print $5}'

同一个网卡增加第二个IP地址

#在网卡eth0上增加一个1.2.3.4IPsudo ifconfig eth0:0 1.2.3.4 netmask 255.255.255.0#删除增加的IPsudo ifconfig eth0:0 down

立即让网络支持nat

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forwardsudo iptables -t nat -I POSTROUTING -j MASQUERADE

查看路由信息

netstat -rnsudo route -n

手工增加一条路由

sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

手工删除一条路由

sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

修改网卡MAC地址的方法

sudo ifconfig eth0 down #关闭网卡sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #然后改地址sudo ifconfig eth0 up #然后启动网卡

永久改地址方法

sudo gedit /etc/network/interfaces

ifaceeth0 inet static 后面添加一行:

pre-up ifconfig eth0 hw ether 01:01:01:01:01:01

配置文件应该像如下

iface eth0 inet staticpre-up ifconfig eth0 hw ether 01:01:01:01:01:01address 192.168.1.10netmask 255.255.255.0gateway 192.168.1.1

最后是logout或者reboot

统计当前IP连接的个数

netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -nnetstat -na|grep SYN|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -nnetstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

统计当前所有IP包的状态

netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n

统计当前20000IP包中大于100IP包的IP地址

tcpdump -tnn -c 20000 -i eth0 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | awk ' $1 > 100 '

屏蔽IPV6

echo "blacklist ipv6" | sudo tee /etc/modprobe.d/blacklist-ipv6

察看当前网络连接状况以及程序

sudo netstat -atnp

查看网络连接状态

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

查看当前系统所有的监听端口

nc -zv localhost 1-65535

查看网络的当前流量

#安装 ethstatus 软件sudo apt-get install ethstatus#查看 ADSL 的速度sudo ethstatus -i ppp0#查看 网卡 的速度sudo ethstatus -i eth0#或安装 bwm-ng sudo apt-get install bwm-ng#查看当前网络流量bwm-ng

查看域名的注册备案情况

whois baidu.cn

查看到某一个域名的路由情况

tracepath baidu.cn

重新从服务器获得IP地址

sudo dhclient

从当前页面开始镜像整个网站到本地

wget -r -p -np -k http://www.21cn.com· -r:在本机建立服务器端目录结构;· -p: 下载显示HTML文件的所有图片;· -np:只下载目标站点指定目录及其子目录的内容;· -k: 转换非相对链接为相对链接。

如何多线程下载

sudo apt-get install axelaxel -n 5 http://xxx.xxx.xxx.xxx/xxx.zip或者lftp -c "pget -n 5 http://xxx.xxx.xxx.xxx/xxx.zip“

如何查看HTTP

w3m -dump_head http://www.example.comcurl --head http://www.example.com

快速使用http方式共享目录

#进入需要共享的目录后运行: python -m SimpleHTTPServer#其它电脑使用http://ip:8000 来访问#自定义端口为8080: python -m SimpleHTTPServer 8080

SSH远程端口转发

ssh -v -CNgD 7070 username@sshhostipaddress    这可以建立一个socks5服务器。服务器端口是7070。可以使用firefox的autoproxy等插件来使用7070作为代理。实现翻墙的目的。 -v      Verbose mode.  Causes ssh to print debugging messages about its progress.  This is helpful in debugging connection, authentication, and configuration             problems.  Multiple -v options increase the verbosity.  The maximum is 3.    可以不用  -C      Requests compression of all data (including stdin, stdout, stderr, and data for forwarded X11 and TCP connections).  The compression algorithm is the             same used by gzip(1), and the “level” can be controlled by the CompressionLevel option for protocol version 1.  Compression is desirable on modem             lines and other slow connections, but will only slow down things on fast networks.  The default value can be set on a host-by-host basis in the con‐             figuration files; see the Compression option.   启用压缩 -N      Do not execute a remote command.  This is useful for just forwarding ports (protocol version 2 only).    不登陆到远程shell。建立这个ssh通道只是为了转发请求,不是为了真正登陆到远程计算机上执行命令。-g      Allows remote hosts to connect to local forwarded ports.   允许其他计算机访问你的7070端口来访问你的socks5隧道。     如果你只是自己本机使用,请不要指定这个选项,以免其他人利用你的端口。 -D [bind_address:]port             Specifies a local “dynamic” application-level port forwarding.  This works by allocating a socket to listen to port on the local side, optionally             bound to the specified bind_address.  Whenever a connection is made to this port, the connection is forwarded over the secure channel, and the appli‐             cation protocol is then used to determine where to connect to from the remote machine.  Currently the SOCKS4 and SOCKS5 protocols are supported, and             ssh will act as a SOCKS server.  Only root can forward privileged ports.  Dynamic port forwardings can also be specified in the configuration file.             IPv6 addresses can be specified by enclosing the address in square brackets.  Only the superuser can forward privileged ports.  By default, the local             port is bound in accordance with the GatewayPorts setting.  However, an explicit bind_address may be used to bind the connection to a specific             address.  The bind_address of “localhost” indicates that the listening port be bound for local use only, while an empty address or ‘*’ indicates that             the port should be available from all interfaces.       指定socks5服务器端口,转发流量。         如果你的远程计算机在墙外,你就可以使用这个命令创建ssh的socks5隧道,配合firefox的autoproxy插件实现翻墙。你可以使用如下命令查看该端口的使用情况: lsof | grep 7070

监控网络所有的tcp数据

sudo apt-get install snort #安装snort入侵检测程序sudo snort -vde

iptables

防止外网用内网IP欺骗

#eth0 为外网网卡sudo iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROPsudo iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROPsudo iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP 

查看nat规则

sudo iptables -t nat -L

查看filter规则

sudo iptables -L -n

取消nat规则

sudo iptables -t nat -F

取消filter规则

sudo iptables -F

阻止一个IP连接本机

#规则位于最后sudo iptables -t filter -A INPUT -s 192.168.1.125 -i eth0 -j DROP 

关闭1234端口

sudo iptables -A OUTPUT -p tcp --dport 1234 -j DROP

开启80端口

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT 

禁止一个IP或者一个IP段访问服务器端口服务

#80端口 ,规则插入到前面sudo iptables -t filter -I INPUT -s 192.168.2.0/24 -p tcp --dport http -j DROP#21端口,规则插入到前面sudo iptables -t filter -I INPUT -s 192.168.1.23 -p tcp --dport ftp -j DROP

安全

检查本地是否存在安全隐患

sudo apt-get install rkhuntersudo rkhunter --checkall

如何安装杀毒软件

sudo apt-get install clamavclamscan -r ~/

Linux下可以使用的商业杀毒软件

卡巴斯基(deb)http://www.kaspersky.com/productupdates?chapter=146274389avast!(免费/deb)http://www.avast.com/eng/download-avast-for-linux-edition.html小红伞(gz)http://www.avira.com/en/downloads/avira_antivir_professional.htmlBitDefender(比特梵德/run):http://download.bitdefender.com/SMB/Workstation_Security_and_Management/BitDefender_Antivirus_Scanner_for_Unices/Unix/Current/EN_FR_BR_RO/Linux/

申请比特梵德的KEYhttp://www.bitdefender.com/site/Products/ScannerLicense/

服务

首先,编写一个符合要求的shell脚本。 可以以/etc/init.d/目录下的脚本文件为模板编写。

然后把该脚本复制到/etc/init.d/目录下。文件名就是下面所说的服务名。

添加一个服务

sudo update-rc.d 服务名 defaults 99
      这将根据shell文件指定的级别,在/etc/rcN.d/目录下创建对应的S**链接(S开头的文件名,表示启动时执行)和K**链接(K开头的文件名,表示关闭时执行)。
     S/K后面的数字,表示执行顺序。数字越大,越晚被执行。

删除一个服务

sudo update-rc.d 服务名 remove

强制删除一个服务

sudo update-rc.d -f 服务名 remove
      
删除服务,就是把之前生成的/etc/rcN.d/目录下的超链接删除。

临时重启一个服务

/etc/init.d/服务名 restart

临时关闭一个服务

/etc/init.d/服务名 stop

临时启动一个服务

/etc/init.d/服务名 start

用户管理

增加用户

sudo adduser 用户名

删除用户

sudo deluser 用户名

修改当前用户的密码 

passwd

修改用户密码 

sudo passwd 用户名

修改用户资料

sudo chfn userid

如何禁用/启用某个帐户

sudo usermod -L 用户名 #锁定用户sudo usermod -U 用户名 #解锁sudo passwd -l 用户名 #锁定用户sudo passwd -u 用户名 #解锁

增加用户到admin组,让其有sudo权限

sudo usermod -G admin -a 用户名

如何切换到其他帐号(需要该用户的密码)

su 用户名

如何切换到root帐号

sudo -ssudo -isudo su

设置

配置默认Java使用哪个

sudo update-alternatives --config java

apt设置代理

export http_proxy=http://xx.xx.xx.xx:xxx

修改系统登录信息

sudo vim /etc/motd

使用eclipse等其他自带java编译器的软件,换回sun的编译器方法

对于JavaJDK6 (就是1.6sun缩短Java的版本名字了):

sudo update-java-alternatives -s java-6-sun

对于JavaJDK1.5

sudo update-java-alternatives -s java-1.5.0-sun

中文

切换输入法引擎

im-switch -c

转换文件名由GBKUTF8

sudo apt-get install convmvconvmv -r -f cp936 -t utf8 --notest --nosmart *

批量转换src目录下的所有文件内容由GBKUTF8

find src -type d -exec mkdir -p utf8/{} /;find src -type f -exec iconv -f GBK -t UTF-8 {} -o utf8/{} /;mv utf8/* srcrm -fr utf8

转换文件内容由GBKUTF8

iconv -f gbk -t utf8 $i > newfile

批量转换文件内容由GBKUTF8

for i in `find . *`; do if [ -f "$i" ]; then iconv -f gb2312 -t utf8 $i > "./converted/$i" fi ; done

转换mp3标签编码

sudo apt-get install python-mutagenfind . -iname '*.mp3' -execdir mid3iconv -e GBK {} /;

或者使用图形界面工具“K,具体请参考解决文件名mp3标签和文本文件内容的乱码问题

控制台下显示中文

sudo apt-get install zhcon使用时,输入zhcon即可更具体的输入:zhcon --utf8 --drv=vga如果在/etc/zhcon.conf中指定了分辨率,可以去掉--drv=vga以指定的分辨率启动。

zhcon是个外挂的控制平台,也就是像US-DOS那样是额外安装的软件,装完后是需要驱动才能进去的,不然有可能死机;当然驱动什么的在你sudoapt-get install zhcon的时候就已经安装了;你所需要的是在进zhcon时要申明你所用的驱动,zhcon在安装时,就装了3种驱动:vga,framebuffer,libggi,而我们一般都是用的第一种驱动,因为比较方便简单,而那2钟驱动.很麻烦,我也就没改过.好了说了这么多该告诉各位怎么进入zhcon了;运行时需输入:zhcon--utf8 --drv=vga

lftp登录远程Windows中文FTP 

lftp :~>set ftp:charset GBKlftp :~>set file:charset UTF-8

java6的安装和中文设置

#下面是ubuntu 10.04安装标准的sun-java,安装过程中需要使用tab键切换同意其授权协议sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"sudo apt-get updatesudo apt-get install sun-java6-jdk sun-java6-plugin ttf-wqy-microheisudo apt-get remove ttf-kochi-gothic ttf-kochi-mincho ttf-unfonts ttf-unfonts-coresudo mkdir -p /usr/lib/jvm/java-6-sun/jre/lib/fonts/fallbacksudo ln -s /usr/share/fonts/truetype/arphic/wqy-microhei.ttc /usr/lib/jvm/java-6-sun/jre/lib/fonts/fallback

openjdk6的安装和中文设置

sudo apt-get install openjdk-6-jdk ttf-wqy-microhei#有两种解决办法,第一种关闭JavaAAecho "export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'" >> ~/.profile#第二种直接修改Java字体配置echo "allfonts.umingcn=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.propertiesecho "allfonts.uminghk=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.propertiesecho "allfonts.umingtw=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.propertiesecho "allfonts.wqy-zenhei=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.propertiesecho "allfonts.shanheisun=WenQuanYi Microhei Hei" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.propertiesecho "filename.WenQuanYi_Microhei_Hei=/usr/share/fonts/truetype/wqy/wqy-microhei.ttc" | sudo tee -a /usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties

程序显示有些字大,有些小

 sudo apt-get remove ttf-kochi-gothic ttf-kochi-mincho ttf-unfonts ttf-unfonts-core

PDF文件乱码

sudo apt-get install xpdf-chinese-simplified xpdf-chinese-traditional poppler-data

Flash中文乱码

sudo gedit /etc/fonts/conf.d/49-sansserif.conf 将倒数第四行 <string>sans-serif</string>改为 <string>sans</string>保存即可,重启firefox

增加农历

sudo apt-get install lunar-applet鼠标点击面板右键 -> 添加到面板 -> 农历日期

unzip中文文件名乱码

sudo apt-get install p7zip-fullexport LANG=zh_CN.GBK  #临时在控制台修改环境为zh_CN.GBK,然后解压缩即可7za e docs.zip

ibus跟随

安装ibus-gtk即可,最好另外安装:ibus-qt4

文件管理

一屏查看文件内容

cat 文件名

不显示以#开头的行

cat /etc/vsftpd.conf |grep -v ^#

分页查看文件内容

more 文件名

可控分页查看文件内容

less 文件名

带行号显示文件的内容

nl 文件名cat -n 文件名

去除文件中的行号

cut -c 5- a.py

删除文件中的重复行

cat file.txt |sort -u

根据字符串匹配来查看文件部分内容

grep 字符串 文件名

显示包含或者不包含字符串的文件名

grep -l -r 字符串 路径 #显示内容包含字符串的文件名grep -L -r 字符串 路径 #显示内容不包含字符串的文件名find . -path './cache' -prune -o -name "*.php" -exec grep -l "date_cache[$format]['lang']" {} /; #显示当前目录下不包含cache目录的所有含有“date_cache[$format]['lang']”字符串的php文件。

快速查找某个文件

whereis filenamefind 目录 -name 文件名locate 文件名 # 注意,为了得到更好的效果,运行前可以更新下数据库,运行 sudo updatedb 即可,但这个命令每隔一段时间会自动运行,所以不用太在意

创建两个空文件

touch file1 file2

递归式创建一些嵌套目录

mkdir -pv /tmp/xxs/dsd/efd

递归式删除嵌套目录

rm -fr /tmp/xxs

回当前用户的宿主目录

cd ~# 或者更简单的cd

回到上一次的目录

cd -

查看当前所在目录的绝对路经

pwd

获得文件的后缀名

echo xxx.xxx.rmvb |sed 's/.*/(/..*$/)//1/'

去除文件的后缀名

echo xxx.xxx.rmvb |sed 's//(.*/)/..*$//1/'

列出当前目录下的所有文件,包括以.开头的隐含文件

ls -a

移动路径下的文件并改名

mv 路径/文件  /新路径/新文件名

复制文件或者目录

cp -av 原文件或原目录 新文件或新目录

查看文件类型

file filename

对比两个文件之间的差异 

diff file1 file2

显示xxx文件倒数6行的内容

tail -6 xxx

tail不停地读取最新的内容

tail -10f /var/log/apache2/access.log

或者

tailf /var/log/apache2/access.log

查看文件中间的第五行(含)到第10行(含)的内容

sed -n '5,10p' /var/log/apache2/access.log

 

查找关于xxx的命令

apropos xxxman -k xxx

通过ssh传输文件

scp -rp /path/filename username@remoteIP:/path #将本地文件拷贝到服务器上scp -rp username@remoteIP:/path/filename /path #将远程文件从服务器下载到本地tar cvzf - /path/ | ssh username@remoteip "cd /some/path/; cat -> path.tar.gz" #压缩传输tar cvzf - /path/ | ssh username@remoteip "cd /some/path/; tar xvzf -" #压缩传输一个目录并解压

把所有文件的後辍由rm改为rmvb

rename 's/.rm$/.rmvb/' *

把所有文件名中的大写改为小写

rename 'tr/A-Z/a-z/' *

删除特殊文件名的文件,如文件名:--help.txt

rm -- --help.txt 或者 rm ./--help.txt

查看当前目录的子目录

ls -d */ echo */

将当前目录下最近30天访问过的文件移动到上级back目录

find . -type f -atime -30 -exec mv {} ../back /;

查找当前目录下最近30天访问过的文件打包备份

find . -type f -atime -30 | xargs tar zcvpf backup.tar.gzfind . -type f -atime -30 -print -exec tar rvpf backup.tar {} /;

显示系统服务器一小时以内的包含xxxx的所有邮件

find /home/ -path "*Maildir*" -type f -mmin -60|xargs -i  grep -l xxxx '{}'

将当前目录下最近2小时到8小时之内的文件显示出来

find . -mmin +120 -mmin -480 -exec more {} /;

删除修改时间在30天之前的所有文件

find . -type f -mtime +30 -mtime -3600 -exec rm {} /;

删除创建时间在30天之前的所有文件

find . -type f -ctime +30 -ctime -3600 -exec rm {} /;

查找guest用户的以avi或者rm结尾的文件并删除掉

find . -name '*.avi' -o -name '*.rm' -user 'guest' -exec rm {} /;

查找不以javaxml结尾,7天没有使用的文件删除掉

find . ! -name *.java ! -name ‘*.xml’ -atime +7 -exec rm {} /;

查找目录下所有有包含abcd文字的文本文件,并替换为xyz

grep -rIl "abcd" ./* --color=never | xargs sed -i "s/abcd/xyz/g" #注意grep的一个参数是大写的i,一个参数是小写的L

删除当前目录里面所有的.svn目录

find . -name .svn -type d -exec rm -fr {} /;

删除当前目录所有以“~”结尾的临时文件

find . -name "*~" -exec rm {} /;

统计当前文件个数

ls /usr/bin|wc -w

统计当前目录下所有jpg文件的尺寸

find . -name *.jpg -exec wc -c {} /;|awk '{print $1}'|awk '{a+=$1}END{print a}'

统计当前目录个数

ls -l /usr/bin|grep ^d|wc -l

统计当前目录下占空间最大的前10名文件或目录

du -sm * | sort -nr | head -10

显示当前目录下2006-01-01的文件名

ls -l |grep 2006-01-01 |awk '{print $8}'

备份当前系统到另外一个硬盘 

sudo rsync -Pa / /media/disk1 --exclude=/media/* --exclude=/home/* --exclude=/sys/* --exclude=/tmp/* --exclude=/proc/* --exclude=/mnt/*

使用ssh方式同步远程数据到本地目录

rsync -Pa -I --size-only --delete --timeout=300 Remote_IP:/home/ubuntu/back /backup

使用ftp方式同步远程数据到本地目录

lftp -c "open Remote_IP;user UserName Password;set cache:enable false;set ftp:passive-mode false;set net:timeout 15;mirror -e -c /back /backup;"

去掉文件中的^M

#注意不要使用同样的文件名,会清空掉原文件cat filename | tr -d "^M" > newfile;或者sed -e "s/^M//g" filename > newfile;或者ex "+:%s/[Ctrl+V][Enter]//g" "+:wq"  filename #直接修改文件

转换Dos文本文件到Unix文本文件

tr -d '/15/32' < dosfile.txt > unixfile.txt                         #dos = > unixawk '{ sub("/r$", ""); print }' dosfile.txt > unixfile.txt   #dos = > unixawk 'sub("$", "/r")' unixfile.txt > dosfile.txt                  #unix = > dos

转换bin/cueiso文件

#sudo apt-get install bchunkbchunk image.bin image.cue image

转换目录到iso文件

mkisofs -o isofile.iso  dirname

转换CDiso文件

dd if=/dev/cdrom of=isofile.iso

将一个文件作为附件发到邮箱

#sudo apt-get install mailutils sharutilsuuencode xxx.tar.gz xxx.tar.gz |mail xxx@xxx.com(echo "hello, please see attached file"; uuencode xxx.tar.gz xxx.tar.gz)| mail xxx@xxx.com

合并多个pdf文件到一个pdf文件

#apt-get install gs pdftkgs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=output.pdf -dBATCH input1.pdf input2.pdf

影像

播放swf文件

安装swf解码器

 sudo apt-get install swfmill

如何保存串流视频(mms/rtsp)

mplayer -dumpfile dump.rm -dumpstream rstp://....

批量将rmvb转为avi

#ipod touch可用for i in *.rmvb; do mencoder -vf harddup -oac mp3lame -lameopts vbr=3 -ovc xvid -xvidencopts fixed_quant=4 -of avi $i -o `echo $i | sed -e 's/rmvb$/avi/'`; done

批量将DVD转为avi

for i in *.VOB; do mencoder -oac mp3lame -lameopts aq=7:vbr=2:q=6 -srate 44100 -ovc xvid -xvidencopts fixed_quant=4 -of avi $i -o `echo $i | sed -e 's/VOB$/avi/'`; done

批量将任何格式的电影转为ogv

#sudo apt-get install ffmpeg2theora   #firefox3.5chrome直接支持播放,无需安装任何解码器,注意不支持rmvbrmvb会出现a/v不同步问题for i in *; do ffmpeg2theora --optimize --deinterlace $i; done

批量将rmvb格式的电影转为ogv

#!/bin/bashfor i in *; do   mkfifo "/tmp/$i"   mencoder -quiet -vf harddup -ovc raw -oac pcm -o "/tmp/$i" "$i" &   ffmpeg2theora --optimize --deinterlace "/tmp/$i" -o "`echo $i | sed 's//(.*/)/..*$//1/'`.ogv"   rm "/tmp/$i"done

利用gst来转换任意电影为ogv

#!/bin/bashfor i in *; do   gst-launch-0.10 filesrc location="$i" ! decodebin name=demux /   { oggmux name=mux ! filesink location="`echo $i | sed 's//(.*/)/..*$//1/'`.ogv" } /   { demux. ! queue ! audioconvert ! vorbisenc ! queue ! mux. } /   { demux. ! queue ! ffmpegcolorspace ! videorate ! theoraenc ! mux. } done

 

批量转换任意文件为ipodtouch使用的mp4

#!/bin/bash#ubuntu10.04自带的mencoder由于版权问题,不支持h264编码,需要重新编译;也可以直接参考下面的压缩方法。#sudo apt-get install mencoder mplayerfind . -name '*.avi' -o -name '*.rm' -o -name '*.rmvb' -o -name '*.wmv' -o /      -name '*.vob' -o -name '*.asf' -o -name '*.mpg' -o -name '*.ts' -o /      -name '*.flv' -o -name '*.mpeg' -o -name '*.ogv' -o -name '*.mov' -o /      -name '*.mkv' -o -name '*.dat' | while read i; do  basename=`echo $i | sed 's//(.*/)/..*$//1/'`  font="WenQuanYi Zen Hei"  if [ -f "${basename}.srt" ] ; then     cp "${basename}.srt" $$.srt     m0="-vf scale=480:-10,harddup -sub $$.srt -unicode -subcp GB18030 -subfont-text-scale 3";   else     m0="-vf scale=480:-10,harddup";   fi   x0="-lavfopts format=mp4 -faacopts mpeg=4:object=2:raw:br=160 -oac faac -ovc x264 -sws 9 -x264encopts nocabac:level_idc=30:bframes=0:global_header:threads=auto:subq=5:frameref=6:partitions=all:trellis=1:chroma_me:me=umh:bitrate=500 -of lavf -ofps 24000/1001";  mencoder $m0 -fontconfig -font "${font}" $x0 -o "$$.mp4" "$i"  mv "$$.mp4" "${basename}.mp4"  if [ -f "${basename}.mp4" ] ; then     rm "$i"  fidone

转换任意格式的视频到H264

#!/bin/bash#sudo apt-get install faac x264 gpac mplayer mencoderbasename=`echo $1 | sed 's//(.*/)/..*$//1/'`#获得视频的长宽和帧数mplayer -vo null -ao null -identify -frames 0 "$1" 2>/dev/null > video.infoFPS=`cat video.info | grep ID_VIDEO_FPS | cut -d = -f 2`#FPS=23.976W=`cat video.info | grep ID_VIDEO_WIDTH | cut -d = -f 2`H=`cat video.info | grep ID_VIDEO_HEIGHT | cut -d = -f 2`WIDTH=480HEIGHT=`expr $WIDTH /* $H // $W`echo $1 FPS=$FPS WIDTH=$WIDTH HEIGHT=$HEIGHTmkfifo audio.wav video.yuvfaac -o audio.aac audio.wav &mplayer -ao pcm:file=audio.wav:fast -vc null -vo null "$1" x264 --profile baseline --fps $FPS -o video.264 video.yuv ${WIDTH}x${HEIGHT} &mencoder -vf scale=$WIDTH:$HEIGHT,harddup,pp=fd,format=i420 -nosound -ovc raw -of rawvideo -ofps $FPS -o video.yuv "$1"MP4Box -new -add video.264 -add audio.aac -fps $FPS "$basename.mp4"rm video.info audio.aac video.264 audio.wav video.yuv#使用方法将上面的脚本保存为 x264.sh , x264.sh xxx.avi 来进行转化。

压制DVDH264,支持ipod

#sudo apt-get install faac x264 gpac mplayerFPS=29.970mkfifo audio.wavcat VTS_01_1.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_03_1.VOB VTS_04_1.VOB | mplayer -nocorrect-pts -vo null -vc null -ao pcm:file=audio.wav:fast - &faac audio.wav -o audio.aacmkfifo video.y4mcat VTS_01_1.VOB VTS_02_1.VOB VTS_02_2.VOB VTS_03_1.VOB VTS_04_1.VOB | mplayer -vo yuv4mpeg:file=video.y4m -vf scale=480:-3,harddup,pp=fd -nosound - &x264 --profile baseline --muxer mp4 --demuxer y4m video.y4m -o video.mp4MP4Box -add video.mp4 -add audio.aac -fps $FPS video.mp4

图形界面为ipodtouchmp4的方法

先确保有zenitymemcoder

wget http://linuxfire.com.cn/~lily/toIpod -O ~/.gnome2/nautilus-scripts/toIpod && chmod +x ~/.gnome2/nautilus-scripts/toIpod

nautilus里对视频文件点右键,选择"脚本"-"toIpod".

详情请查看出处

mencoder/mplayer反拉丝参数

-vf lavcdeint

合并多个rm文件为一个avi文件

mencoder -ovc lavc 1.rm -oac mp3lame -o 1.avimencoder -ovc lavc 2.rm -oac mp3lame -o 2.avimencoder -idx 1.avi -ovc copy -oac copy -o o1.avimencoder -idx 2.avi -ovc copy -oac copy -o o2.avicat o1.avi o2.avi | mencoder -noidx -ovc copy -oac copy -o output.avi -

CD抓轨为mp3(有损)

#sudo apt-get install abcdeabcde -o mp3 -b

CD抓轨为Flac(无损)

#sudo apt-get install abcdeabcde -o flac -b

ape转换为flac

#sudo apt-get install flac shntool iconviconv -f GB2312 -t UTF-8 example.cue -o example_UTF-8.cueshntool split -t "%n.%p-%t" -f example_UTF-8.cue -o flac example.ape -d flacOutputDir

ape/flac转换为mp3

#sudo apt-get install flac shntool lame #ape 需要安装  monkeys iconv -f GB2312 -t UTF-8 example.cue -o example_UTF-8.cueshntool split -t "%n.%p-%t" -f example_UTF-8.cue -o 'cust ext=mp3 lame --r3mix -b 320 --quiet - %f' example.ape -d mp3OutputDir

批量将ape转为mp3

for i in *.ape; do shnconv -i ape -o "cust ext=mp3 lame -b 320 - %f" "$i" -d mp3OutputDir; done

批量将flac转为mp3

for i in *.flac; do shnconv -i flac -o "cust ext=mp3 lame -b 320 - %f" "$i" -d mp3OutputDir; done

批量将svg转为png

for i in *.svg; do inkscape $i --export-png=`echo $i | sed -e 's/svg$/png/'`; done

批量转换格式到mp3

#sudo apt-get install lame mplayerfor i in *; do base=${i%.*}; mplayer -quiet -vo null -vc dummy -af volume=0,resample=44100:0:1 -ao pcm:waveheader:file="$i.wav" "$i" ; lame -V0 -h -b 192 -vbr-new "$i.wav" "$base.mp3"; rm -f "$i.wav" ; done

批量缩小图片到30%

for i in *.jpg; do convert -resize 30%x30% "$i" "sm-$i"; done

批量转换jpgpng

for i in *.jpg; do convert $i `echo $i | sed -e 's/jpg$/png/'`; done

如何压缩png图片

#sudo apt-get install optipngoptipng -o7 old.png new.png#sudo apt-get install pngcrush#pngcrush -brute old.png new.png

将多张图片合并到一个PDF文件

convert *.jpg out.pdf

批量把pdf转换为txt并格式化

sudo apt-get install poppler-utils poppler-datafind ./ -name '*.txt' | while read i; do cat $i | awk '{if ($0 ~ "^space:”) {printf “/n”$0} else {printf $0}}’ | sed ‘/^space:*digit:*$/d’ | sed ’s/^space:/+/    /’ | sed ’s//”/g’ > “../txt/$i”; done

转换pdfpng

#sudo apt-get install imagemagickconvert -density 196 FILENAME.pdf  FILENAME.png

获取jpg的扩展信息(Exif)

identify -verbose xxx.jpg

获取视频文件xxx.avi的信息

mplayer -vo null -ao null -frames 0 -identify "xxx.avi" 2>/dev/null | sed -ne '/^ID_/ { s/[]()|&;<>`'"'"'//!$" []///&/g;p }'

查看MKV视频文件xxx.mkv的信息

#sudo apt-get install mkvtoolnixmkvinfo -v xxx.mkv

 

抓取桌面操作的视频

ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg

命令行读出文本

espeak -vzh "从前有座山"

命令行抓屏

 scrot -s screenshot.png

压缩

增加7Z压缩软件

#支持 7Z,ZIP,Zip64,CAB,RAR,ARJ,GZIP,BZIP2,TAR,CPIO,RPM,ISO,DEB 压缩文件格式sudo apt-get install p7zip p7zip-full p7zip-rar

增加rar软件压缩和解压缩支持

sudo apt-get install rar unrar

增加zip格式压缩和解压缩支持

sudo apt-get install zip unzip

解压缩xxx.tar.gz

tar -zxvf xxx.tar.gz    解压到指定目录。 -C 是 --directory选项的缩写。
tar -zxvf xxx.tar.gz  --directory   XXX 

解压缩xxx.tar.bz2

tar -jxvf xxx.tar.bz2

压缩aaabbb目录为xxx.tar.gz

tar -zcvf xxx.tar.gz aaa bbb

压缩aaabbb目录为xxx.tar.bz2

tar -jcvf xxx.tar.bz2 aaa bbb

增加lha支持

sudo apt-get install lha

增加解cab文件支持

sudo apt-get install cabextract

Nautilus

显示隐藏文件

Ctrl+h

显示地址栏

Ctrl+l

特殊URI地址

* computer:/// - 全部挂载的设备和网络* network:/// - 浏览可用的网络* burn:/// - 一个刻录 CDs/DVDs 的数据虚拟目录* smb:/// - 可用的 windows/samba 网络资源* x-nautilus-desktop:/// - 桌面项目和图标* file:/// - 本地文件* trash:/// - 本地回收站目录* ftp:// - FTP 文件夹* ssh:// - SSH 文件夹* fonts:/// - 字体文件夹,可将字体文件拖到此处以完成安装* themes:/// - 系统主题文件夹

查看已安装字体

fc-listnautilus的地址栏里输入”fonts:///“,就可以查看本机所有的fonts  (这个似乎不行)

日期和时间

显示日历

cal # 显示当月日历cal 2 2007 # 显示20072月的日历

设置日期

date -s mm/dd/yy

设置时间

date -s HH:MM

将时间写入CMOS

hwclock --systohc

查看CMOS时间

 hwclock --show

读取CMOS时间

hwclock --hctosys

从服务器上同步时间

sudo ntpdate ntp.ubuntu.comsudo ntpdate time.nist.gov

设置电脑的时区为上海

sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

XPUbuntu相差了8小时的时差

#关闭UTC,将当前时间写入CMOSsudo sed -ie 's/UTC=yes/UTC=no/g' /etc/default/rcSsudo hwclock --systohc

工作区

不同工作区间切换

Ctrl + ALT + ←Ctrl + ALT + →或者,将滚轮鼠标放在工作区图标上滚动

控制台

指定控制台切换

Ctrl + ALT + Fn(n:1~7)

控制台下滚屏

SHIFT + pageUp/pageDown

控制台抓图

setterm -dump n(n:1~7)

只是支持tty1-7。没中文。没颜色代码序列。

数据库

mysql的数据库存放路径

/var/lib/mysql

mysql中导出和导入数据

mysqldump 数据库名 > 文件名 #导出数据库mysqladmin create 数据库名 #建立数据库mysql 数据库名 < 文件名 #导入数据库

忘了mysqlroot口令怎么办

sudo /etc/init.d/mysql stopsudo mysqld_safe --skip-grant-tables &sudo mysqladmin -u user password 'newpasswordsudo mysqladmin flush-privileges

修改mysqlroot口令

sudo mysqladmin -u root -p password '你的新密码'

 

如何优化mysql

wget  http://www.day32.com/MySQL/tuning-primer.shchmod +x tuning-primer.sh./tuning-primer.sh

mysql命令行中文显示?

mysql> set names utf8;

常用mysql管理语句

show table status;  #查询表状态show full processlist;  #查询mysql进程alter table site_stats engine=MyISAM;   #转换表为MyISAM类型,转表锁为行锁。show variables;  #查看mysql 变量

控制

如何使用命令关闭显示器

xset dpms force off

设置CPU的频率

sudo apt-get install cpufrequtils #查看cpu当前频率信息sudo cpufreq-info 设置模式,对应于{最省电(最低频率),用户控制,最高或最低,正常,最大性能} cpufreq-set -g {powersave, userspace, ondemand, conservative, performance}

命令关机

sudo haltsudo shutdown -h now              #现在关机

定时关机

sudo shutdown -h 23:00           #晚上11点自动关机sudo shutdown -h +60          #60分钟后关机

命令重启电脑

sudo rebootsudo shutdown -r now

如何修改ssh登录提示

sudo gedit  /etc/motd

如何关闭ssh登录提示

sudo gedit  /etc/ssh/sshd_config 修改这一行为: PrintLastLog no

如何使用命令关闭笔记本的触摸板

synclient touchpadoff=1那么开启触摸板就是:synclient touchpadoff=0

从命令行通知桌面消息

#sudo apt-get install libnotify-binnotify-send "hello world"

统计

统计最常用的10条命令

history | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10 

统计每个单词的出现频率,并排序

awk '{arr[$1]+=1 }END{for(i in arr){print arr[i]"/t"i}}' FILE_NAME | sort -rn

统计80端口的连接个数并按照从大到小排列

netstat -na|grep :80|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n

编辑器

vim中删除技巧

:%s/[Ctrl-v][Enter]//g 删除DOS方式的回车^M:%s= *$== 删除行尾空白:%!sort -u 删除重复行:%s/^.{-}pdf/new.pdf/ 只是删除第一个pdf:%s/// 删除多行注释:g/^$/d 删除所有空行 :g!/^dd/d 删除不含字符串'dd'的行:v/^dd/d 删除不含字符串'dd'的行:g/str1/,/str2/d 删除所有第一个含str1到第一个含str2之间的行:v/./.,/./-1join 压缩空行:g/^$/,/./-j 压缩空行ndw ndW 删除光标处开始及其后的 n-1 个字符。d0 删至行首。d$ 删至行尾。ndd 删除当前行及其后 n-1 行。x X 删除一个字符。Ctrl+u 删除输入方式下所输入的文本。D 删除到行尾x,y 删除与复制包含高亮区dl 删除当前字符(与x命令功能相同)d0 删除到某一行的开始位置d^ 删除到某一行的第一个字符位置(不包括空格或TAB字符)dw 删除到某个单词的结尾位置d3w 删除到第三个单词的结尾位置db 删除到某个单词的开始位置dW 删除到某个以空格作为分隔符的单词的结尾位置dB 删除到某个以空格作为分隔符的单词的开始位置d7B 删除到前面7个以空格作为分隔符的单词的开始位置d) 删除到某个语句的结尾位置d4) 删除到第四个语句的结尾位置d( 删除到某个语句的开始位置d) 删除到某个段落的结尾位置d{ 删除到某个段落的开始位置d7{ 删除到当前段落起始位置之前的第7个段落位置dd 删除当前行d/text 删除从文本中出现“text”中所指定字样的位置,一直向前直到下一个该字样所出现的位置(但不包括该字样)之间的内容dfc 删除从文本中出现字符“c”的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容dtc 删除当前行直到下一个字符“c”所出现位置之间的内容D 删除到某一行的结尾d$ 删除到某一行的结尾5dd 删除从当前行所开始的5行内容dL 删除直到屏幕上最后一行的内容dH 删除直到屏幕上第一行的内容dG 删除直到工作缓存区结尾的内容d1G 删除直到工作缓存区开始的内容

如何配置Emacs

打开新立得或者命令行,查找emacs,选择你想要的版本,比如emacs22或者emacs21.

之后的配置参考Emacs常见问题及其解决方法

vim如何显示彩色字符

sudo cp /usr/share/vim/vimcurrent/vimrc_example.vim /usr/share/vim/vimrc

vim直接支持编辑.gz文件

sudo apt-get install vim-full

vim如何显示行号,在~/.vimrc中加入

set number

如果没有~/.vimrc文件,则可以在/etc/vim/vimrc中加入

set number

vim配色方案(~/.vimrc)

colorscheme scheme可用的 scheme /usr/share/vim/vim71/colors/ 

解决vim中文编码问题,在~/.vimrc中加入

let &termencoding=&encodingset fileencodings=utf-8,gbk,ucs-bom,cp936#再提供一个实践中觉得不错的配置:" Encoding relatedset encoding=UTF-8set langmenu=zh_CN.UTF-8language message zh_CN.UTF-8set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1set fileencoding=utf-8

gedit中文乱码的解决

gconftool-2 --set /apps/gedit-2/preferences/encodings/auto_detected "[UTF-8,CURRENT,GB18030,BIG5,ISO-8859-15,UTF-16]" --type list --list-type string

编译和打包

安装通用编译环境

sudo apt-get install build-essential

通用的编译安装步骤

./configure && make && sudo make install

如何编译安装软件kate

sudo apt-get install apt-buildsudo apt-build install kate

获得源代码包

sudo apt-get source mysql-server
     会在当前目录下载源码压缩包,并自动解压。
     yum仓库使用如下命令下载源码包:
  yumdownloader --source  mysql-server.x86_64

    Redhat的源码包在如下地址:   
ftp://ftp.redhat.com/pub/redhat/linux/enterprise/6Server/en/os/SRPMS/
      这是RHEL6的源码包的地址。   其他版本的RHEL,在对应的ftp目录下。    

编译源代码

编译源代码时,常常会依赖很多软件包,要一个个找出这些软件包并安装不是一件容易的事。
     如果ubuntu的apt源中有官方的deb包,那么我们可以用一条简单的命令安装所有依赖的软件包。
sudo apt-get build-dep  X
    X 用包名替代。
   

解压缩还原源代码包

dpkg-source -x mysql-dfsg-5.1_5.1.30-1.dsc
      也可以使用上述命令手工解压下载的源码包。

安装编译打包环境

sudo apt-get build-dep mysql-server

重新编译并打包Debian化的源码

dpkg-buildpackage -rfakeroot

获得源码并重新打包

apt-get source php5-cgi  #或手工下载源码后使用 dpkg-source -x  php5_5.2.6.dfsg.1-3ubuntu4.1.dsc 解开源码sudo apt-get build-dep php5-cgicd php5-5.2.6.dfsg.1dpkg-buildpackage -rfakeroot -uc -b

给源代码打补丁

patch -p0 < mysql.patch

其它

把终端加到右键菜单

sudo apt-get install nautilus-open-terminal 

如何删除Totem电影播放机的播放历史记录

rm ~/.recently-used

清除桌面挂载硬盘图标

gconftool-2 --set /apps/nautilus/desktop/volumes_visible 0 --type bool

恢复:

gconftool-2 --set /apps/nautilus/desktop/volumes_visible 1 --type bool

如何更换gnome程序的快捷键

点击菜单,鼠标停留在某条菜单上,键盘输入任意你所需要的键,可以是组合键,会立即生效;如果要清除该快捷键,请使用backspace

基于OpenVZVPS支持OpenVPN对外访问设置

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE#iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j SNAT --to-source VPS-IP-ADDRESS

GNOME登录时自动运行程序

系统->首选项->会话->

启动程序 

man如何显示彩色字符

vim ~/.bashrc#增加下面的内容:export LESS_TERMCAP_mb=$'/E[01;31m'export LESS_TERMCAP_md=$'/E[01;31m'export LESS_TERMCAP_me=$'/E[0m'export LESS_TERMCAP_se=$'/E[0m'export LESS_TERMCAP_so=$'/E[01;44;33m'export LESS_TERMCAP_ue=$'/E[0m'export LESS_TERMCAP_us=$'/E[01;32m'#生效文件#source .bashrc

如何在命令行删除在会话设置的启动程序

gnome桌面的启动程序放置在两个位置:
/etc/xdg/autostart/是系统级别的自动启动程序目录。  作用于系统中所有用户上。
~/.config/autostart/是当前用户的自动启动程序目录。 作用于当前用户上。
     
cd ~/.config/autostart
cd /etc/xdg/autostart
rm 需要删除启动程序

如何提高wine的反应速度

sudo sed -ie '/GBK/,/^}/d' /usr/share/X11/locale/zh_CN.UTF-8/XLC_LOCALE


可能造成某些游戏帧数降低 

如何命令行刻录

mkisofs -o test.iso -Jrv -V test_disk /home/carla/cdrecord -scanbusscsibus1: 1,1,0 101) 'HL-DT-ST' 'CD-RW GCE-8481B ' '1.04' Removable CD-ROMcdrecord -v -eject speed=8 dev=1,1,0 test.iso

http://www.ibm.com/developerworks/cn/linux/l-cdburn/index.html

延迟抓图

gnome-screenshot -d 10 #延迟10秒抓图gnome-screenshot -w -d 5 #延迟5秒抓当前激活窗口

回收站在哪里

Ubuntu8.04 Gnome 2.22.2 以后在 $HOME/.local/share/Trash/Ubuntu8.04 之前在 $HOME/.Trash/

强制清空回收站

sudo rm -fr $HOME/.local/share/Trash/files/

默认打开方式的配置文件在哪里

#全局/etc/gnome/defaults.list #个人~/.local/share/applications/mimeapps.list

Firefox的缓存目录在哪里

ls ~/.mozilla/firefox/*.default/Cache/

查看samba的用户

sudo pdbedit -L

增加一个用户到samba

sudo pdbedit -a username

samba账户中删除一个用户

sudo pdbedit -x username

显示samba账户信息

sudo pdbedit -r username

测试samba账户是否正常

smbclient -L 192.168.1.1 -U username -d 3

samba的数据库存在哪里

/var/lib/samba/passdb.tdb

samba用户Windows下无法登录

Windows的运行输入 cmd ,进入终端,输入 net use 命令,将显示已经连接的帐号如 //192.168.1.1/username再输入 net use  //192.168.1.1/username /delete 删除现有的共享连接,再尝试进入另外一个目录就可以正常登录了。

Pidgin的聊天记录在哪里

~/.purple/logs/

安装PDF打印机

sudo apt-get install cups-pdf#打印生成的pdf文件在 ~/PDF 文件夹里面

nvidia快速重设显示设置及配置多显示器

sudo dpkg-reconfigure xserver-xorgsudo nvidia-xconfig#nvidia-settings 用于设置分辨率和多显示器sudo nvidia-settings

kacpid进程大量占用CPU

硬件驱动中不要激活无线网卡驱动即可

替换上一条命令中的一个短语

^foo^bar^!!:s/foo/bar/

AMD64位系统安装免费的杀毒软件avast!

wget http://files.avast.com/files/linux/avast4workstation_1.3.0-2_i386.debsudo dpkg --force-architecture -i avast4workstation_1.3.0-2_i386.debsudo apt-get install ia32-libs#然后打开 http://www.avast.com/registration-free-antivirus.php 去申请免费一年的许可证号
以上技巧转自:http://wiki.ubuntu.org.cn/UbuntuSkills#.E6.9F.A5.E7.9C.8BPCI.E8.AE.BE.E5.A4.87

stat命令

stat  filename/foldname
查看文件或者目录的详细信息。  注意:linux文件系统是不记录文件的创建时间的。没有任何办法可以查到这个信息。
stat命令得到的信息,来自int stat(const char *path, struct stat *buf);函数。

我来加一些东西:
用LiveCD修复ubuntu的Grub
用livecd启动,在终端下输入sudo  fdisk -l  查看硬盘分区状况。找到已经安装的Ubuntu系统。找到root分区,boot分区等。这里架设sda7是root分区,sda6是boot分区。sudo mount /dev/sda7 /mntsudo mount /dev/sda6 /mnt/boot (如果没 /boot 单独分区这步跳过)sudo grub-install --root-directory=/mnt   /dev/sda     这个命令把/mnt分区下的grub配置文件写入第一个硬盘的boot扇区。   要装入第二硬盘的把sda改为sdb。以此类推。如果grub.cfg己丢失,或grub.cfg出现错误,需要 重建的,执行下面操作:把LiveCD系统的一些设备文件系统信息绑定到我们mount的系统上,以使其成为一个真正的操作系统。sudo mount --bind /proc /mnt/procsudo mount --bind /dev /mnt/devsudo mount --bind /sys /mnt/sys下面命令可以自动生成grub.cfg文件,并写入boot扇区。sudo chroot /mnt update-grubsudo umount /mnt/syssudo umount /mnt/devsudo umount /mnt/procexit
切换回英文环境避免命令行下中文显示为方块
在图形界面下的虚拟终端中,中文可以正常显示。但是在真正的终端下中文是不能显示的,都是方块。
export LC_ALL=C 可以临时在终端下切换回英文环境。切换会英文环境可以方便查看错误信息。

evolution电子邮件软件

它的数据保存在用户目录下的.evolution目录下。  .开头的文件和文件夹是Linux的隐藏文件和文件夹。

文件->备份设置/恢复设置,可以把evolution下所有邮件备份为一个压缩文件,也可以从一个压缩文件恢复出所有邮件。

 

配置网卡

dmesg | grep eth 查看网卡eth0这个设备有没有被识别。

一般会显示eth0的相关信息。如果你有多个网卡插在电脑上(或者曾经有),那么会显示eth1等网卡的信息。

vi /etc/network/interfaces,这个文件是配置物理网卡地址和虚拟网卡地址的地方。

auto eth0

iface eth0 inet dhcp

这个网卡从dhcp自动获取地址。

也可以是

iface eth0 inet static

然后手工指定地址:

address 172.16.10.78

netmask 255.255.255.0

network 172.16.10.0

broadcast 172.16.10.255

gateway 172.16.10.1

 dns-nameservers 114.114.114.114  8.8.8.8  4.4.4.4

 

使用虚拟网桥的配置

我这里虚拟网桥使用eth0作为出口。因此eth0本身就不能配置ip地址。

首先安装 

sudo apt-get install bridge-utils
bridge-utils 包让你能够设置网桥。

auto eth0

iface eth0 inet manual #ip地址在网桥上配置。

auto br0

iface br0 inet static

address 172.16.10.78

gateway 172.16.10.1

netmask 255.255.255.0

bridge_ports eth0

bridge_fd 9

bridge_hello 2

bridge_maxage 12

bridge_stp off

 

光盘

光盘是/dev/scd0 这个设备。因此mount cdrom就需要mount这个设备。

/dev/scd0实际是/dev/sr0的超链接。

有些Linux发行版还有/dev/cdrom。这个文件实际上也是/dev/sr0的超链接。

 

修复apt-get系统

根据提示进行修复,一般是apt-get install 包名  后加上 --fix-missing  或者 -f

如果还是不行,使用如下命令修复:

sudo dpkg --configure -a 
修复dpkg的错误。如果无法修复,根据提示删除出错的包。


如果无法用apt-get 删除,可以使用新立得软件包  重新安装,或者 彻底删除,然后再重新安装出现问题的软件包。


ubuntu添加共享库路径

1. 将绝对路径写入 /etc/ld.so.conf 文件  或者  /etc/ld.so.conf.d/目录下的文件中。

2. 执行ldconfig。这会搜寻所有共享库,更新共享库数据库。 

     有些粗心的程序员,在make install 命令安装了共享库之后,没有执行ldconfig,那么使用时就会出现问题。

如,有的libvirt版本报错:

libvirtd: error while loading shared libraries: libvirt-qemu.so.0: cannot open shared object file: No such file or directory 

      命名这个文件就在/usr/local/lib目录下,而且/usr/local/lib目录也在 : /etc/ld.so.conf 文件  或者  /etc/ld.so.conf.d/目录下的文件中指定了。

       这就是因为粗心的程序员没有在安装共享库之后,没有执行ldconfig,因此系统共享库数据库并没有这个共享库的信息。

解决方法很简单,执行:

ldconfig。

       然后就不会报告上述错误了!

sudo ldconfig -v 列出系统中所有安装的库文件。



pkg-config命令和.pc文件

一些库,实现了.pc文件,也就是支持pkg-config工具。
gcc program.c `pkg-config --cflags --libs gnomeui`
pkg-config --list-all列出所有已经安装的支持.pc的库。

查看debian包中的库文件

查找已安装的debian包:
dpkg -l  
apt-file search 库文件 找到对应的文件。


gcc需要的库文件,就是.so/.la文件的无扩展名部分。并且把前缀lib去掉。   格式为:   -l库名。    或者库的绝对路径名。

Ctrl-Alt-D 切换到 桌面

 

Linux操作系统得镜像

Sohu有很多Linux操作系统得镜像:http://mirrors.sohu.com/。

如何使用请看对应得help页面。

如Fedora页面的帮助:http://mirrors.sohu.com/help/fedora.html

 

make -j [N] 参数

make 参数 -j [N], --jobs[=N] 同时允许 N 个任务;无参数表明允许无限个任务。

这个数量应该等于你的CPU的逻辑处理器数量,此时性能最高。

如我的i7处理器是4个core,每一个core都支持超线程,因此有8个逻辑处理器,我就设置 make -j 8。 此时make程序效率最高!

 

ibus故障恢复

ibus如果出现故障,那么就选择重新启动。

如果还不行,那么用ps查看ibus进程号,然后kill掉所有ibus进程。

然后重新启动ibus进程。

ibus-daemon会启动ibus的服务程序,现在ibus输入法又可用了。

ibus-setup会弹出一个ibus配置界面,如果因为配置问题造成ibus不可用,可以用它重新配置ibus选项。

现在应该就可以使ibus恢复正常了。

 

Eclipse和CodeLite查找文件,都使用Ctrl-Shift-R快捷键。

 


虚拟控制台的配置

/etc/init/tty 目录下的配置文件管理控制台 tty1.conf tty2.conf tty3.conf tty4.conf tty5.conf tty6.conf

如下,我的电脑上默认有6个控制台。按Ctrl—Alt-F1[到F6] 就可以切换到对应的控制台下。 Ctrl—Alt-F7是ubuntu的图形界面。Ctrl—Alt-F8及以上没有。

如果你删除这些配置文件,那么对应的Ctrl-Alt-Fn就没有控制台出现。

如果你定制计算机系统,那么可以通过删除这些配置文件保证用户无法离开你定制的系统界面。

一共可以设置64个虚拟控制台。但是因为PC上只有12个Fn键,所以实际只能设置12个虚拟控制台。

 

tty1.conf配置文件的内容:

# tty1 - getty #

# This service maintains a getty on tty1 from the point the system is

# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]

stop on runlevel [!2345]

respawn

exec /sbin/getty -8 38400 tty1

 

tty命令打印当前的tty设备。

 

得到硬盘分区对应的uuid

ls -l /dev/disk/by-uuid/  命令,查看各个分区对应的uuid。 如果使用/dev/sdb4这样的分区号。那么在插入U盘,移动硬盘等时启动ubuntu,可能会因为排序错误,而mount错误的分区,或者无法mount分区。因为此时的sda,sdb,sdc,sdd等可能对应了不同的硬盘设备。而uuid是全球唯一的,不可能mount错误的分区。因此在/etc/fstab中应该mount uuid 而不是/dev/sdb1这样的分区号。

 

测试文件系统IO性能

         iozone程序可以用来测试文件系统的IO性能。它不同于hdparm -t 磁盘设备   命令可以直接测试裸设备的顺序读取的性能。   它是在文件系统之上进行IO测试的,因此,必须注意对CPU cache和内核Buffer对IO性能加速的影响。  

        为了避免Buffer对IO性能加速的影响,应该使用>=2*物理内存   的文件,来进行测试。

        如,我的计算机是2GB内存,我使用如下命令测试文件系统的顺序读、写和随机读写性能。

     sudo  iozone  -i  0  -i  1  -i 2  -s 4g  -r 32k  -Rab ./iozone.xls

       -i #表示要求做的测试项目。 

0=write/rewrite,1=read/re-read, 2=random-read/write

3=Read-backwards,4=Re-write-record, 5=stride-read, 6=fwrite/re-fwrite,7=fread/Re-fread,

8=randommix, 9=pwrite/Re-pwrite, 10=pread/Re-pread, 11=pwritev/Re-pwritev,12=preadv/Repreadv


     可以多次使用-i 选项,表示执行多种测试。

     -s  表示文件大小。  默认单位是k字节。m表示MB,g表示GB。

     -r    一次读写的块大小。  

      也可以使用返回表示的文件和块大小。      -n  文件最小尺寸。  -g 文件最大尺寸。    -y 块最小尺寸。  -q 块最大尺寸。

     -R 生成报表。

     -b  文件名     生成的excel文件名。     测试结果报表数据就保存在这个文件中。

       iozone在哪一个目录里执行,就会在哪一个目录里进行文件读写测试。  

      还有很多其他命令参数,请查看官方手册。

      



Linux Mount NTFS分区造成的权限问题的解决方案

      我的Linux自动mount NTFS分区时,在我解压文件夹时总用一些文件报错。  我用ls -lia命令查看了一下权限,发现自动mount的NTFS分区的所有人是root,属于plugdev这个组。   虽然我仍然可以自由copy、remove、edit文件, 但是解压总是报错。
      我试图使用chmod和chown对整个NTFS分区的文件和文件夹修改属主为我,修改权限为777。虽然程序提示执行成功,但是执行ls -lia命令发现这两个命令根本没起作用。
     

     使用sudo vim /etc/fstab,发现配置是这样的。


UUID=58D03D91D03D767A /mounts/workdisk ntfs     defaults,nls=utf8,umask=022,gid=46        0       0

 


       我查看了/etc/group后发现,gid=46是plugdev这个组。  而umask是777减去的值,因此权限最后编程了都是755.
      我做了如下修改:


UUID=58D03D91D03D767A /mounts/workdisk ntfs     defaults,nls=utf8,umask=000,uid=1000,gid=1000        0       0


      umask都是000,这样权限都是777.  我查看了/etc/passwd文件,发现我的账户的号码是1000, 我的组的号码也是1000,因此做了上述改变。
     重启系统后,NTFS分区的所有文件属主都是我。权限都是777。再解压文件就不会报错了。

查看块设备和字符设备的主设备号

cat /proc/devices

查看分区的主从设备号

cat /proc/partitions

查看iScsi target导出的LUN对应的本地映射磁盘的信息

iscsiadm -m session -P 3

  -P打印不同级别的信息。默认0,最少的信息。3是最多的信息。 只能指定0-3数字。   

-r sessionID   可以查看一个iscsi session。

   session表示iscsi client当前连接的iscsi node的信息。

小键盘有时失效

        Ubuntu的一个老问题,就是小键盘时常会失效。虽然NumLock灯亮着,但是没有反应了。

        碰到这种情况,按下 shift + alt 和 NumLock快捷键,小键盘就又恢复正常了!

销毁磁盘数据

利用随机的数据填充硬盘:

 dd if=/dev/urandom of=/dev/hda1 

该方法可以用来销毁数据。执行此操作以后,/dev/hda1 将无法挂载,创建和拷贝操作。


有时不小心把面板弄乱了,可以这样恢复默认的面板布局

     Ubuntu有上下两个面板。有时不小心把面板弄乱了,错误删除了一些面板项目。此时可以这样恢复默认的面板布局。
命令行执行:

gconftool-2 --set  /apps/panel/general/toplevel_id_list --type=list --list-type=string []

      现在,ubuntu桌面上应该没有任何面板了。

     然后重新启动计算机。 就可以看到Ubuntu又帮你把默认的面板给你呈现出来了。

查看文件的大小

ls -l  

    上述命令,以字节为单位查看文件大小。

ls -l --block-size=T/G/M/K

      上述命令,可以以TB,GB,MB,KB为单位查看文件大小。

安装SUN公司的JDK

sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"sudo apt-get updatesudo apt-get install sun-java6-jdk
sudo vim /etc/profile文件,加入如下环境变量:

PATH=/opt/libjpeg-turbo/bin:/usr/lib/jvm/java-6-sun/bin:$PATH
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export CLASSPATH=/usr/lib/jvm/java-6-sun/lib
export PATH

      如果不设置环境变量,则SUN公司的Java环境还没有成功设置。java程序无法运行。

lsb_release -a  打印Linux操作系统发行版信息。

uname -a  打印Linux内核版本信息。

查看内核日志:   tail -f /var/log/messages

查看内核输出信息:  dmesg


重新安装出现问题的软件包

       有时,我们发现一些程序无法正常工作了。此时,就需要重新安装软件包。但怎么才能知道出问题的程序属于哪个软件包呢,方法如下:

1,which  programName

      这可以找到出现问题的程序的全路径。

2,apt-file search  programName

      这个命令可以搜索到包含该程序的deb包的名字。


      然后,我们就可以卸载这个deb包,再用apt-get命令重新安装软件包。   一般情况下,问题就解决了。


查看当前使用的DNS服务器:

dig命令

查看或者设置DNS服务器:

vim /etc/resolv.conf

格式是  nameserver  ip地址

注意:

        在ubuntu12.04及其后续版本中,手工对/etc/resolv.conf文件的修改,都会在重启网络服务

/etc/init.d/networking restart   后被删除。

      如果不重启网络服务,对/etc/resolv.conf的修改则会立刻生效。    


       现在,应该修改这个文件:

/etc/resolvconf/resolv.conf.d/head

格式还是:格式是  nameserver  ip地址

         /etc/init.d/networking restart   重启后,就会把该文件中输入的dns服务器写入到/etc/resolv.conf文件中。

        现在,实际上是 /etc/init.d/resolvconf   这个服务在处理dns服务器。   /etc/init.d/networking会调用/etc/init.d/resolvconf  这个服务。

       你也可以在修改/etc/resolvconf/resolv.conf.d/head文件的内容后,直接使用   /etc/init.d/resolvconf  restart  命令,应用新的dns服务器。


 sudo resolvconf -u     可以自动更新dns。  它首先读取/etc/resolvconf/resolv.conf.d/head文件的内容,然后到网关获得dns服务器列表,拼合在一起构成dns列表。

实际上,dhclient, ifup, ifdown, dnsmasq等程序都是通过调用这个程序来更新dns服务器列表的。

      

 /etc/init.d/networking restart/start  在网线断开时,会一直阻塞,不会超时。 操作系统启动时,如果没有插网线则会超时。可能操作系统启动时调用了其他程序来控制网络启动。


另一个更简单的DNS服务器配置方法,是在/etc/network/interfaces文件中直接加入一行:   

 dns-nameservers 114.114.114.114  8.8.8.8  4.4.4.4

       这里的配置也会持久化保存。



复制目录:

      复制目录时,在有超链接时,可能会错误建立到源目录的链接。这样就会在源目录不存在时,发生超链接指向错误。

      正确的复制目录命令如下:

rsync -av sourceDir destDir
     -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

cp -rT sourceDir destDir
     -T选项,将目标目录视作普通文件。


selinux安全模式的开启和关闭

     selinux加强了对资源的安全管理,有时会造成我们的程序在存取资源时出错。

getenforce命令可以查看当前selinux的状态。

     selinux有三种模式:

# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.

setenforce 0命令可以使selinux进入宽容模式,就是仅仅警告不安全的操作。

setenforce 1命令可以使selinux进入强制模式。


      要想永久开启或者关闭selinux,就需要修改/etc/sysconfig/selinux配置文件。

      重启后生效。


       对于像ubuntu这样没有/etc/sysconfig/selinux配置文件的linux系统,可以修改grub,加上选项selinux=0来禁止selinux。

如:

kernel /boot/vmlinuz-2.4.20-selinux-2003040709 ro root=/dev/hda1 nousbselinux=0


如果要启用selinux,就设置selinux=1。


强制写缓存写入磁盘

sync  命令,强制写缓存写入磁盘。正常情况下,写入内容会在内核内存中缓存。每隔几分钟才会由内核线程写入磁盘。这可以优化性能。内核可以在写入时合并和调整IO Request,从而提高写入的性能。

       但是,这也可能会引起数据丢失。如果操作系统崩溃,那么在缓存中没有同步的写入IO Request就会丢失。

       sync命令可以强制将写缓存写入磁盘。

       umount一个文件系统时,内部也会执行sync过程,将所有未写入的数据刷入磁盘。


定制ubuntu安装光盘

       定制ubuntu安装光盘时,可以修改preseed文件,实现安装过程的自动化。

       自动化的可用选项,不同版本的ubuntu操作系统都是不同的。可以通过如下命令,查看当前ubuntu系统下的所有可用preseed选项:

sudo apt-get install debconf-utils    # It is part of the debconf-utils package.
debconf-get-selections --installer > somefile.txtdebconf-get-selections >> somefile.txt

修改deb包的方法

dpkg-deb命令可以解压缩deb包。是的,deb包是一个压缩文件。正如office文档,也是压缩文件。Jar包也是压缩文件一样。

 dpkg-deb --raw-extract   X.deb  X  

    解压X.deb包到X目录。

     可以修改X目录内的文件。

      

dpkg-deb --build    X [X.deb]

     构建目录为deb包。  第二个参数可以省略,就是生成  目录名.deb  格式命名的deb包。


dpkg  -i  X.deb

   命令可以安装deb包。


deb包内的DEBIAN/control文件有很多元数据,其中:

Architecture:    

一项设定该debian包适用的CPU架构。 常用的有i386,amd64。 使用all 或者any 表示这个deb包适用于任何架构。

mii-tool

  mii-tool(这是Linux下专门设置网卡工作模式的命令)
  很多以太网卡设备并不支持这些参数的配置,因此当你执行mii-tool的时候,会得到Operation not supported的提示,要不就是没有使用超级用户身份,还有就是若接口编号设置超过eth7时,直接使用mii-tool 不加参数,会出现NO MII xxxxxxxxxx interface 之类的提示,是因为超过了默认值,使用帮助信息可以了解。
       1,sudo mii-tool  会列出所有以太网卡的信息,以及是否处于连接状态。
sudo mii-tool 
eth0: negotiated 100baseTx-FD flow-control, link ok
  2, 查看网卡的更详细信息,可以使用-v选项。
  sudo mii-tool -v
eth0: negotiated 100baseTx-FD flow-control, link ok
  product info: vendor 00:07:32, model 17 rev 2
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
  link partner: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
  从以上信息中可以看出,这块网卡工作在100M全双工自适应模式下,“100BaseTx-FD”意为100M Full Duplex。
  3,更改网卡的工作模式,输入命令:
  #mii-tool -F media [interface]
  media可选的模式有100baseTx-FD、100baseTx-HD、10baseT-FD、10baseT-HD等。 Interface代表所选择的网卡,如eth0、eth1等,默认为eth0。
  例如,设置网卡工作在10M半双工模式下,输入命令:
  #mii-tool -F 10baseT-HD eth0
  4,恢复网卡的自适应工作模式,输入命令:
  #mii-tool -r eth0
  更详细的使用方法可以用mii-tool -h来获得。

包管理工具
查找软件包

dpkg --get-selections pattern #查找软件包名称包含 pattern 的软件包,可以在后面用 grep

 install/deinstall 来选择是否已经被 remove 的包(曾经安装过了的)

apt-cache search pattern #查找软件包名称和描述包含 pattern 的软件包 (可以是安装了也可以是没有

安装),可以用参数来限制是否已经安装

aptitude search ~i #查找已经安装的软件包

aptitude search ~c #查找已经被 remove 的软件包,还有配置文件存在

aptitude search ~npattern #查找软件包名称包含 pattern 的软件包 (可以是安装了也可以是没有安装)

aptitude search \!~i~npattern #查找还没有安装的软件包名字包含 pattern 的软件包。(前面的 ! 是取

反的意思,反划线是 escape 符号)

注:还有很多用法,可以去看看我在 forum 中写的帖子 aptitude Search Patterns[1]

apt-cache depends package #查找名称是 package 软件包的依赖关系

aptitude search ~R~npackage #查找名称是 package 软件包的依赖关系,可以同时看到是不是已经安装

apt-cache rdepends package #查找哪些软件包依赖于名称是 package 软件包

aptitude search ~D~npackage #查找哪些软件包依赖于名称是 package 软件包

dpkg -I package_name.deb #参数是大写i,查找已经下载但末安装的 package_name.deb 软件包的

信息

dpkg -l package #参数是小写L,查找已经安装软件包 package 的信息,精简

apt-cache show pattern ##查找软件包pattern的信息 (可以是安装了也可以是没有安装)

aptitude show ~npattern #显示名称是 pattern 软件包的信息(可以是安装了也可以是没有安装)

apt-cache policy pattern #显示 pattern 软件包的策略(可以是安装了也可以是没有安装)

apt-cache showpkg pattern #显示pattern 软件包的其它信息(可以是安装了也可以是没有安装)

dpkg -S pattern #查找已经安装的文件 pattern 属于哪个软件包

apt-file search pattern #查找文件 pattern 属于哪个软件包(可以是安装了也可以是没有安装)

dpkg -c package_name.deb #查找已经下载但末安装的 package.deb 软件包包含哪些文件

dpkg -L package #查找已经安装 package 软件包包含哪些文件

apt-file show pattern #查找 pattern 软件包(可以是安装了也可以是没有安装)包含哪些文件

下载软件包

apt-get install package -d #下载软件包

aptitude download pattern #同上,不同的是下载的是符合 pattern 的软件包,后面不再指出

安装软件包

dpkg -i package_name.deb #安装本地软件包,不解决依赖关系

apt-get install package #在线安装软件包

aptitude install pattern #同上

apt-get install package --reinstall #重新安装软件包

apitude reinstall package #同上

移除软件包

dpkg -r package #删除软件包

apt-get remove package #同上

aptitude remove package #同上

dpkg -P #删除软件包及配置文件

apt-get remove package --purge #删除软件包及配置文件

apitude purge pattern #同上

自动移除软件包

apt-get autoremove #删除不再需要的软件包

注:aptitude 没有,它会自动解决这件事

清除下载的软件包

apt-get clean #清除 /var/cache/apt/archives 目录

aptitude clean #同上

apt-get autoclean #清除 /var/cache/apt/archives 目录,不过只清理过时的包

aptitude autoclean #同上

编译相关 apt-get source package #获取源码

apt-get build-dep package #解决编译源码 package 的依赖关系

aptitude build-dep pattern #解决编译源码 pattern 的依赖关系

平台相关

apt-cross --arch ARCH --show package 显示属于 ARCH 构架的 package 软件包信息

apt-cross --arch ARCH --get package #下载属于 ARCH 构架的 package 软件包

apt-cross --arch ARCH --install package #安装属于 ARCH 构架的 package 软件包

apt-cross --arch ARCH --remove package #移除属于 ARCH 构架的 package 软件包

apt-cross --arch ARCH --purge package #移除属于 ARCH 构架的 package 软件包

apt-cross --arch ARCH --update #升级属于 ARCH 构架的 package 软件包

注:慎重考虑要不要用这种方法来安装不同构架的软件包,这样会破坏系统。对于 amd64 的用户可能需要

强制安装某些 i386 的包,千万不要把原来 amd64 本身的文件给 replace 了。最好只是安装一些 lib 到

 /usr/lib32 目录下。同样地,可以用 apt-file 看某个其它构架的软件包包含哪些文件,或者是文件属于哪个

包,不过记得最先要用 apt-file --architecture ARCH update 来升级 apt-file 的数据库,在 search 或

 show 时也要指定 ARCH。

更新源

apt-get update #更新源

aptitude update #同上 

更新系统

apt-get upgrade #更新已经安装的软件包

aptitude safe-upgrade #同上

apt-get dist-upgrade #升级系统

aptitude full-upgrade #同上

连接和管理Apple设备
    Apple使用iTunes管理它的移动设备。但是iTunes只有MacOS和Windows版本,并没有发布Linux版。
    libimobiledevice 是一个开源的项目,用于在Linux下链接和管理Apple的移动设备(iOS操作系统)。
     ubuntu12.04下执行如下命令:
sudo apt-get install libimobiledevice-dev libimobiledevice2 libplist-utils ideviceinstaller libimobiledevice-utils

      然后把Apple的移动设备连接到计算机的usb口上,就可以在 “文件夹” 上看到mount了该设备了。 
      libimobiledevice 破解了Apple管理iOS设备的usb协议,因此它比iTunes更强大,不仅可以看到应用程序,而且可以直接探索应用程序的所有目录和文件。
     libimobiledevice 是黑iOS操作系统的神兵利器,也可以用来探索现有iOS的应用的文件结构。
      

统计整个目录下代码行数的简单方法:

 wc -l `find ./ -name "*.c"`

 wc -l `find ./ -name "*.h"`


       其他语言也类似:  *.cpp,*.java,*.py,*.rb,*.js    etc.


输入法有问题如何解决

      ibus输入法不稳定,常常有问题,重启输入法一般可以解决问题。

杀掉ibus服务

sudo killall  -9 ibus-daemon

重新启动ibus服务

ibus-daemon -d



netpbm


NetpbmLinux下的一套工具,它可以在不同的图片格式之间相互转换。它包括300多个命令行工具在100多种不同的图片格式之间相互转换!  有了netpbm,妈妈再也不会为了我的图片发愁了:)
官方文档: http://netpbm.sourceforge.net/doc/
 Converters
       ppmtompeg
              convert series of PPM frames to an MPEG movie
       jpegtopnm
              convert JFIF/JPEG/EXIF file to Netpbm format
       pnmtojpeg
              convert PPM to JPEG/JFIF/EXIF format
       anytopnm
              convert any graphics format to Netpbm format
       bmptoppm
              convert Windows or OS/2 Bitmap file to PPM
       ppmtobmp
              convert PPM to Windows or OS/2 Bitmap file
       winicontoppm
              convert Windows icon file to PPM
       ppmtowinicon
              convert PPM to Windows icon file
       giftopnm
              convert GIF to portable anymap
       ppmtogif
              convert PPM to GIF
       pnmtopng
              convert Netpbm format to Portable Network Graphics
       pngtopnm
              convert PNG (Portable Network Graphics) to Netpbm formats
       palmtopnm
              convert Palm pixmap to Netpbm formats
       pnmtopalm
              convert Netpbm formats to Palm pixmap
       jbigtopbm
              convert JBIG BIE (compressed bitmap) to PBM
       pamtopnm
              convert a PAM image to PBM, PGM, or PPM
       pbmtojbig
              convert PBM to JBIG BIE (compressed bitmap)
       pnmtofiasco
              convert Netpbm image to Fiasco (wfa) highly compressed format
       fiascotopnm
              convert Fiasco (wfa) highly compressed format to Netpbm image
       hpcdtoppm
              convert photo CD to PPM
       pbmtonokia
              convert PBM to Nokia Smart Messaging Format (SMF)
       pbmtowbmp
              convert PBM to WAP (Wireless App Protocol) Wireless Bitmap
       wbmptopbm
              convert WAP (Wireless App Protocol) Wireless Bitmap to PBM
       neotoppm
              convert Atari Neochrome (.neo) image to PPM
       ppmtoneo
              convert PPM image to Atari Neochrome (.neo)
       pbmtomda
              convert from PBM to Microdesign (for Amstrad PCWs)
       mdatopbm
              convert from Microdesign (for Amstrad PCWs) to PBM
       atktopbm
              convert Andrew Toolkit raster object to PBM
       pbmtoatk
              convert PBM to Andrew Toolkit raster object
       brushtopbm
              convert Xerox doodle brushes to PBM
       cmuwmtopbm
              convert CMU window manager format to PBM
       g3topbm
              convert Group 3 FAX to PBM
       pbmtog3
              convert PBM to Group 3 FAX
       icontopbm
              convert Sun icon to PBM
       pbmtoicon
              convert PBM to Sun icon
       gemtopnm
              convert GEM .img format to PBM or pixmap
       macptopbm
              convert MacPaint to PBM
       pbmtomacp
              convert PBM to MacPaint
       mgrtopbm
              convert MGR format to PBM
       pbmtomgr
              convert PBM to MGR format
       pi3topbm
              convert Atari Degas .pi3 to PBM
       pbmtopi3
              convert PBM to Atari Degas .pi3
       xbmtopbm
              convert X10 or X11 bitmap to PBM
       pbmtoxbm
              convert PBM to X11 bitmap
       pbmtox10bm
              convert PBM to X10 bitmap
       ybmtopbm
              convert Bennet Yee "face" file into PBM
       pbmtoybm
              convert PBM into Bennet Yee "face" file
       pbmto10x
              convert PBM to Gemini 10x printer graphics
       pbmtoascii
              convert PBM to ASCII graphic form
       asciitopgm
              convert ASCII character graphics to PGM
       pbmtobbnbg
              convert PBM to BBN BitGraph graphics
       pbmtocmuwm
              convert PBM to CMU window manager format
       pbmtoepson
              convert PBM to Epson printer graphics
      pbmtogem
              convert PBM into GEM .img file
       pbmtogo
              convert PBM to GraphOn graphics
       pbmtolj
              convert PBM to HP LaserJet black and white graphics
       ppmtolj
              convert PPM to HP LaserJet color graphics (PCL)
       pjtoppm
              convert HP PaintJet file to PPM
       ppmtopj
              convert PPM to HP PaintJet file
       thinkjettopbm
              convert HP Thinkjet printer stream to PBM
      pbmtoplot
              convert PBM into Unix plot(5) file
       pbmtoptx
              convert PBM to Printronix graphics
       pbmtozinc
              convert PBM to Zinc Interface Library icon
       fitstopnm
              convert FITS format to portable anymap
       pnmtofits
              convert Netpbm formats to FITS format
       fstopgm
              convert Usenix FaceSaver(tm) format to PGM
       pgmtofs
              convert PGM to Usenix FaceSaver(tm) format
       hipstopgm
              convert HIPS format to PGM
       lispmtopgm
              convert a Lisp Machine bitmap file into PGM format
       pgmtolispm
              convert PGM into Lisp Machine format
       pnmtops
              convert Netpbm formats to Postscript
       pstopnm
              convert Postscript to Netpbm formats
       psidtopgm
              convert PostScript "image" data to PGM
       pbmtolps
              convert PBM image to Postscript using lines
       pbmtoepsi
              convert a PBM image to encapsulated Postscript preview bitmap
       pbmtopsg3
              convert PBM images to Postscript using G3 fax compression.
       rawtopgm
              convert raw grayscale bytes to PGM
       pgmtopbm
              convert PGM to PBM
       gouldtoppm
              convert Gould scanner file to PPM
       ilbmtoppm
              convert IFF ILBM to PPM
       ppmtoilbm
              convert PPM to IFF ILBM
      imgtoppm
              convert Img-whatnot to PPM
       mtvtoppm
              convert MTV ray-tracer output to PPM
       pcxtoppm
              convert PC Paintbrush format to PPM
       pgmtoppm
              colorize a portable graymap into a PPM
       pi1toppm
              convert Atari Degas .pi1 to PPM
       ppmtopi1
              convert PPM to Atari Degas .pi1
       picttoppm
              convert Macintosh PICT to PPM
       ppmtopict
              convert PPM to Macintosh PICT
       qrttoppm
              convert QRT ray-tracer output to PPM
       rawtoppm
              convert raw RGB bytes to PPM
       sldtoppm
              convert an AutoCAD slide file into a PPM
       spctoppm
              convert Atari compressed Spectrum to PPM
      sputoppm
              convert Atari uncompressed Spectrum to PPM
       tgatoppm
              convert TrueVision Targa file to PPM
       ppmtotga
              convert PPM to TrueVision Targa file
       ximtoppm
              convert Xim to PPM
       xpmtoppm
              convert XPM format to PPM
       ppmtoxpm
              convert PPM to XPM format
       yuvtoppm
              convert Abekas YUV format to PPM
       eyuvtoppm
              convert Encoder/Berkeley YUV format to PPM
       ppmtoeyuv
              convert PPM to Encoder/Berkeley YUV format
       ppmtoyuv
              convert PPM to Abekas YUV format
       ppmtoyuvsplit
              convert PPM to 3 subsampled raw YUV files
       yuvsplittoppm
              merge 3 subsampled raw YUV files to one PPM
       ppmtoacad
              convert PPM to AutoCAD database or slide
       ppmtoicr
              convert PPM to NCSA ICR graphics
       ppmtopcx
              convert PPM to PC Paintbrush format
      ppmtopgm
              convert PPM to portable graymap
       ppmtopuzz
              convert PPM to X11 "puzzle" file
       rasttopnm
              convert Sun raster file to Netpbm formats
       pnmtorast
              convert Netpbm formats to Sun raster file
       tifftopnm
              convert TIFF file to portable anymap
       pnmtotiff
              convert Netpbm formats to TIFF RGB file
       pnmtotiffcmyk
              convert Netpbm formats to TIFF CMYK file
       xwdtopnm
              convert X10 or X11 window dump to Netpbm formats
       pnmtoxwd
              convert Netpbm formats to X11 window dump
       pnmtoplainpnm
              convert regular Netpbm format image into plain Netpbm format
       pbmtopgm
              convert PBM file to PGM by averaging areas
       411toppm
              convert 411 (Sony Mavica) to PPM
       ppmtosixel
              convert PPM to DEC sixel format
       ppmtouil
              convert PPM to Motif UIL icon file
       sbigtopgm
              convert Santa Barbara Instrument Group CCD file to PGM
       vidtoppm
              convert Parallax XVideo JPEG to sequence of PPM files
       pnmtorle
              convert PNM to Utah Raster Toolkit (urt/rle) file
       rletopnm
              convert Utah Raster Toolkit (urt/rle) file to PNM
       ppmtoleaf
              convert PPM to Interleaf
       leaftoppm
              convert Interleaf to PPM
       bioradtopgm
              convert Biorad confocal image to PGM
       pbmtoln03
              convert PGM image to Dec LN03+ Sixel image
       pbmtopk
              convert PBM image to packed format (PK) font
       pktopbm
              convert packed format (PK) font to PBM image