Linux入门
Linux
Linux入门
开源、免费的操作系统。
Linux目录结构
- /bin:二进制目录,存放许多用户级的GNU工具00
- /boot:启动目录
- /dev:设备目录,Linux在这里创建设备节点
- /etc:系统配置文件目录
- /home:主目录,Linux在这里创建设备节点
- /lib:库目
- /media:媒体目录,可移动媒体设备常用的挂载点
- /mnt:挂载目录
- /opt:可选目录,用于存放第三方软件包和数据文件
- /proc:进程目录,存放现有硬件及当前进程
- /root:root用户的主目录
- /sbin:系统二进制目录
- /run:运行目录,存放系统运行时的运行时数据
- /srv:服务目录,存放本地服务相关文件
- /sys:系统目录,存放系统硬件信息的相关文件
- /tmp:临时文件
- /usr:用户二进制文件
- /var:可变目录,可存放经常变化的文件,如日志
基础命令
关机重启
- shutdown
- shutdown -h now:立即关机
- shutdown -h 1:一分钟后关机
- shutdow -r now:立即重启
- halt:直接使用,等于关机
- reboot:重启系统
- syn:把内存的数据同步到磁盘
- logout:注销
用户管理
- 添加用户:useradd [选项] 用户(创建默认组;创建home目录)
- useradd -d /home/trigger/ gemsuser
- 指定或修改密码:passwd gemsuser
- 删除用户:userdel 用户名
- 保留home目录:userdel 用户
- 不保留home目录:userdel -r 用户
- 查询用户信息:id 用户名
- 切换用户:su -
- 查询用户:whoami
用户组
- 组件组:groupadd 组名
- 删除组:groupdel 组名
- 增加用户指定组:useradd - g 用户组 用户名
- 修改用户组:usermod -g 用户组 用户名
用户和组的相关文件
- /etc/passwd :用户配置文件(用户信息)
- /etc/group:组配置文件(组信息),组名 口令 组ID 组内用户列表
- /etc/shadow:口令配置文件,密码等
实用指令
指定运行界别
- 0:关机
- 1:单用户(找回丢失密码)
- 2:多用户(无网络服务)
- 3:多用户(有网络服务)
- 4:保留
- 5:图形界面
- 6:重启
系统的运行级别配置文件/etc/inittab
切换到运行级别的指令:init [0123456]
如何找回root密码
- 进入单用户模式,修改密码
- 开机->引导时输入回车键->e->选择第二行(编辑内核)再输入e->在这行最后输入1->回车键->b,进入单用户模式
帮助指令
man [命令或者配置文件] 指令
help 命令
文件目录类
- pwd
- ls:
- -F,区分文件夹文件,-R递归,-a全部,-l显示长列表,ls -alF
- -l my_script,过滤匹配输出列表
- -l –time=atime,才可以显示文件的访问时间,否则默认显示修改时间
- -d只列出目录
- -i查看文件或者目录的inode编号
- mkdir -p,递归目录创建
- rmdir:删除空目录
- 创建文件:touch filename,也可用于改变修改日期,若想改变访问时间,可加上参数-a
- 复制:cp src dst,cp -i覆盖前会提示
- 递归复制:cp -r
- \cp 强制覆盖,不提示覆盖
- rm
- -r:递归真个文件夹
- -f:不提示
- mv
- cat file,查看文件,-n行号,-b行数(不包括空行
- cat -n /etc/profile |more
- cat -T不让制表符出现,一旦开始无法控制后面操作
- more显示文本文件,会在显示每页数据后停下来
- 空格键:向下翻一页
- Enter:一行
- q:退出
- Ctrl+F:向下滚动一屏
- Ctrl+B:向上
- =:输出当前的行号
- :f 输出文件名和当前的行号
- ! 调用shell,并执行命令
- less,more的升级版(查看大文件)
- /pattern:匹配,n下一个,N前一个
- ?pattern
- CTRL+f\b\d\u
- 查看部分文件tail,默认情况显示文件的末尾10行
- tail -n 2 log_file显示末尾2行,-f参数允许其他进程使用该文件时查看文件类容,hi保持活动状态,并不断显示添加到文件的内容。实时监测系统日志
- head,显示开头,head -5 log_file
- 重定向和追加
- > 覆盖
- >>追加
- 链接文件:ln -s src dst,软链接
- 删除软连接时==不要带斜杠==
- ln src dst,硬链接,完全一样
- history
- history 10
- !178
时间日期类
- date
- date
- date “+%Y %m %d %H %M %S”
- 设置日期:data -s “2020-2-2 22:22:22”
- cal:显示日历时间
- cal
- cal 2020
搜索查找类
- find
- find / -name xxname
- find / -user gemsuser
- find / -size +20M/-10K/30G
- locate:在第一次运行前,必须使用updatedb指令创建locate数据库,可用于快速定位
- updatedb
- locate xxxx
- grep
- -n:显示匹配行及行号
- -i:忽略大小写
压缩和解压缩
gzip:压缩后,不保留原文件。gzip xx
gunzip
zip:zip [选项] xxx.zip 目录
- -r:递归压缩
unzip
- -d:解压目的目录
tar:tzr -zvbf xx.tar.gz file1 file2
- -c:产生tar打包文件
- -v:显示信息
- -f:指定文件名
- -z:压缩
- -x:解压
- tar -xzvf xx.tar.gz -C /opt/
file能探测文件的内部,知晓文件的类型
查看进程ps,默认情况下ps显示运行在当前控制台下的属于当前用户的进程
- n -A,显示所有进程
- n -N,显示与指定参数不符的所有进程
- n -a,显示除控制进程和无终端进程外的所有进程
- n -d,显示除控制进程外的所有进程
- n -e,显示所有进程
- n -C cmdlist,显示包含挂在cmdlist列表中的进程
- n -G grplist,显示组ID在grplist列表中的进程
- n -U userlist,显示属主的用户ID在userlist列表中的进程
- n -l,显示长列表
- n -f,显示完整格式输出
ps -ef,ps -l,ps –forest
top,实时显示进程
kill pid,-s强终止
killall 进程名
mount 输出当前系统挂载的设备
mount –t type directory,type指定了磁盘被格式化的文件系统,该命令需要root权限
vfat-Windows长文件系统
ntfs-高级文件系统
iso9660-标准CD-ROM文件系统
mount参数
- ro:以只读形式挂载
- rw:读写
- user:允许普通用户挂载文件系统
- check=none:挂载文件系统的时候不进行完整性检查
- loop:挂载一个文件
umount:卸载,卸载的时候提示系统可用lsof /path/device/node获取它的进程信息
df:可以查询已挂载磁盘的使用情况,-h参数可以按照用户易读的形式显示
du:会显示当前目录下所有的文件、目录和子目录的磁盘使用情况
- n -c:显示所有已列出文件总的大小
- n -h:易读
- n -s:显示每个输出参数的总计
sort:排序le
- b:排序时候忽略起始的空白
- C:不排序,如果数据无序也不要报告
- c:不排序,但检查输入数据是不是已排序;未排序报告
- d:仅考虑空白和字母,不考虑特殊字符
- f:默认情况下,会将大写字母排在前面;这个参数会忽略大小写
- g:按通用数值来排序,把值当做浮点数
- i:在排序时忽略不可打印字符
- k pos1 pos2:排序从pos1位置开始,如果指定了pos2,到pos2位置结束
- M:按照三字符月份名按月份排序
- m:将两个已排序的数据文件合并
- n:按字符串数值来排序,不转换为浮点数
- o file:将排序结果写出到指定的文件中
- R file:按随机生成的散列表的键值排序
- r:反序排序
- S size:指定使用内存的大小
- s:禁用最后重排序比较
- T dir:指定一个位置来存储临时工作文件
- t sep:指定一个用来区分键位置的字符
- u:和-c参数一起使用,检查严格排序;当不和-c一起使用,仅输出第一例相似的两行
- z:用NULL字符作为行尾,而不是用换行符
搜索数据:grep pattern file
- v:方向搜索,输出不匹配该模式的行
- n:显示匹配模式的行所在的行号
- c:只需要知道多少行匹配
- e:若需要制定多个匹配模式,可用-e来制定每个模式:grep –e t –e f file
压缩数据
- gzip:压缩文件,.gz
- gzcat:用来查看压缩过的文本文件的内容
- gunzip:用来解压文件
归档数据:tar –cvf –tf –xvf(.tar) -xzvf(.tgz)
- A:将一个已有tar归档文件追加到另一个已有tar归档文件
- c:创建一个新的tar归档文件
- d:检查归档文件和文件系统的不用之处
- r:追加文件到已有tar归档文件结尾
- u:将比tar归档文件中已有的同名文件新的文件追加到该tar归档文件中
- x:从已有tar归档文件中提取文件
- C dir:切换到指定目录
- f file:输出结果到文件或设备file
- j:将输出重定向给bzip2命令来压缩内容
- p:保留所有文件权限
- v:在处理文件时显示文件
- z:将输出重定向给gzip命令来压缩内容
进程列表:(pwd; ls; cd/etc; echo $BASH_SUBSHELL),若echo命令返回零,则表示没有子shell,若大于零,则表明存在shell。{}这个花括号不会创建子shell而[]会
sleep 10&:睡眠10s
jobs:显示当前运行在后台的作业 jobs -l还可显示命令的PID
后台运行:(tar *)&
协程:在后台生成一个shell,并在这个shell中执行命令。coproc My_job { sleep 10; }
组管理
基本介绍
文件:所有者、所在组、其他组
- 改变文件所有者:chown 用户名 文件名
- 组的创建:groupadd 组名
- 修改文件所在组:chgrp 组名 文件名
- 其他组:排除所有者和所在组
- 修改用户所在组:usermod -g 组名 用户名
- 修改用户登录目录:usermod -d 目录名 用户名 改变该用户登录的初始目录
权限基本介绍
- rwx[421]
权限管理
- chmod:chmod u=rwx,g=rx,o=x 文件名
- u、g、o、a(所有)
- chmod 751 文件名
- -R 递归修改
- chown
- chown -R gemsuser /
- chown newowner:newgroup file
- chgrp
定时任务调度
- crond任务调度
- -e:编辑
- 第几分钟 0~59
- 第几小时 0~23
- 第几天 1~31
- 第几月 1~12
- 星期几 0~7(0和7都代表星期日)
- *任何时间
- ,不连续时间
- -范围
- */n,每隔多久
- -l:显示
- -r:删除
- service crond restart:重启任务调度
- -e:编辑
磁盘分区挂载
Linux分区
- mbr
- gtp
硬盘说明
- IDE:hdx hda3-第一个IDE银盘上的第三个分区
- SCSI:sdx
lsblk -f:查看系统分区和挂载的磁盘
挂载经典案例
- fdisk /dev/sdb
- mkfs - t ext4 /dev/sdb1
- mount /dev/sdb1 /home/newdisk(临时挂载)
- 永久挂载:vi /etc/fstab
mount -a及时生效
磁盘情况查询
- df -hl
- du -h /目录
- -a含文件
- –max-depth=1子目录深度
- 统计文件个数 ls -l /home|grep “^-”|wc -l
- 统计目录个数 ls -l /home|grep “^d”|wc -l
- 统计文件个数包括子目录ls -lR /home|grep “^-”|wc -l
- 以树状图 tree
网络配置
- ifconfig
- ping
- 指定固定ip:vi /etc/sysconfig/netwok-scripts/ifconfig-eth0,static,dns,gateway,onboot=yes
- server network restart
修改主机名
- hostname
- vim /etc/sysconfig/network:HOSTNAME:yourname
- vim /etc/hosts
进程管理
显示系统执行的进程
- ps
- -a:显示当前终端所有的进程
- -u:以用户的格式显示进程信息
- -x:显示后台进程运行的参数
- -ef:查看父进程
终止进程
- kill
- -9
- killall
- killall gedit
- pstree
- -p:显示进程的PID
- -u:显示所属的用户
服务管理
管理指令
- service
- service sshd status
- /etc/init.d:列出系统那些服务
- vi /etc/inittab:查看或者修改运行级别
- chkconfig:可以给每个服务的各个运行级别的自启动
- chkconfig –list|grep sshd
- chkconfig –level 5 sshd off
动态监控进程
- top
- -d:top -d 10刷新时间
- -i:
- -p:
- u:查看特定用户
- k:进程号,杀进程
- P:cpu排序
- M:按内存排序
- N:pid排序
监看网络情况
- netstat
- -an:按一定排序排列输出
- -p:显示那个进程在调用
- netstat -anp|more
- netstat -tunlp
RPM和YUM
RPM
readhat package manager
- rpm -qa|grep xx
- rpm -q foxmail
- rpm -qi foxmail
- rpm -ql foxmail:查看安装位置
- rpm -qf /etc/passwd:查询文件属于哪个包
- rpm -e RPM包名称:卸载
- rpm -e -nodeps:强制删除
- rpm -ivh foxmail
- -i:install
- -v:verbose提示
- -h:hash进度条
yum
- yum list|grep xx
- yum install xx
内建命令
外部命令
- which ps
- type -a ps
当外部命令执行时,会创建出一个子进程。这种操作成为衍生(forking)
内建命令
不需要子进程来执行,如cd、exit。命令有多种形式,要查看命令的不同实现,使用type命令的-a选项,which只显示外部命令文件
- history:查看历史命令
- !!:会从shell历史记录中换回的命令,然后执行该命令
- history -a:在打开的会话向.bash_history添加记录
- history -n:要强制读取.bah_history文件,可以使用history -n命令
- !n:可用于执行该行指令
- alias -p:查看当前可用别名
- alias li=’ls -li’;
环境变量
全局环境变量
- printenv HOME
- env $HOME
- 创建全局变量:my_variable = ”I am Global now”; export my_variable
- 子shell无法使用export改变父shell中全局变量的值
局部环境变量
- set:显示特定进程设置的所有环境变量,包括局部变量、全部变量和用户定义变量
- echo $my_variable; my_variable=”hello world‘’
删除环境变量
- unset my_variable
设置PATH环境变量
- PATH=$PATH:dir,对PATH的修改只能持续到推出或者重启系统
永久改变环境变量
- 登录shell
- /etc/profile
- $HOME/.bash_profile
- $HOME/.bashrc
- $HOME/.bash_login
- $HOME/.profile
- $HOME下,shell会按照以上黄色标记顺序执行,运行第一个找到的文件,其余会被忽略
- 交互式shell:不是登录系统时启动的,检查HOME目录下的.bashrc文件
- 非交互式shell:BASH_ENV环境变量
数组变量
mytest=(ont two three)
echo ${mytest[*]}
获取数组长度
- arr_length=$:返回最后一个变量名
$*:将变量当成单个参数
$@:会单独处理每个参数
shift:左移,$1会丢失,$0不变
shift n
#:去掉左边
%:去掉右
单一符号是最小匹配,两个符号是最大匹配
${file:0:5}:提取最左边的5个字
对变量值的字符串做替换:
- ${file/dir/path}:将一个dir替换为path
- $(file//dir/pah):将全部dir替换为path
- ${file#/}:删掉第一个 / 及其左边的字符串
- ${file##/}:删掉最后一个 / 及其左边的字符串
- ${file#.}:删掉第一个 . 及其左边的字符串
- ${file##.}:删掉最后一个 . 及其左边的字符串
- ${file%/}:删掉最后一个 / 及其右边的字符串
- ${file%%/}:删掉第一个 / 及其右边的字符串
- ${file%.}:删掉最后一个 . 及其右边的字符串
- ${file%%.}:删掉第一个 . 及其右边的字符串
$$:本身的PID
$!:shell运行的最后的后台process的id
$*:”$1 $2 …$n”输出所有的参数
$@:”$1” … “$n”
$#:参数个数
Debug
Segmentation fault(core dumped)
- 在gcc编译的程序时使用”-g”选项,使编译文件带有调试信息
- 检查Linux设置的在发生段错误时文件大小
- ulimit -a
- 默认不产生,取消该限制
- ulimit -c unlimited
- 用gdb分析core文件
- gdb {executable} {dump file
- bt:查看出错的堆栈(backtrace)
- frame {num}:分析每个栈桢中变量情况
- info locals:查看局部变量
- info args:查看参数
- where:查看调用参数
Nmon监控工具
非交互模式
- -f:切换到非交互模式,必须是第一个参数
- -s:每多少秒采集一次数据
- -c:总共采集多少次数
- -t:包括Top进程的状态
- -m:指定生成的文件目录
可用于生成尾号为.nmon的CSV文件,可使用nmon_analyser把nmon生成的文件转换为excel。
http://www.ibm.com/developerworks/wikis/display/Wikiptype/nmonanalyser