Chinaunix首页 | 论坛 | 博客
  • 博客访问: 199331
  • 博文数量: 43
  • 博客积分: 2178
  • 博客等级: 大尉
  • 技术积分: 390
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 15:19
文章分类

全部博文(43)

文章存档

2012年(23)

2011年(10)

2009年(10)

分类: LINUX

2009-10-13 14:23:09

linux基础命令

基本命令和常识

cal 日历命令
    cal [month] [year]

bc  计算命令 'quit' 退出  +-*/^

date 时间命令 +%Y%M%D 格式

shutdown  系统关机  -h 20:30 八点三十自动关机

/**去掉烦人的嘟嘟声音*/
setterm -blength 0
setterm -bfreq 10 

/**查看用户组 在 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 二进制读取内容


搜索/位置
# which 查看可执行文件的文件位置

# whereis 查看档案的位置

# find 查找文件内的关键字

# file 查看文件类型


账号管理

#/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,编译以及日志维护和备份。



















阅读(1886) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~