您的位置:首页 > 运维架构 > Linux

linux基础命令

2016-05-31 16:19 369 查看
初学linux者可能会出现忘掉命令的时候,这时候就应该把一些常用的命令记下了,这样每天都可以敲敲,日子一长就会在脑海中有了深刻的印象。下面是我记录的一下linux常用命令,以及服务的配置,都是非常实用的,但适合有点基础的人:

一.Linux系统日志的一些信息,日志配置文件syslog.conf

系统日志一般都存在/var/log下
常用的系统日志如下:
核心启动日志:/var/log/dmesg
系统报错日志:/var/log/messages
邮件系统日志:/var/log/maillog
FTP系统日志:/var/log/xferlog
安全信息和系统登录与网络连接的信息:/bar/log/secure
登录记录:/var/log/wtmp
News日志:/var/log/spooler
RPM软件包:/var/log/rpmpkgs
XFree86日志:/var/log/XFree86.0.log
引导日志:/var/log/boot.log
cron(定制任务日志)日志:/var/log/cron
网络:/etc/sysconfig/network-scrip/ifcif-etho

二、 常用命令

find ./ -mtime 0:返回最近24小时内修改过的文件。./代表需要查找的文件夹

/etc/motd 远程登录时显示提示信

sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行

yum instll xxx 安装xxx包

/etc/inittab 系统内核命令

mkfs -t ext3 -c /dev/sdb3 格式化分区

fdisk -l 磁盘详细信息

fdisk /dev/sdb1 | fdisk -l 磁盘分区

chkconfig [服务] --list status|stop 服务开启关闭

/etc/fstab 扩展槽开机挂载

/etc/sysconfig/iptables //防火墙的配置文件
service iptables stop/start //启动和关闭
-A INPUT -s 192.168.0.3 -p tcp ——dport 22 -j ACCEPT 防火墙配置:只允许这台机器用SSH连接
iptables -I INPUT -s 59.151.119.180 -j DROP //封IP连接,
iptables -I INPUT -s 211.1.0.0/16 -j DROP //封ip段

ulimit -f 10240 限制用户创建档案的容量

parted /dev/sdb print 查看分隔槽

cp /etc/skel/.{bash_profile,bashrc}

ifconfig | grep 'inet addr' | awk '{ print $2 }' | sed 's/addr://g' 查看某一列字段

read -p 人机交互,输入一个值再执行

netstat -t -u l -p 网络追踪

dmesg | grep -i hd eth 分析核心讯息

vmstat -a -fs -S -d -P 系统资源变化,侦测

vim ~/.bashrc bashrc可以设置快捷命令

alias so='source ~/.bashrc' 保存设置

alias PS11='echo PS1="[\u@\h \w \A #\#]\$"' 终端显示

alias sk='echo cp /etc/skel/.{basg_profile,bashrc} ~' 当终端显示出现错误时运作

alias grep='grep --color=auto' grep显示颜色

alias al='vim ~/.bashrc' alias快捷变量

export | set 查看变量

setup 补充说明:setup是一个设置公用程序,提供图形界面的操作方式

cal 2017 8 可查看日历

usermod -g stdent(组) index(用户) 改变用户所属组

chgrp stdent(组) ipconfig(文件) 改变文件所属组

chown liu(用户) ipconfig(文件) 改变文件所属用户

useradd 创建用户
groupadd 创建群组

PATH="$PATH":/root 快捷方式path的用法

rpm -ivh xx.rpm 安装rmp包

dd if=/dev/hdc1 of=/tmp/boot.whole.disk 备份

restore -t -f /root/boot.dump 还原文件或目录

三、详细设置

防火墙配置

iptables -F //清除配置

/etc/rc.d/init.d/iptables

1) 重启后生效
开启: chkconfig iptables on
关闭: chkconfig iptables off

2) 即时生效,重启后失效
开启: service iptables start
关闭: service iptables stop

需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。

在开启了防火墙时,做如下设置,开启相关端口,
修改/etc/sysconfig/iptables 文件,添加以下内容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

网络设置:

/etc/sysconfig/network-scripts/ifcfg-eth0 网络配置

ONBOOT=YES //开机启动
BOOTRPOTO=static //静态ip
DNS1=192.168.1.1 //DNS
IPADDR=172.16.2.1
NETMASK=255.255.255.0 //子网掩码
GATEWAY=172.16.1.1 //网关
service network restart 重启网络

限制ip登录:

/etc/hosts.deny 拒绝登录列表

/etc/hosts.allow 允许登录列表

一般采用 在拒绝登录列表里 设定所有IP
比如
sshd : all

再在允许登录列表中设定想要允许的IP
比如
sshd : 10.10.10.1
sshd : 192.168.1.1 : allow

crontab 定时任务

crontab -l //列表
crontab -e //编辑
crontab -d //删除

服务 crond.service

基本格式 :
*  *  *  *  *  command
分 时 日 月 周 命令

第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

shell l脚本调试方法

-n
读一遍脚本中的命令但不执行,用于检查脚本中的语法错误

-v
一边执行脚本,一边将执行过的脚本命令打印到标准错误输出

-x
提供跟踪执行信息,将执行的每一条命令和结果依次打印出来

touch命令 (写脚本的时候有用)

CC表示世纪
YY表示年
MM表示月
DD表示日
hh表示小时
mm表示分钟
ss表示秒
201001311200.34
CCYYMMDDhhmm ss

touch xxxx //创建xxx文本

-t: 后面可接时间,其格式如上所述
-d:后面接时间
-a:仅修改access time //状态更改,比如执行了,或被读取
-c:仅修改ctime时间,而不建立文件 //权限与属性被更改
-m:仅修改mtime //内容改变

将issue文件日期改为2008/07/15 13:13
touch -t 0807151313 /etc/issue
touch -m -d 0807151313 /etc/issue
touch -acmr /bin/ls /etc/sh.conf 把后一个时间改成前一个文件的时间

yum的用法
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1

yum remove | erase package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况

yum install setuptool安装setup,不过安装后使用运行setup只有Authentication configuration可用。

如想配置IP,安装system-config-network-tui即可。

yum install system-config-firewall-tui安装图形化Firewall配置工具。

yum list system-config* 全部安装。

日期的显示

日期 `date +%Y%m%d-%k`=20160531 //` `这是tab键上面的那个键,不是单引号

%a : 星期几 (Sun..Sat)
%A : 星期几 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接显示日期和时间
%d : 日 (01..31)
%D : 直接显示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第几天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
%w : 一周中的第几天 (0..6)
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
%x : 直接显示日期 (mm/dd/yy)
%y : 年份的最后两位数字 (00.99)
%Y : 完整年份 (0000..9999)
% : 印出
% %n : 下一行
%t : 跳格
%H : 小时(00..23)
%I : 小时(01..12)
%k : 小时(0..23)
%l : 小时(1..12)
%M : 分钟(00..59)
%p : 显示本地 AM 或 PM
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 %S : 秒(00..61)
%T : 直接显示时间 (24 小时制)
%X : 相当于 %H:%M:%S
%Z : 显示时区

文件比较运算 (写脚本的时候很有用)

-e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ]

  -d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ]

  -f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ]

  -L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ]

  -r filename 如果 filename 可读,则为真 [ -r /var/log/syslog ]

  -w filename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ]

  -x filename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ]

  filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ]

  filename1 -ot filename2 如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

  字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)

-z string 如果 string 长度为零,则为真 [ -z $myvar ]

  -n string 如果 string 长度非零,则为真 [ -n $myvar ]

  string1 = string2 如果 string1 与 string2 相同,则为真 [ $myvar = one two three ]

  string1 != string2 如果 string1 与 string2 不同,则为真 [ $myvar != one two three ]

  算术比较运算符

  num1 -eq num2 等于 [ 3 -eq $mynum ]

  num1 -ne num2 不等于 [ 3 -ne $mynum ]

  num1 -lt num2 小于 [ 3 -lt $mynum ]

  num1 -le num2 小于或等于 [ 3 -le $mynum ]

  num1 -gt num2 大于 [ 3 -gt $mynum ]

  num1 -ge num2 大于或等于 [ 3 -ge $mynum ]

四、文本操作命令

sed 用法:

sed '1d' ab 删除第1行
sed '$d' ab 删除最后一行
sed '1,2d' ab #删除第一行到第二行

sed -n '1p' ab #显示第一行
sed -n '$d' ab #显示最后一行

sed '1,3a drink tea' ab #第一行到第三行后增加字符串"drink tea"

sed '1c Hi' ab #第一行代替为Hi

sed -n '/ruby/p' ab | sed 's/ruby/bird/g' #替换ruby为bird
sed -n '/ruby/p' ab | sed 's/ruby//g' #删除ruby

sed -i '$a bye' ab #在文件ab中最后一行直接输入"bye"

awk 用法:

awk :对于文件中一行行的独处来执行操作 。

awk -F “:” '{print $1,$4}' :使用‘:’来分割这一行,把这一行的第一第四个域打印出来

<、<=、==、!=、>=、~匹配正则表达式、!~不匹配正则表达式

匹配:awk '{if ($4~/ASIMA/) print $0}' temp 表示如果第四个域包含ASIMA,就打印整条

精确匹配:awk '$3=="48" {print $0}' temp 只打印第3域等于"48"的记录

不匹配: awk '$0 !~ /ASIMA/' temp 打印整条不包含ASIMA的记录

不等于: awk '$1 != "asima"' temp

小于: awk '{if ($1<$2) print $1 "is smaller"}' temp

设置大小写: awk '/[Gg]reen/' temp 打印整条包含Green,或者green的记录

任意字符: awk '$1 ~/^...a/' temp 打印第1域中第四个字符是a的记录,符号’^’代表行首,符合’.’代表任意字符

或关系匹配: awk '$0~/(abc)|(efg)/' temp 使用|时,语句需要括起来

AND与关系: awk '{if ( $1=="a" && $2=="b" ) print $0}' temp

OR或关系: awk '{if ($1=="a" || $1=="b") print $0}' temp

cut用法:

-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除

who|cut -b 3 #每行第三个字节
who|cut -b 3-5,8 #第三到五,以及第八个字节

cat tab_space.txt |cut -d ' ' -f 1 #区域以空格为分割,取第一段

sort 用法:

以行为单位,相互比较,以字母开头来排序

-u 去掉重复行

-r 降序

sort -r number.txt -o number.txt #重定向文件要 -o

五、解压/压缩命令

tar -zxf apr-1.4.5.tar.gz

.tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
———————————————
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
———————————————
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
———————————————
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
———————————————
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
———————————————
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息