红联Linux门户
Linux帮助

新增加内核编译linux笔记看看如何看过的人说一下啊. 这样可以丰富一下学习(继续

发布时间:2007-06-02 21:12:15来源:红联作者:open-end
希望得到大家的帮助,有错误的话.提出来,我会很感谢您的

linux 内核(kernel)
shell是现在流行的linux的语言,最开始是一个叫bcpc的语言--->B(语言)-->C(语言)
Unix是一个商标。现在主流的有IBM的AiX,HP的ux,sun的soaris等。
最开始的起源-->1972(C语言)-->1973(BSD)-->sys V 系统
|opengroup
1973年由于垄断法的原因unix分出来,被朗讯用到-->Nover|unixware 之后sco打专利的案件。如果感兴趣的话,具体的可以去网上找一找相关的资料。

|dos
linux的起源 |
        |minix (大学教授的一个教学系统) 感觉这两个系统都不怎么好,在原有的minix里改写程序,最开始是发布在大学的校园网。供大家一起来学习,之后有很多         | 人觉得这是个很好的系统,之后大家一起来进来修改,在1992前发布了

GUN--创史人(RMS)---FSF 最开始是在实验室里进行开发,unix进行商业之后,一个很好的系统应该是一个开放的,这样长会长久。就开始了编写软件 linux是一个内核。之后加入GUN组织,现在的linux 叫GUN/linux
  
Block-512-8M
_____
|446|-->MBR
        |64 |-->DPT
|2 |-->16位的机器编
-----      

  ------------------------  
|  推荐的书 |
|APUE的内枋编程    |  
|TCP/IP         | 
  |--这两本书是同一个人| steven
------------------------ 
注:以下代有 @#为root提示 @@为普通用户

常用命令:
    ls   显示目录内容
touch 建立空文件
rm   删除文件,默认的参数是 “-i“ 如果确定删除可以用 -->rm -rf filename
mkdir 建立目录
rmdir   删除目录,如果目录里不为空不能删除
more 翻页查看(只可以一屏一屏,不可以向上看在看)
less 查看(可以向上,向下)
cat 从上向下查看文件。
tac 从下向上查看文件。
du -h /home 查看/home的使用情况
df -h 查看磁盘空间
tail 查看文件末尾,默认为10行。可以加上 {-n 参数} 来看更多 tail -f 文件名 可以看到变化的文件
type 显示命令 例如 type cd 可以看到 cd 是一个内部命令。 type passwd 是一个外面命令
man 帮助命令 系统管理员主要看 1、5、8页 例如 man 5 passwd 程序可以根据自己开发自己选择。 -f可以看一下命令帮助有几页 例如: man -f passwd 如果看查看一下哪些文件有pdf这个程序,可以 man -k pdf
info 和man相似。它会显示一些菜单选项,进入按回车键进入相应的帮助。返回上一页按 u
elinks 文件方式访问网页
type echo 会看到这个是内建命令
shell---->外壳
@#echo $SHELL ---> 输出当前工作shell

PATH 系统命令查找的路径
[root@www ~]# which useradd
[root@www ~]# mv /usr/sbin/useradd /tmp
[root@www ~]# useradd
-bash: useradd: command not found
[root@www ~]# mv /tmp/useradd /usr/sbin/useradd
[root@www ~]# useradd
usage: useradd [-u uid [-o]] [-g group] [-G group,...]
[-d home] [-s shell] [-c comment] [-m [-k template]]
[-f inactive] [-e expire ] [-p passwd] [-M] [-n] [-r] name
useradd -D [-g group] [-b base] [-s shell]
[-f inactive] [-e expire ]
如果是自己编译的软件,想和命令一样方便输出来。可以这样做
@#PATH=PATH:/usr/loca/tmp/myplay(这个只是举一个例子,根据你实际安装的情况加)
{(
[root@www ~]# type iptables
iptables is /sbin/iptables
[root@www ~]# type useradd
useradd is hashed (/usr/sbin/useradd)
[root@www ~]# type if
if is a shell keyword
[root@www ~]# type ls
ls is aliased to `ls --color=tty'
[root@www ~]# type alias
alias is a shell builtin)
以上是命令的形式,具体的请查看帮助
}

useradd --->增加用户
hostname --->主机名,也可以直接更改,重新启动机器不会成效。 配置文件在 /etc/sysconfig/network
uname --->查看内核
-a ---->显示内核具体信息
id --->显示当前用户ID 管理员的ID是0
date --->查看当前日期
+%A +%a +%B +%b +%C +%c +%D +%d
cal --->查看当前月
例如 cal 80 2008
su --->切换用户
su - user 记得“-” 会把当前的PATH加上的。
ssh --->支持加密数据传输。默认以当前用户登陆。例如 ssh tengfei@192.168.1.119
telnet --->默认不能使用root。 telnet是明文传输密码,对于服务器来说不安全。
exit --->退出
logout --->登出 例如 @#ksh @#logout @#logout 实验看一下就知道了
pstree --->以当前的进程显示树形

关机命令
shutdown -h now 马上关机 有提示
shutdown -h 12 12分钟后关机,可以ctrl+c取消
init 0 先杀进程,再关机。不提示
halt -p -f 直接把电关掉
poweroff

重启计算机
shutdown -r now
init 6
reboot

磁盘
df -h 查看单位是1000
df -H 查看单位是1024
du -sh 文件名 和ls -alh一样

挂载
mount -t iso9660 /dev/cdrom /mnt
mount -t vfat /dev/sda1 /mnt 默认redhat 不支持 ntfs

用户和组管理
useradd 增加用户
对应文件 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
用户:密码:用户ID:组ID:注译:主目录:shell

对应文件 /etc/shadow
root:$1$iiPrrQSB$Xp5p6m1tVVou2H8udwP2s.:13605:0:99999:7:::
bin:*:13605:0:99999:7:::
用户:md5加密码(实际是一个hash 算法):日期(相对1970年1月1日有多少天):密码过期时间:密码过期提示时间:保留以后用

对应文件 /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
用户名:密码:ID:用户

对应文件 /etc/shadow

change 改变用户的相关信息 例如: change -E 2008-08-08 tengfei 对应的/etc/shadow就会改变
/etc/login.defs --> 用户的邮箱位置
目前可以创建的用户是2^32--->4G
useradd --->对应着五个文件一个配置
/etc/passwd /etc/shadow /etc/group
/etc/gshadow /etc/login.defs
/etc/skell(配置)
passwd 更改密码
usermod 改用户
groupadd 增加组 还有一些相关的命令 groupmod groupdel

文 件 类 型
ls -al
-表示普通文件
b表示块设置文件
c表示字符设置文件
d表示目录文件
l表示链接文件
s表示unix的网络文件(socket)
p表示管理文件

修 改 权 限
--------------------------------------------------------
| user | 运算符 mode filename |
| u | + rwx |
| chmod g | - rwx /etc/tengfei.txt |
| o | = rwx |
| a | rwx |
| | |
---------------------------------------------------------
r(4)读来信 w(2)写 x(1)执行
例如 @#chmod 744 /etc/tengfei.txt 这个文件的用户有全部权力。组和其它s可以读
注意:文件夹必须有x权限,否则是进不去的。
chown 文件的拥有者
chown [-R] user 文件名
chgrp 文件拥有组
chgrp [-R] groupname 文件名 或者 chown :groupname 文件名
ln 建立链接
硬链接 @#ln file1 file2
硬链接的特点:
1,不能跨分区,2,不能给目录作硬链接3,删除链接原始文件



lsof 列出正在运行的进程
例如 lsof -i :80 会找到httpd服务的进程(包括 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME)

查看某个文件被哪些进程在读写(bjweiqiong)
lsof 文件名

查看某个进程打开了哪些文件(bjweiqiong)
lsof -c 进程名
lsof -p 进程号

lsof abc.txt 显示开启文件abc.txt的进程
lsof -i :22 知道22端口现在运行什么程序
lsof -c nsd 显示nsd进程现在打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程
lsof -i 用以显示符合条件的进程情况

查找命令
which --->找一个可执行文件(在$PATH里面找)
whereis --->命令、配置文件
locate ---> 是slocate的一个软连接。 updatedb是slocate的数据库,每天凌晨4点进行数据的更新
find 查找命令,比上面的要强大一些。速度也是慢了很多。 重要的是看疗效啊!
find / -name passwd 查找文件名是passwd
find / type -f passwd 查找

-type c
File is of type c:

b block (buffered) special

c character (unbuffered) special

d directory

p named pipe (FIFO)

f regular file

l symbolic link

s socket

D door (Solaris)

find /etc --size -4k 文件小于4k
find /etc --size -4k 文件大于4k
find /bin -perm 777 查找权限为777
find /bin -perm -4000 |xargs ls -al 查看文件用UID的.具体的 setUID,setGID要网上可以查找到。主要是针对于安全
find /bin -mtime -7 ( 在七天以内变化)
更多的find 的资料请查看 find,xargs详述 已经发在论坛里了

stat -->显示某个文件的详细信息

grep -R '\' /etc/ 查找关键字为tengfei 



gzip 文件名 --->压缩文件
gzip -d 文件名.gz --解压缩
      如果一个文件是.gz被移动后没有后缀的话,可以用 gzid -d <文件名>network

  bzip2和zip 用法和gzip一样。
  
  tar 命令

压缩
    tar cvf /tmp/tengfei.tar /home/tengfei /tmp/tengfei 创建 tar包
    tar cvfz /tmp/tengfei.tar.gz /home/tenfei
tar cvfj /tmp/tengfei.tar.bz2 /home/tengfei /tmp/tengfei 创建 tar包
tar rvf /tmp/tengfei.tar /etc/hosts 把一个文件添加到压缩包里

解压
tar xvf /tmp/tengfei.tar -C /tmp
tar xvfj /tmp/tengfei.tar.bz2 /tmp
tar xvfz /tmp/tengfei.tar.gz /tmp

查看tar文件
tar -tvf *.tar 或 tar -tvfz *.tar.gz

把一个文件添加到tar 压缩包里
    tar -rvf /tmp/tengfei.tar /etc/hosts

正规表达式  grep
grep '^root' /etc/passwd “^” 表示开头
grep 'a\{100,120\}' /etc/tmp -->a 重复出现100-120次
    grep '.\{40,\}' /usr/share/dict/words  -->单词数在40个字母以上
grep '^i.\{18\}n$' /usr/share/dict/words -->开头是"i" ,结尾是"n" 中间单词个数为18个
grep '^i.\{18,20\}n$' /usr/share/dict/words -->开头是"i",结尾是"n"  单词个数为18个到20个之间
grep -v '^#' /etc/squid/squid.conf|grep -v '^$' --> 去除"#"注译和为空行。
    grep '\<07:19:..\>' /var/log/httpd/access_log ---> 查看 07时19分访问的记录
    grep '\<07:..:..\>' /var/log/httpd/access_log ---> 查看 07时访问的记录

grep -B2 tengfei /etc/passwd
grep -B2 -A2 tengfei /etc/passwd

-A NUM, --after-context=NUM
Print NUM lines of trailing context after matching lines.
Places a line containing -- between contiguous groups of
matches.
-B NUM, --before-context=NUM
Print NUM lines of leading context before matching lines.
Places a line containing -- between contiguous groups of
matches.

sort -n -t: +2 -r /etc/passwd
-n按照字符排序 -t设置插入行号,它是从0开始的 -r 比较一下相反结果
[tengfei]#sort -n -t: +2 -r /etc/passwd|head -n 5 |cut -d: -f1 提出5个用户名
[tengfei]#cut -d: -f1 /etc/httpd/conf/httpd.conf |sed '/^$/d' |less -->去掉空白行

[tengfei]# cat /etc/passwd|sed 's/root/roottengfei/;s/tengfei/tmpname'; -->多次修改

[tengfei]#sed -e '/root/d' /etc/passwd -->删除带root行

[tengfei]#sed -e '1,5d' /etc/passwd -->删除1到5行

[tengfei]#sed -e '1,5d' /etc/passwd -->删除1到5行


awk
[tengfei]# /sbin/chkconfig --list|grep 6|awk '{if ($5 =="3:on" ) print $1}'
具体的一些使用请参考相关资料

过滤器编辑器 tr
[tengfei]# tr "a-z" "A-Z" -->输入字母自动变成大写,ctrl+d结束 
[tengfei]# tr "a-z" "A-Z"
ps 查看进程命令
大多数使用
[tengfei]# ps -ef
[tengfei]# ps -aux关

pstree 进程树

自己做proc
[tengfei]# mkdir /tengfei
[tengfei]# mount -t proc noe /tengfei
[tengfei]# ls /tengfei
/proc/cupinfo cpu 信息
/proc/menifo 内存信息
如须其它的信息,请网上查找

top 动态系统信息
进入后参数 -r 可以调整优先级 -M 内存排序

nice 程序运行优先级别

kill
kill -1 PID 有时候杀不掉就可以用下面的参数
kill -9 PID
skill -9 tty1
skill -9 sts/1
pkill -9 -u tengfei
killall -9 程序名
有一些是杀不了的。如 aio是内核。
了解更多的相关信息 man signal

配置网络命令
ifconfig ---> [tengfei]# ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
netconfig --->一种图形化操作
setup --->配置机器相关的信息
网卡配置文件 /etc/sysconfig/network-script/ifcfg-eth0
查看当前活动网卡 mii-tool


工作模式
一个程序ctrl+z停止到后台去 fg 停止到前台

字符串处理
wc -l 文件名
cut -d f7 /etc/passwd
sort /etc/passwd >passwd_sort
uniq -c passwd_sort >uniq.passwd_sort 看有多少相同的行

系统状况检测
在tty1上
[tengfei@www ~]$ (while true; do echo -n tengfei>>log;sleep 1;done)
在tty2上
[tengfei@www ~]$ tail -f log -->看变化
在tty1 ctrl+z 在tty2里看变化。jobs看有几个进程在工作。把停止的进程重新进行的话 在 tty1用fg,之后在tty2看变化


bash快捷键
Tab:自动补完命令行与文件名
Tab键双击可以列出所有匹配的选择
ctrl+c 结束当前的任务
ctrl+z 当前任务暂停,并放在后台
ctrl+s 停止屏幕输出
ctrl+q 恢复屏幕输出
ctrl+l 清屏
ctrl+d 标准输入结束
Ctl-B 光标后退,这应该依赖于bash输入的风格,默认是emacs风格的.
Ctl-D 从当前shell登出(和exit很像)
Ctl-G beep.在一些老的终端,将响铃.
Ctl-H backspace,删除光标前边的字符.如:
1 #!/bin/bash
2 # 在一个变量中插入Ctl-H
3
4 a="^H^H" # 两个 Ctl-H (backspaces).
5 echo "abcdef" # abcdef
6 echo -n "abcdef$a " # abcd f
7 # 注意结尾的空格 ^ ^ 两个 twice.
8 echo -n "abcdef$a" # abcdef
9 # 结尾没有空格 没有 backspace 的效果了(why?).
10 # 结果并不像期望的那样
11 echo; echo
Ctl-I 就是tab键.
Ctl-J 新行.
Ctl-K 垂直tab.(垂直tab?新颖,没听过)
作用就是删除光标到行尾的字符.
Ctl-M 回车

变量
echo
unset
export
[tengfei]# a="aa"
[tengfei]# echo $a
[tengfei]# unset a
[tengfei]# echo $a
set
env
将当前新安装的软件加到路径里
[tengfei]#PATH=$PATH:/usr/loca/http/sbin/apacher1

rpm
安装程序
rpm -ivh 程序名.rpm
有依靠不可以安装的
rpm -ivh --nodeps --force 程序名.rpm
如果用光盘安装的话,用 rpm -ivh --aid 程序名.rpm 可以解决依存关系
卸载 rpm -e -nodeps
升级程序 rpm -iUh 程序名
查询rpm包 rpm -qa

系统启动时有关的脚本
/etc/profile--->变量,只有登录才执行
~/.bash_profile
~/bashrc
/etc/bashrc

补一点我做的sed
[tengfei]#chkconfig --list |awk '{if ($5 ="3:on) print $1}'
[tengfei]#chkconfig --list |awk '/3:on/ { if ($5 = "3:on" ) print $1}'
[tengfei]#for i in `chkconfig --list |awk '/3:on/ {if ($5 = "3:on" ) print $1}`';
do chkconfig $i off; done -->关闭启动服务,自己先打一下chkconfig 看一下,再根据自己的实际去做.

X-windows 图形的我就不写了。这些命令你可以去做做。一步一步来。之后一定有些收获的
#X
#xinit
#xhost +
#export DISPLAY="IP"
#xclock
到那个IP的电脑看一下变化,前提那个电脑必须要开x-windows
开起多个x-windows
[tengfei]#startx -- :1

linux无人执手安装(anaconda)
编辑服务器的/etc/anaconda-ks.cfg
用光盘引导起来的时候输入 在提示boot: linux ks=nsf:/192.168.1.100/varp/ftp/pub/anaconda (注anaconda和服务器起的名字一样)
之后连上网就可以自动安装了
有机器支持网卡启动的话,光盘就不需要了。可以直接连在服务器那边



硬盘分区
fdisk
[tengfei]#fdisk /dev/hda
[tengfei]#fdisk /dev/sda
n-->增加新分区
p-->主分区
e-->扩展分区
l-->逻辑分区
t-->改变分区id
w-->保存
具体的请用m看一下
先激活分区 partporbe或reboot
[tengfei]#mkfs.ext3 /dev/sda1
格式化有如下
mkfs.ext3 ;mkfs -t ext3 ;mkfs2fs -j
ext2变ext3 tune2fs -j /dev/sda2
ext3变ext2 tune2fs -o ^has_journal /dev/sda4
[tengfei]#mount /dev/sda1 /mnt
对有问题的分区的处理
umount /dev/sda2

fsck.ext3 -yf /dev/sda2

mount实例
mount /dev/hda1 /mnt
mount -t ext3 -o ro /dev/sda3 /mnt
mount -o remount,rw /dev/sda3 /mnt
mount -o remount ,rw /
mount -t vfat /dev/sda2 /mnt
mount 192.168.1.100:/var/ftp/pub /mnt
mount -o username@passwd 192.168.1.100 /mnt
mount -t iso9660 /dev/cdrom /mnt
mount -a --->挂载/etc/fstab文件的设备
挂载带LABEL 分区
[tengfei]# vi /etc/fstab
LABLE=/abc /mnt ext3 defaults 0 0
[tengfei]#e2lable /dev/sda2 /abc
[tengfei]# df -h
[tengfei]#umount -a
[tengfei]#mount -a
[tengfei]# df -h
Swap空间的建立
[tengfei]# mkswap /dev/sda2
[tengfei]# swapon /dev/sda2

用文件做Swap
[tengfei]# dd /swapfile bs=10 24 count=100000 相当于100M
[tengfei]#swapon /swapfile
[tengfei]#swapon -s

Autofs配置
[tengfei]#mkdir /test
/etc/auto.mast
/test /etc/test.misc
/etc/test.misc
service -ro,soft,intr 192.168.1.100:/var/ftp/pub

[tengfei]#service autofs restart
访问方式
[tengfei]#ls /test -->一般看不到什么的
[tengfei]# cd /test
[tengfei]#ls

编译内核
www.kernel.org下载.例如: linux-2.6.12.tar.bz2
tar xvfj linux-2.6.12.tar.bz2
确定你的机器装有 ncurse-dev* gcc 如果没有这个,编译会出问题.现在2.6 的内核编译要简单多了.
cd linux-2.6.12
make menuconfig
make bzImage
make modules
make modules_install
make install
depmod -a
grub现在也不用做了.在上面的工作完成的时候,所有的基本都可以了.

[ 本帖最后由 open-end 于 2007-6-3 21:50 编辑 ]
文章评论

共有 3 条评论

  1. exert2008 于 2007-06-03 03:53:13发表:

    :time:1 早点写完哈
    拿去打印 当教材了

  2. patriotism 于 2007-06-02 23:26:21发表:

    linux 正确的名字是叫 内核(kernel)
    这句怎么看都不太对,可以说linux就是一个内核(kernel)

  3. 220.175.52.* 于 2007-06-02 22:23:15发表:

    很有用的哦.如果?真的想???linux 的?一定要好好掌握哦..偶也是一?linux 的?好者


    哈!! fighing !