linux命令
一、服务器上添加用户
--创建用户组
groupadd mysql
--创建用户 -d 指定目录 -m 指定为根目录 -g 指定用户组
useradd -d /export/home/mysql -m mysql -g mysql
--创建密码
passwd mysql
mysql123
二、crontab定时任务
date -d参数使用
a=`date -d tomorrow +\%e`
date -d next-day +%Y%m%d #获取明天的日期
date -d last-day +%Y%m%d #获取昨天的日期
date -d last-month +%Y%m #获取上个月的年和月
date -d next-month +%Y%m #获取下个月的年和月
date -d next-year +%Y #获取明年的年份
“*”代表取值范围内的数字,
“/”代表”每”,
“-”代表从某个数字到某个数字,
“,”分开几个离散的数字
三、查看当前登录用户
whoami
last/lastlog
id
四、测试端口的连通性
telnet
ssh -v -p port username@ip
curl ip:port
weget ip:port
五、复制命令
scp -rp /export/home/laity/laity.tar.gz laity@127.0.0.1:/export/home/laity/ #可复制目录
六、替换命令
sed -i 's/127.0.0.1/127.0.0.2/' 文件名 #将127.0.0.1替换为127.0.0.2
sed -i 's/jdbc:oracle:thin:@127.0.0.1:1521:laity/jdbc:oracle:thin:@127.0.0.2:1521:laity1/' a.log
七、查看进程启动时间
ps -o lstart -p PID 根据PID来查询
ps -o lstart,etime -p PID #根据PID来查询,打印出启动时间和已经运行的时间
ps -eO lstart | grep PROCESS #根据进程名字查询
八、软链接
8.1 创建软链接
ln -s 真实地址 快捷键
ln -s /export/home/oracle/app/oracle/lib/libclntsh.so.11.1 libclntsh.so
ln -s /export/home/oracle/app/oracle/lib/libclntsh.so libclntsh.so.10.1
8.2 修改软链接
ln -snf /export/home/oracle/laity/app/oracle/lib/libclntsh.so libclntsh.so.10.1
九、查看用户操作时间
HISTTIMEFORMAT="%Y/%m/%d/%H-%M-%S #>"
十、linux服务器上添加微软雅黑字体
1、安装插件
yum install -y fontconfig mkfontscale
2、上传字体文件msyh.ttf到/usr/share/fonts/zh_CN --windows下就可以,该msyh.ttf字体在windows和linux通用
3、执行安装
cd /usr/share/fonts/zh_CN
mkfontscale
mkfontdir
4、刷新缓存
fc-cache
5、查看系统全部字体
fc-list
查看已安装的中文字体
fc-list :lang=zh
6、刷新字体缓存
fc-cache -fv
十一、sftp上传和下载
下载:get /var/www/fuyatao/index.php /home/fuyatao/
上传:put /home/fuyatao/downloads/Linuxgl.pdf /var/www/fuyatao/
十二、linux下oracle环境变量配置
export ORACLE_BASE=/data/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1;
export ORACLE_SID=orcl;
export PATH=$ORACLE_HOME/bin:$PATH;
十三、备份
echo " tar ... "
cd /export/home/laity
mkdir bak
find /export/home/laity/aaa -name "*.*" | xargs -i mv {} /export/home/laity/bak
tar -czvf MID_$(date -d "today" +"%Y%m%d").tar.gz bak
unalias rm
rm -rf bak
echo "end........"
十四、linux服务器下sqlplus的设置
set echo on; #显示当前在正在执行的语句;
set echo off; #控制start命令不列出命令文件中的每一命令
set feedback off; #显示由查询返回的记录数 off等价为0
set heading off; #报表中列标题不打印
set pagesize off; #置 从顶部标题至页结束之间的行数
set linesize off; #置一行中显示的字符总数
set termout off; #由文件执行命令时不显示输出
set trimout on; #每一显示行的末端去掉空格
set trimspool on; #去掉spool输出时每行末端空格
set colsep'|'; //-域输出分隔符
set echo off; //显示start启动的脚本中的每个sql命令,缺省为on
set echo on //设置运行命令是是否显示语句
set feedback on; //设置显示“已选择XX行”
set feedback off; //回显本次sql命令处理的记录条数,缺省为on
set heading off; //输出域标题,缺省为on
set pagesize 0; //输出每页行数,缺省为24,为了避免分页,可设定为0。
set linesize 80; //输出一行字符个数,缺省为80
set numwidth 12; //输出number类型域长度,缺省为10
set termout off; //显示脚本中的命令的执行结果,缺省为on
set trimout on; //去除标准输出每行的拖尾空格,缺省为off
set trimspool on; //去除重定向(spool)输出每行的拖尾空格,缺省为off
set serveroutput on; //设置允许显示输出类似dbms_output
set timing on; //设置显示“已用时间:XXXX”
set autotrace on; //设置允许对执行的sql进行分析
set verify off //可以关闭和打开提示确认信息old 1和new 1的显示
十五、端口修改
vi /etc/ssh /sshd_config
端口修改完毕后,重启ssh
service sshd restart
修改端口前需要关闭防火墙
防火墙查看:service iptables status
防火墙关闭:service iptables stop
防火墙开启:service iptables start
十六、命令详解
16.1 rpm详解
一、简介
RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”。
二、rpm作用
1、可以安装、删除、升级和管理软件;当然也支持在线安装和升级软件;
2、通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;
3、可以在查询系统中的软件包是否安装以及其版本;
4、作为开发者可以把自己的程序打包为RPM 包发布;
5、软件包签名GPG和MD5的导入、验证和签名发布;
6、依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统;
三、使用rpm需要的权限
RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装;
四、参数
-a 查询验证所有包
-q 查询包
-i 安装软件包
-e 卸载软件包
-U 更新包
-v 详细输出
-h 安装包时哈希打印哈希标记(适用于-v)
-replacepkge 无论软件包是否已被安装,都强行安装软件包
-test 安装测试,并不实际安装
-nodeps 忽略软件包的依赖关系强行安装
-force 忽略软件包及文件的冲突
五、查询
1、查询已经安装的软件
rpm -qa |grep 软件名
2、安装一个新的软件包
rpm -ivh file.rpm
3、更新一个软件包
rpm -Uvh file.rpm
4、删除一个软件包
rpm -e file.rpm
16.2 iptables 网络隔离
隔离:iptables -A INPUT -s 192.168.1.1 -j DROP
解隔离:iptables -D INPUT -s 192.168.1.2 -j DROP
常用命令:
-A 追加规则-->iptables -A INPUT
-D 删除规则-->iptables -D INPUT 1(编号)
-R 修改规则-->iptables -R INPUT 1 -s 192.168.12.0 -j DROP 取代现行规则,顺序不变(1是位置)
-I 插入规则-->iptables -I INPUT 1 --dport 80 -j ACCEPT 插入一条规则,原本位置上的规则将会往后移动一个顺位
-L 查看规则-->iptables -L INPUT 列出规则链中的所有规则
-N 新的规则-->iptables -N allowed 定义新的规则
通用参数:
-p 协议 例:iptables -A INPUT -p tcp
-s源地址 例:iptables -A INPUT -s 192.168.1.1
-d目的地址 例:iptables -A INPUT -d 192.168.12.1
-sport源端口 例:iptables -A INPUT -p tcp --sport 22
-dport目的端口 例:iptables -A INPUT -p tcp --dport 22
-i指定入口网卡 例:iptables -A INPUT -i eth0
-o指定出口网卡 例:iptables -A FORWARD -o eth0
-j 指定要进行的处理动作
常用的ACTION:
DROP:丢弃
REJECT:明示拒绝
ACCEPT:接受
SNAT基于原地址的转换
source--指定原地址
16.3 netstat命令详解
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指%0A的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
#查看未被占用的端口
netstat -nultp
#查看端口的使用情况
netstat -antp |grep 3306
16.4 find命令
-name 名称查找
-size 大小查找
-type 类型查找 f:普通文件 d:目录文件 l:链接文件 b:块设备文件 c:字符设备文件 p:管道文件 s:socket文件
-user 属性查找
-iname 忽略大小写查找
-[cam]time(create/access/modify -time) 时间查找
-maxdepth 深度查找
-exec 执行动作
#查找文件大于10M的
find ./ -type f -size +10M
#忽略大小写的文件
find ./ -type f -iname "*.log"
#访问时间小于20天
find ./ -ctime -20
#访问时间大于20分钟
find ./ -mmin +20
#文件名后缀不是log的文件
find ./ ! -name "*.log"
#查找文件是log后缀,并查看大小
find ./ -name "*.log" -exec du -sh {} \;
16.5 压缩命令
gzip ./* --压缩文件
gzip -l ./* --查看文件
gzip -dv ./* --解压文件
16.6 more命令
= 输出当前行的行号
:f 输出文件名和当前行的行号
+n 从多少行开始
16.7 vi命令
yy:复制光标所在行
p:复制单行到您想粘贴之处。(指令‘yy’与‘p’必须搭配使用)
按 G --移动到文章的最后一行行首
按gg --移动到文章的第一行行首
按^ --移动到光标所在的行首
按 $ --移到光标所在行的行尾
:set nu --显示当前行号
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
l 右
h 左
k 上
j 下
16.8 grep命令
文本搜索工具,对文本内容进行过滤,筛选(global search regular expression and print out the line)
-i --忽略大小写
-c --只输出匹配字符串行的数量
-n --列出所有匹配的行,并显示行号
-l --只列出符合条件的文件名
-r --递归搜索
-x --匹配整行
-w --匹配整词
-E --匹配多个内容 grep -E 'zheng|guan' ./*
16.9 uname命令
uname -a:显示系统名、节点名称、操作系统的发行版号、内核版本等等。
系统名:
Linux
节点名称:
qyw
操作系统的发行版号:
3.10.0-957.21.3.el7.x86_64
命名规则:
主版本号:3
次版本号:10【奇数为开发版本,偶数为稳定版本】
修订版本号:0【修改的次数】
此次版本的第N次修改:957
el7:redhat enterprise linux 7
x86_64:编译框架(64位)
内核版本:
#1 SMP Tue Jun 18 16:35:19 UTC 2019
硬件平台:
x86_64
机器硬件名:
x86_64
系统处理器的体系结构:
x86_64
操作系统:
GNU/Linux
16.10 sed命令
截取大日志方法:
sed -n '/2023-02-27 13:/,/2023-02-27 17:/p' error.log >>a.log
/2023-02-27 13:/,/2023-02-27 17:/p :指截取从2023-02-27 13至2023-02-27 17日志
error.log:指源文件,即需要截取日志所在的文件
a.log:指截取日志落地的日志文件
十七、月底最后一天执行脚本方法
17.1 直接使用crontab
59 23 28-31 * * [ `date -d tomorrow +\%e` -eq 1 ] && sh /export/home/laity/user_bak.sh >> /export/home/laity/user_bak.log
#亲测不是特别准确,有时好使有时不好使,使用时需多观察
59 23 28-31 * * [ "$(date -d tomorrow +\%e) == "01" ] && sh /export/home/laity/user_bak.sh >> /export/home/laity/user_bak.log
17.2 脚本和定时任务
1)vim user_bak.sh
#!/bin/bash
today=`date +%d`
last_day=`cal | xargs | awk '{print $NF}'`
if [ "$today" = "$last_day" ];then #具体情况具体分析
echo 'dede' >> /tmp/test.txt #要执行的脚本
fi
2)crontab -e
59 23 28-31 * * sh /export/home/laity/user_bak.sh >> /export/home/laity/user_bak.log