分类: LINUX
2009-10-13 14:23:09
基本命令和常识 cal 日历命令 /**查看用户组 在 etc/group 文件里 # ll -rwxrwx--- r=可读 w=可写 x=可执行 第一组 档案拥有者 第二组 群组 第三组 其他人的属性 前面为 - 是文件 d 是目录 l 是链接档 b 装置文件可供贮存的接口设备 c 表示为装置文件里的串行接口文件 如 键盘鼠标等 r=4 w=2 x=1 -[rwx][rwx][---] = 770 or -rw-r-xr-x = 655 # man / info 查询一个命令的手册(属性) 文件属性 # chown user files 将一个文件改变所属作者 # chgrp group files 改变文件所属的组 # chmod 改变文件的属性 # umask 拿到属性 如: umask 022 就拿掉 -rwxr-xr-x 组和其他用户的w属性 # touch 将文件属性 修改成 umask 所设定的目录属性 # ls 看 mv 移动 rm 删除 cp 拷贝 文件 查看文件和路径等 # basename 获取文件路径中的文件名 # dirname 获取文件路径中的路径目录 # cat 第一行查看文件内容 # tac 最后一行查看 # more 一页一页查看内容 # less 分页查看内容 比more高级 # head 只看前几行 # tail 只看尾巴几行 # nl 显示同时输出行号 # od 二进制读取内容
搜索/位置 账号管理 #/etc/passwd 存放管理员和用户文件 #/etc/shadow 存放管理密码 #/etc/group 存放群组 #/etc/gshadow 存放群组密码 # groupadd [-g GID] groupname 添加群组 -g 自行设置group id # groupdel 删除群组 # useradd [-u UID][-g GID][-d HOME] [-m M] [-s shell] username 添加用户 # userdel 删除用户 # chsh [-l 列表] [-s 设置新shell] 改变自己的shell # passwd 修改用户密码 # su 转换身份 # sudo [-u uname]转换身份执行相关的命令 # id [username] 用户的群组等信息 # finger [username] 获取用户信息 # groups [username] 获取用户群组信息
解压缩命令 # gzip [(-1=>-9)压缩比-1最差-9最好默认-6][-d 解压缩][filename] 压缩文件 # zcar 查看 gzip命令 压缩的 .gz文件 # bzip2 [-z 压缩][-d 解压] 压缩bz2 文件 # bzcat 查看bz2压缩文件 /** # tar [-zxcvfpP ] filename 很常用的压缩 -z 查看是否含有 gzip指令 -x 解开一个压缩文件指令 -t 查看tar压缩文件的档案 -c 建立一个压缩文件 -v 解压过程中显示过程 -f 使用档名 就是放在其他参数的最后面 -p 使用原文档的原属性 -P 可以使用绝对路径 --exclude FILE 在压缩过过程中 不让FILE打包 排除目录/文件 -N 比后面的日期还要心的才会被打包 (yyyy/mm/dd) # cpio 备份文件用 shell # alias bname = 'ls -l' 设定别名 # echo 显示变量内容 # env 显示系统中主要设置的系统变量 # set 显示目前系统中全部的变量内容 # export -[fnp][变量名][值] f=写入n=删除p=显示列表 设置或显示本次环境变量 # unset 删除设置的变量 # array bl[索引]=1 echo ${bl[索引]} 数组命令 # $RANDOM 每次都会出现随机数的变量 # eval 变量的迭代作用 如:a=1 b=a eval echo \$$b 如果不用eval则输出b OR 1 # history 显示历史命令 历史命令存在 ~/bash_history 文件中 # /etc/profime 系统预定设置参数 # ls > ls.txt 重导项,将输出的命令导入到文件中 导入有三种情况 标准输入 代码0 < ; 标准输出 代码1 1> ; 错误输出 代码2 2> ">>" 则是追加 # last 本月所登陆系统的用户列表 # | 管道命令 仅能处理前面的一条正确命令 例子: last | grep root | wc -l (筛选root,并计算上一步行数) # cut [-d接分割字符][-c第几个字符][-f第几个区块] 将同一样命令进行分解 # sort [-t分隔符][+起始 -结束][-n数字排序 u相同出现一样 r反向排序]可分类排序 # wc [-l多少行 m多少字符 w多少字] 统计列表数据 配合管道命令使用 # uniq 删除重复的行只显示一个 配合管道命令使用 # tee 如:ls | tee this.txt 可以显示并切保存打文件中的列表 配合管道命令使用 # tr [-d str删除str][-s:去掉重复:]正则替换命令 如:ls|tr:'[a-z]' '[A-Z]'配合管道命令使用 # grep [string] 筛选出string 正则表达式 可单独使用也可 配合管道命令使用 # split [-b以档案大小分 l以行数分] 分割字符串 正则表达式 # grep [-acinv][string&RE] [路径] 正则表达式匹配 -a 将档案以text档案方式搜索数据 -c 计算到搜索字符串的次数 -i 忽略大小写 -n 顺便输出行号 -v 反向选择 及显示 没有[string&RE] 的一行 # diff file1 file2 比较两个文件内容是否有不同并列出 shell script 在shell脚本中 变量赋值=号中间不能有空格 正确: name='vanilla' # declare [-afirx]定义变量类型 a数组 f方法 i数字 r只读 x自定义透过环境输出变量 # read 对谈式script 就是所谓的让用户输入 yes 或者 no 等的命令 # 脚本附加参数 $1 开始 $0是命令名本身 如: setname a b c # 脚本判断语句 if if [ "$a" = "b" ] || [ "$a" = "c" ];then echo ''; elif [];then else fi # 脚本判断语句 case casc case $a in one) echo '' ;; two) echo '' ;; *) echo 'else' ;; casc # 脚本循环语句 for (( t1; t2; t3 )) do echo $start done # 脚本循环语句 while [ "$a" != "100" ] do echo $start done # 脚本循环语句 while [ "$a" = "100" ] do echo $start done $a到100结束 列行性命令 # at [-m 下达命令的时间] HH:MM YYYY-MM-DD HH[pm;am] + number [hours;days;weeks] HH:MM HH[pm;am] [Month] [Day] jobnumber:每一个 at 工作排程都有编排的顺序!这个即是! # atq 查看工作列表 # atrm [id] 删除一个工作 # crontab [-u user root才能操作] [-l列出 |-e编辑 |-r删除] */5 * * * * ps -A 分 时 日 月 周[命令] 上面是每5分钟执行一次 ps -A 分别设定: 1,3,20,30,40 * * * * ps -A 定时在1分钟,3分钟等等 执行 有时编辑完不一定能自动执行 重启 crond /etc/rc.d/init.d/crond restart linux程序与资源管理 # command & 让命令在后台执行 # [ctrl + z] 将程序扔到后台,而其状态为stopping及停滞状态 # jobs 查看后台的命令 # fg [%id] 将程序拉到前台 # bg [%id] 将后台的程序由stopping改成running # kill [-signal][%number] signal -1重读 -2终端改工作 -9杀死 -15停止 程序与资源管理 # ps -aux 查看进程 -a 选择所有程序 -u所有使用者程序 -x所有tty的程序 # top 动态检测进程 每5秒刷新一次 在进入top中 键入 A 以age及是执行的先后顺序排序 T 由启动的时间排序 M 以占用memory的大小排序 P 以所耗的cpu排序 # free [-k以kb显示][-m以mb显示] 显示内存使用情况 # sar [-u cpu使用情况] [-m 内存使用情况] [几秒观察一次] [一共观察几次] # kill -signal PID 同上 上除pid 用 # uname [-a 列出所有信息] [-p cpu信息][-n hostname][-r 列出内核版本] # /proc/cpuinfo 查看cpu详细信息 # nice [-n -number nice的数值] [command 命令] 更改优先级 数值越小越优先 nice -n -3 tar -cvf page.tar ./page # renice [number] PID 将一个在运行的程序优先级调低 先取得PID renice 2 3306 # dmesg 系统信息 可查看系统硬件是否识别与软件是否启动等信息 # uptime 看服务器开机多久 有多少人在线 负载是多少 # who / w 看都谁在线 # whoami 显示自己的身份 一般在使用 su sudo 后检查使用 # last 显示这个月来都谁登陆过主机 # date [-s 设置时日][-R 除文字模式][+%a星期 %b月份名 ..]现实和设置时间 date -s 04/10/2009 设置日期 date -s 10:35:02 设置时间 更多设置看 man date # hostname 查看主机名 # linux的开机流程 # 在开机中 init 执行的 script 在 /etc/rc.d/ rc0.d/-rc6.d/中 以 S 和K开头 K代表死亡 就是开机不启动。 S/K后面是数字 表示启动的先后顺序 正序 启动 0>1 # /etc/rc.d/init.d/目录内均为linux rpm档存放的脚本。 如启动sendmail /etc/rc.d/init.d/sendmail restart # /etc/rd.d/rc.local 系统脚本启动后 写入启动软件服务 比如apache mysql等 # /etc/inittab 改变预定的登录模式 6个选择 源码以及tarball管理 # gcc 编译源代码到二进制执行程序 [-c 会产生.o文件不能执行] [-O 后面接程序名称 最佳化 ] [-lm 链接二进制文件libm.so libm.a] [-L /sur/lib 后面接的搜索存放二进制文件的目录 ] [-I /sur/include 后面接的是存源码的Include目录 ] [-o runname 自定义执行文件的名称] [-Wall 编译的同时显示编译信息 加入后程序编译比较严谨 出错会提示出来] # make 暂时用不上 内容太多需细学之。 将一些列变异的步骤写入makefile里 tarball 套件安装 就是安装包啦。 ./configure 用于生成用户设定的makefile文件 make clean 编译的清理工作,一般不会有,但是如果编译后要改源码就用这个清理. make 根据makefile文件预设工作进行编译 make install 根据makefile的安装项目 将上一个步骤编译完数据安装至指定目录. rpm与srpm rpm xxx.rpm 是与编译好的一些套件在需要的依赖包存在的情况下进行安装。 srpm xxx.src.rpm 是rpm的源代码版 如何选择安装包版本以及平台和打包次数呢 如 rp-apache-2.1-5.i386.rpm 包名称-版本号-释放次数.硬件平台.文件名 硬件平台 i386 适用与大部分x86平台 i 是因特尔的意思 386是cpu等级 i586 早期的cpu i686 奔腾2代以后的cpu以及amd的k7以后都属于这个等级 noarch 没有硬件限制。 # rpm [-i安装 v查看安装信息画面 h显示安装进度] 套件=软件包 --test 测试是否已经安装过 #rpm -ivh pkgname.rpm --test -q pkgname 查询套件是否存在 -ql pkgname 查询并列出相关目录 -qi pkgname 列出套件信息 -qf 文件 看文件属于那个rpm所有 如: rpm -qf /etc/log.conf -qc pkgname 查看套件的配置文件在哪里 -qd pkgname 查看套件的文档的位置路径 -qR pkgname 查看套件所依赖的包 -qa 直接 prm -qa 查看在系统上共安装了多少rpm文件 -qp [-licdR] 文件 上面是查看系统内部的文件 这个是查看一个文件的内部信息 -e pkgname 卸载套件 --rebuilddb 重建数据库 #srpm --rebuild 将srpm文件进行编译,打包并生成一个rpm文件 安装加绝对路径 --recompile 直接将编译,打包,安装一步到位。 内核编译与模块管理 kernel 编译 kernel版本文件 如:2.6.9-42.Elsmp [版本].[次版本].[修订版本]-[附版本] 当此版本为奇数的时候 代表这个内核是测试版内核 偶数是稳定版的 # depmod [-aens] 检查模块 -a: 将 /etc/modules.conf 可查到的模块的相关性都写入 /lib/modules/`uname -r`/当中 -e: 显示出目前已加载的不可执行的模块名称 -n: 将各模块相依性直接输出屏幕 -s: 将一些信息输出到syslog的登录文件中 # modprobe [-l列出系统下所有模块 |-c较前面更详细]加载模块 # insmod [-f强制加载 k自动在系统没用时清除 p检测是否加载 s执行信息写如syslog] 加载模块 # rmmod modules_name 移除模块 # ismod 看系统中都有那些mod 模块 # modinfo [-adnp] module_name 查看模块的信息 系统设定常用指令 系统设定文件在 /etc/sysconfig 目录 # setup redhat系统设定工具 必须用root身份 # ntsysv [--level run-level] 系统配置工具 可是只运行级别 (暂时没搞明白) # service [service name] [start|stop|restart] 是/etc/rc.d/init.d/缩写 系统服务 daemons daemons 守护进程 stand_alone 长进程,该进程启动后将一直驻留在内存,常见的如httpd 有点效率高 启动项目的路径/etc/rc.d/init.d/里,几乎所有rpm启动项都在这里 super_daemon 短进程,该进程启动后不会常驻内存如果有数据封包来他将被唤醒。 xinet是一个stand_alone进程他会监视xinet的需求 短进程档案写在/etc/xinetd.conf /etc/xinetd.d/ 两种进程是和可以同时存在的。 /etc/services 文件,储存了daemons的名称,portID 以及封包类型 Daemon 命名规则 例如httpd 后面的d代表的就是daemon 如例行性命令 cron 就是crond TCP_Wrappers 远程服务器管理 管理设置文件 /etc/hosts.allow 允许进入的tcp/ip 则写入其中 /etc/hosts.deny 不允许进入的则写入其中 如 vi /etc/hosts.deny telentd: 102.12.32.111 : deny <#这个ip禁止访问 telentd: 101.121.122.0/255.255.255.0 : deny <#整个区域都无法进入 如 vi /etc/hosts.allow telentd: 102.12.12.0/255.255.255.0 : allow <#只允许这个网域进入 # netstat [-r] [-i interface] [-antulp] 查看主机连接进程状态 -r: 显示出route的意思 -i: 显示出interface 内容 跟ifconfig类似 -a: 显示出目前所有网络联机状态 -n: 显示出host会于hostname显示出 -t: 仅显示tcp封包 -u: 仅显示udp封包 -l: 仅显示LISTEN内容 -p: 同时显示PID 认识和分析日志 基础篇完结, 总结学习结果,整体了解linux系统基础知识还需要详细掌握 1,详细记录linux目录结构以及目录挂载 2,巩固vi编辑器的使用 3,shell script 详细学习 4,账户管理,系统配置 5,编译以及日志维护和备份。 |