Chris Li

Digital design, Lisper,Emacs.

1_15_linux_system

Table of Contents

ssh motd登陆提示符

/etc/update-motd /etc/motd /etc/issue

sudo run-parts /etc/update-motd.d

out of memory killer,OOM killer

如果一个程序消耗内存太大,linux会将这个进程killed掉,并显示killed. 关闭这处功能: sysctl vm.overcommit_memory=2

group

usermod -a -G groupdel/groupadd id/groups

alias

给命令重命名

linux下的千分之一秒表

time read
C+d  结束

建FTP

vsftpd这个软件,要允许匿名用户anonymous anonymous_enable=yes write_enable=yes local_umask=077设置上传文件权限。 anon_upload_enable=YES anon_mkdir_write_enable=YES另pub文件夹other加写 权限

mac

/sbin/ifconfig eth0 hw ether 000c29D46212

debian 源

/etc/apt/sources.list 或/etc/apt/sources.list.d/中的文件刚装完系统时没 有 apt-spy ,我们可以暂时先找个可用的源代替,如(写在 /etc/apt/sources.list 中).

sources.list格式如下:    deb url distribution [component1] [componenent2] […]

各个选项说明: deb两种写法,分别为 『 deb 』 和 『 deb-src 』,前者表示 所指向的存放 binary 格式(编译好的执行文件套件) 的服务器位置,后者为 sources 格式(包含原始代码的软件套件)的服务器的位置。只想安装软件而不 想再编译她就使用 『 deb 』 , 如果想取得软件的源代码 ( sources code ) ,就使用『 deb-src 』 , 也可以两行都写: deb http://http.us.debian.org/debian stable main contrib non-free deb-src http://http.us.debian.org/debian stable main contrib non-free

uri ( Universal Resource Identifier ) uri 指的是软件来源的位置,可以使 系统内的某个位置 ( file ) 、也可以是光驱 ( cdrom ) 、可以是网络 ( http、 ftp )……等,当用 apt-get 命令时,就会到这些位置去找软件库。一共有file、 cdrom 、 http 、 ftp 、copy 、rsh 、ssh 等几个参数,比较常用的参数如下: file可以是你系统上的某个目录,如下: deb file:///home/moto/debian stable main contrib non-free也可以是 mount 到自己系统远端的 NFS Server,如下: deb file:///mnt/nfs-server stable main contrib non-free cdrom光驱牒片上的 位置,如下: deb cdrom:/dists stable main contrib non-free http、ftp地 址可通过官网镜像列表取得:网址:http://www.debian.org/mirror/list http 通过 http 的协议传送,如下: deb http://http.us.debian.org/debian stable main contrib non-free ftp通过 ftp 的协议传送,如下: deb ftp://ftp.us.debian.org/debian stable main contrib non-free

distribution说明: stable — 最广泛的用于架设产品化服务器,因为它只包含 安全更新。 testing — 推荐工作站用户使用的发行版,因为它包含有最近发布的 桌面软件,这些软件已经接受了少量测试。 unstable — 处在悬崖边缘的版本, 供 Debian 开发者选用。

下面是component的一些简要介绍: main Debian 里最基本及主要且符合免费软 件规范的软件 ( packages )。contrib 这里头软件虽然能在 Debian 里头运作, 即使本身属于免费软件但多半却是相依于非自由 ( non-free ) 软件。non-free 不属于免费软件范畴的软件。non-us 这个分类里头的软件都来自非美国地区,当 中可能有牵扯到专利、加密..等等问题。marillat 对应 Christian Marillat 的 软件仓库,包括mplayer, transcode等。rareware 对应 rarewares.org 的软件 仓库, 包括非常多音效程式,如lame, musepack, beep media player等。ustc对 应 debian@ustc 维护的一些软件包,如 mule-gbk, gaim-openq, scim, stardict dicts, patched xpdf, irssi, xmms。java 对应 Blackdown java。包 括 j2re, j2sdk ,mozilla java plugin。firefly 对应打过firefly补丁的包, 包括 fontconfig mozilla mozilla-firefox pango1.0 qt-x11-free xft misc对 应其他无分类的包,包括 nvidia-kernel, winex3, rox, chmsee等debian-bit Lonecat 大大自己编译的一些软件包都在这里

    执行以下命令更新软件包列表:    apt-get update    然后 执行以下命令安装 apt-spy:    apt-get install apt-spy    从源上 下载一份源的镜像列表 (http://http.us.debian.org/debian/README.mirrors.txt%EF%BC%89%EF%BC%9A     apt-spy update    测试亚洲地区的源的速度,并自动写入 sources.list:     apt-spy -d unstable -a Asia

find

find depth -name expression

ibus

export GTK_IM_MODULE=ibus export XMODIFIERS=@im=ibus export QT_IM_MODULE=ibus

设置debian语言

sudo locale-gen zh_CN.UTF-8

redhat 语言设置

方法一: #locale (locale命令用于查看使用语言详细信息,为中文语言) #export LC_ALL=POSIX (export命令导出修改LC_ALL语言选项) #locale (再次查看,信息已经改变了) 该方法在用户注销或重启后将失效,要想保存设置,见方法2。 方法二: #vi /etc/sysconfig/i18n (利用vi编辑器修改配置文件i18n) 将LC_ALL=POSIX写入i18n配置文件中。 注销或重启服务便永久生效。

安装字体

rpm -ivh fontconfig-2.4.1-7.el5.i386.rpm rpm -ivh fontconfig-devel-2.4.1-7.el5.i386.rpm rpm -ivh fonts-chinese-3.02-12.el5.noarch.rpm service xfs reload

装无线网卡

1,sudo apt-get install firmware-iwlwifi 或用备份的无驱动(在Drive_backup中) 2,sudo /sbin/ifconfig wlan0 up

终端窗口快捷键

C+S+up 滚动
C+S+down  
S+PgUp  
S+PgDn  
C-a,C-e 行首,行末
C-d,C-h delet,backspace
C-f,C-b 和emacs一样,移动下或上一个字符
C-u,C-k 从光标处删到行首或行尾
C-c,C-z 终断命令
C-l 清屏,同F5
C-w 删除前一单词
C-y yank
C-r 搜索history中命令
C-n,C-p history中 上,下一条命令

linux 桌面快捷键

C-M-d 显示桌面|
M-F2 运行
C-M-方向 切换桌面

grbu安装debian

find root (hdx,x) kernel /vmlinuz initrd /initrd.lz boot

grub安装ubuntu

find root (hdx,x) kernel /vmlinuz boot=casper iso-scan/filename=/xxx ro quiet splash initrd /initrd.lz boot

文件比对:diff、diff3、sdiff、vimdiff和comm的区别和使用

cmp 比较两个文件,并指出它们是否不同及不同的字节。

diff 比较两个文件或目录,并指出哪些文件的哪些行不同。

diff3 逐行比较三个文件

sdiff 合并两个文件,并以交互方式输出结果

vimdiff 使用 vim 同时编辑一个文档的 2 或 3 个版本并显示他们的区别使用 vim 同时编辑一个文档的 2 或 3 个版本并显示他们的区别

comm 一行一行对两个已经排序的文件进行比较,在第三列中显示同一行是否相同

fstab

<file system> <mount point>   <type>  <options>       <dump>  <pass>
设备 挂载点 设备类型  挂载选项 文件系统转存(0) 启动时被扫描的文件系统顺序,根文件系统"/"为1,其他为2(0)

<type> vfat(fat32) ntfs ext3 iso9660(iso镜像) udf,iso9660(光驱) <options> rw,(owner,user(允许所有的用户使用),uid(指定用户)),default(莫认选项),loop(iso镜 像),noauto(在mount -a 时,不起作用)

挂载后不能建立回收站

其实这是一个权限问题,挂载的时候使用的是root,一般mount后的所有者也是 root,root是不能建回收站的,所以应在options中加入用户的uid/gid,如uid=1000

查看uuid

sudo blkid

host文件,hostid,hostname

hosts文件

DNS记录,当开机时,hosts中的记录和本机ip相同,并且hostname为 localhost或localhost.localdomain时,会用ip替换为hostname

hostname

红帽 /etc/sysconfig/network debian /etc/hostname 所有系统都有,内核中的 /proc/sys/kernel/hostname

hostid

hostid和hostname在hosts文件中对应的ip,经一定规则转化。

debian安装字体msyh

cd usr/share/fonts/truetype/或者 ~.fonts目录,没有自己建,.fonts只能 自己用,而前目录下,所有用户都可以用 mkdir msyh cd msyh 复制字体文体到这个文件夹 mkfontscale mkfontdir

更新grub2引导菜单

sudo update-grub2

改变grub2顺序的三种方法

  1. 编辑/boot/grub/grub.cfg,将windows的菜单放到最前,改变菜单的方式

缺点:只要update-grub ,就需要重新设置

  1. 编辑/etc/default/grub,将Grub_default=0,改成其它的值,这种方式不会改变菜单

缺点:升级内核后,需要重新设置

  1. 改变/etc/grub.d/目录下文件顺序,默认为

-rwxr-xr-x 1 root root 6433 9月 19 2011 00_header -rwxr-xr-x 1 root root 5343 9月 19 2011 05_debian_theme -rwxr-xr-x 1 root root 4284 9月 19 2011 10_linux -rwxr-xr-x 1 root root 4925 9月 19 2011 20_linux_xen -rwxr-xr-x 1 root root 5789 9月 19 2011 30_os-prober -rwxr-xr-x 1 root root 214 9月 19 2011 40_custom -rwxr-xr-x 1 root root 95 9月 19 2011 41_custom -rw-r–r– 1 root root 483 9月 19 2011 README 将30_os-prober文件重命名为,5到10之间的数字开头的文件名。如08_os-prober。 然后sudo update-grub即可。

grub启动Grub2的方法

find /boot/grub/core.img
root find结果
kernel /boot/grub/core.img
boot

many file replace methord

sed -i "s/oldstring/newstring/g" 'grep oldstring -rl xxx(dir)'

改变程序启动大小和位置的办法

在.Xdefaults中设置,没有这个文件,就自已建 格式:如

Emacs.geometry: width x height+xoff+yoff

xrdb .Xdefaults

查看linux系统硬件配置

传感器:sensors CPU:less /proc/cpuinfo MEM: less /proc/meminfo,or,free -m linux版本:/etc/redhat-realase,or,/etc/issue

同时tar解压多个包

ls *gz|xargs -n1 tar

PS1/prompt

bash下通过PS1控制提示符 PS1="\[\e[35;1m\]\w \$:\[\e[30;0m\] " ,颜色通过\[\e[35;1m\]控制,最外层 的\[ \]来控制提示符范围,不会被过长的命令把提示符冲掉,每个颜色一定要 加范围,不然会出现各种奇怪的问题。 set prompt="%t%{\e[34%}%n%{\e[0m%}@218 %{\e[35m%}%~ :%{\e[0m%}" set prompt="%{\033];%~\007%}%{\e[34m%}%n%{\e[0m%}@212 %{\e[35m%}%~ %{\e[0m%} "

字符编码转换 GBK-UTF-8

  • 查看当前coding/encoding:M-x describe-coding-system
  • 转换当前buffer的coding:M-x revert-buffer-with-coding-system,保存之 后文件的编码格式将改变。
  • 指定所有以后emacs编辑文件的coding格式,M-x universal-coding-system-argument.

emacs与SCIM

emacs本来可以用scim的但,有一天我突然想删除scim中的智能拼音,结果,就 scim的五笔也不能用了。 解决办法,恢复智能拼音,五笔就可以用了,这很坑吧?我认为也是。浪费我半 天时间。。。。

sed

  1. sed 's///' sed替换模式,要注意使用单引号
  2. 匹配转义字符要使用反斜杠,如'\t','\ ','\+','\*',还可以使用方括号,方 括号不用转义。如's/[\t\ ]\+//'表明替换掉所有的Tab和空格。
  3. 两行转一行的方法,sed 'N;s/\n//'
  4. sed 删除两行之间的一段文字,sed "regexp1,/regexp2/ d" -i file
  5. sed 在一文件中,插入另一文件内容.sed "/regexp/r file"
  6. sed 在一文件中删除两行之间的一段文字,并将另一个文件内容替换之。sed -e "regexp/r file" -e "/regexp1,/regexp2/ d" -i file1
  7. sed实现多行转一行处理,首先需要匹配被转的那一行。如将regexp下面的一 行与regexp合为一行 sed -e 'regexp {N;s/\n//}'.如果需要继续转一行, 则重复上面的操作,sed -e 'regexp {N;s/\n//}' -e 'regexp {N;/s\n//}'.

awk

awk的强大功能主要在于

  • 将字符串分段处理
  • 按格式打印
  • 简单统计

awk格式

awk命令格式可以分为4段 awk (参数与开始BEGIN{}段)(//匹配)(格式打印{print $0 $1 })(结束 段END{})

命令关键字

NR 用于格式打印段,当前为第几段
NF 用于格式打印段,总段数
FS 以之为字段分隔符
-f 指定文件输入
-F 指定字段分隔符,作用同FS
   

awk实现列对齐

awk -F "xx" '{printf "%30s \t $-10s \n",$1,$2}'

脚本总结

脚本的结构大致可以分为3个部分

环境设定

环境设定又可以分为系统环境变量设定和自定义变量 环境变量 环境变量主要为后续的变量服务,要了解这些变量的用处

  • 自定义变量

自定义变量主要是用来简化和使代码清晰化,尽量使用自定义变量来达到复用的 效果

  • 判断环境变量是否存在
$?REMOTEHOST

参数处理

一般为3步:判断参数结束->处理参数,并保存在自定义变量中->shift 使用while($#argv)作为判断,然后可以用if或switch语句来处理每一个参数, 最后将处理过的参数移位。

实际命令

实际命令,经验性质较强,即使不能把命令写的很老到,但是也应该尽量做到查 模块清晰,语句robust,功能完备。

  • foreach 可以用来处理,一个变量,类似于python中的列表,每个元素用空格 分开,特别注意的是一个变量中间如果有空格的话,会当作两个变量处理。
  • tee/|,tee与管道的区别是,管理不会将当前命令的输出输出出来,而tee会。
  • 用"/"来分割语句,防止语句过长,难看。

csh ctrl+d 结束终端设置

如果用csh,ctrl+d不能退出,报use exit to leave csh 则在.cshrc中设置unset ignoreeof可以解决问题

vncconfig

vncconfig & 打开clipboard 如遇到unable to open display,则表明需要指定端口号 vncconfig -display :77搞定

命令之间数据和参数的传递

  1. 管道,"|"直接传递数据流,但不能作为第二个命令的参数
  2. xargs,将管道中的数据用来作为第二个命令的参数,功能增强,会将参数名 和结果一起打印出来。
  3. find命令自带的-exec,可以用{}来替换,find的输出直到出现";"号,"-exec … \;"与 "-exec … +"的区别是,后者的行为更像xargs会将参数名和结 果一起打印出来,面前者只会打印结果。

tac sort

cat xxx |sort tac xxx

install grub

sudo grub-install /dev/sda; or /dev/sdb,determin by which disk is MBR

uniq去掉重复的行

rev反转列

sort 分类

dos2unix

如果打开一个文件,文件中出现^M这样的符号,说明这是一个在windows中的换 行符,如要将其转换为unix格式,则使用dos2unix命令。

同时grep多个string

grep -e "stringa | stringb" file

cut

linux开机启动

/etc/rc.local ~/lzh/os_setup/linux_startup