linux基础命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux基础命令相关的知识,希望对你有一定的参考价值。
初学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="[\[email protected]\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
以上是关于linux基础命令的主要内容,如果未能解决你的问题,请参考以下文章