遇到的linux日常知识点
文件
source file 执行文件
mv /test1/file1 /test2/file2 将file1复制到test2并将文件名改为file2
mv /test1/file1 /test2/ 将file1移动到test2目录下
mv test.{txt,js} 修改test.txt为test.js
mv test1 test2 修改test1名为test2
file -i test.txt 查看文件的编码格式
windows上编写的文件上传至linux,Windows默认编码GBK,linux为UTF-8,需转码 #iconv -f GBK -t UTF-8 test.txt -o test.txt
unzip test.zip 解压zip文件
zip filename.zip test 压缩zip文件
tar zxvf test.tar 解压tar文件
tar czvf filename.tar test 压缩tar文件
tar zxvf test.tar.gz 解压tar.gz文件
tar zcvf filename.tar.gz test 压缩tar.gz文件
gunzip test.gz / gzip -d test.gz 解压gz文件
gzip filename.gz test 压缩gz文件
远程终端
export DISPLAY=显示终端的IP地址:0.0 在远程终端xbowser上显示
export LANG=en_US 在远程终端上显示防止出现乱码
rz -be 文件的远程传输
用户,组
adduser username ubuntu下新增一个用户
passwd username 给username修改密码
groupadd -g 502 groupname 添加一个用户组,组id为502
useradd -u 502 -g groupname username 新增一个用户username,将其添加到用户组groupname
usermod -a -G groupname username 将一个已有用户添加到一个已有用户组,使得该用户组成为该用户的附加组 -a 代表append
eg: usermod -a -G root username 将username添加到root组,使其有root权限
usermod -g username groupname 将username的主要用户组改为groupname
gpasswd -d username groupname 将一个用户从某个组中删除,需要保证group不是用户的主组
权限
ls -l temp 查看temp文件权限详细
chown -R oracle temp 将temp整个文件夹授权给oracle用户
chmod -R 444 filename 修改文件权限
444 r--r--r--
600 rw-------
644 rw-r--r--
666 rw-rw-rw-
700 rwx------
744 rwxr--r--
755 rwxr-xr-x
777 rwxrwxrwx
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限
chmod o+w temp 表示给其他人授予写temp文件的权限
chmod go-rw temp 表示删除所有者所在群组和其他人对temp文件的读写权限
+为增加,-为删除
u代表所有者(user) g代表所有者所在的组群(group) o代表其他人,但不是u和g (other) a代表全部的人,也就是包括u,g和o
r表示文件可以被读(read) w表示文件可以被写(write) x表示文件可以被执行
主机相关操作
reboot,shutdown -r now 立刻重启
shutdown -h now 立刻关机
shutdown -h 20:25 20:25关机
/etc/sysconfig/network 配置主机名hostname(redhat使用过)
网络IP等配置
/etc/sysconfig/network-scripts/ifcfg-eth* (redhat,centos系列)对其修改配置ip
一个网卡对应一个ifcfg-eth*文件
DEVICE=eth0 #网卡名
HWADDR=00:0C:29:99:ED:C1 #mac地址
TYPE=Ethernet #网卡类型
UUID=ecb1517d-d450-4409-8289-1deed3224b96 #uuid
ONBOOT=yes #开机上电自启动网络连接(yes/no)
NM_CONTROLLED=yes
BOOTPROTO=static #启用静态IP地址 若是dhcp则是动态获取ip后面就不需要填
IPADDR=192.167.2.146 #ip地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.167.2.1 #网关
service network restart #重启网卡
/etc/network/interfaces (ubuntu)对其修改配置ip
所有网卡对应一个interfaces文件
auto ens192 #要设置的网卡
iface ens192 inet static #设置静态IP;如果是使用自动IP用dhcp,后面的不用设置,一般少用
address 192.167.2.144 #IP地址
gateway 192.167.2.1 #子网掩码
netmask 255.255.255.0 #网关
dns-nameservers 192.162.76.9 27.26.90.3 #dns
/etc/init.d/networking restart #重启网卡
以上如果ifconfig还是找不到配置的网卡,重启虚拟机
配置各主机之间ssh节点互信(ssh直接连接不输入密码)
提前各节点添加对应hosts
各个节点执行:
mkdir ~/.ssh
chmod 755 .ssh
/usr/bin/ssh-keygen -t rsa
/usr/bin/ssh-keygen -t dsa
将所有的key文件汇总到一个总的认证文件中,在节点1上执行:
ssh node1 cat ~/.ssh/id_rsa.pub >> authorized_keys
ssh node2 cat ~/.ssh/id_rsa.pub >> authorized_keys
ssh node1 cat ~/.ssh/id_dsa.pub >> authorized_keys
ssh node2 cat ~/.ssh/id_dsa.pub >> authorized_keys
节点1上存在一份完整的key,拷贝到节点2:
[root@node1 ~] cd ~/.ssh/
[root@node1 .ssh] scp authorized_keys node2:~/.ssh/
[root@node2 .ssh] chmod 600 authorized_keys
各个节点执行:
ssh node1 date
ssh node2 date
检验是否配置成功,在节点1上不用输入密码就可以通过ssh连接节点2,说明配置成功
查看端口占用情况
netstat -apn
netstat -apn|grep portnums
查找
find / -name test*
vim
gg 移动到文本头部
GG 移动到文本尾部
/ 查找字符串
n 移动到查找的下一个
N 移动到查找的上一个
环境变量
普通用户想用DB2用户的指令:更改普通用户所对应的环境变量PATH,在~/.bash_profile的PATH中添加db2对应的启动路径
eg:
. /home/db2inst1/sqllib/db2profile
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/bin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:$HOME/bin:/home/db2inst1/sqllib/bin:/home/db2inst1/sqllib/adm:/home/db2inst1/sqllib/misc;
FTP
ftp remote_path //连接到远程IP
ftp> status //显示当前ftp状态
ftp> get filename //复制远程的文件到本地
ftp> put filename //复制本地文件到远程服务器
ftp> quit //关闭连接
shell
#!/bin/bash
#shell参数传递
echo "第一个参数为:$1 "
echo "参数个数为:$# "
echo "传递的参数作为一个字符串显示:$* "
#shell基本运算
#expr 是表达式计算工具,使用它完成表达式求值操作
#变量名和等号之间不能有空格
val=`expr 3 + 3`
val2=`expr $1 + $2`
echo "$val2 $val"
if [ $val == $val2 ]
then
echo "val等于val2";
else
echo "val不等于val2"
fi
#文件测试判断运算
file="./test.sh"
if [ -r $file ]
then
echo "文件可读"
else
echo "文件不可读"
fi
#echo后面""可以显示转义字符,''原样输出
echo "\"hello tom\""
echo "将内容定向到文件中" > filename
echo `date` #显示命令结果
for loop in 1 2 3 4 5 6
do
echo "the number is : $loop "
done
a=8;
while(($a<=10))
do
echo $a
let "a++" #let命令用于执行一个或多个表达式
done
command > file #覆盖file文件原本的内容
command >> file #文件末尾累加输入,不会覆盖
source file.sh #文件包含其他file文件内容
脚本执行:
$ chmod +x test.sh
$ ./test.sh 1 2 3
cat
#cat命令输出显示整个文件
cat file.log #显示打印整个file.log
grep
#grep命令使用正则表达式搜索匹配文本,把匹配的行打印
cat file.log | grep '出现错误' #grep将file.log中的有"出现错误"字段的行打印
grep "SQLSTATE" *.log #查找所有后缀名为.log的日志文件并且打印出含有字符串SQLSTATE 的行
wc
#wc命令为统计指定文件的字节数,字数,行数。
wc -l #统计行数
wc -c #统计字节数
wc -w #统计字数
num=`cat file.log | grep '出现错误' | wc -l` #统计file.log中有'出现错误'字段的行数
tr
#tr命令对来自标准输入的字符进行替换
echo "HELLO TOM" | tr 'A-Z' 'a-z' #将输入字符由大写转换为小写
linux遍历
filelist=`ls /home/temp*.sh` #获取home目录下所有temp开头的.sh文件
for file in $filelist #遍历执行
do
sh $file
done
awk
#awk强大的文本分析工具,把文件逐行读入,以给定的分隔符(默认为空格)将每行切片,切片的部分再进行各种分析处理
#awk适合对文本列操作
awk [-F filed-separator] 'commands' input-files
awk -F ":" 'print $2' temp.log #显示输出用":"分隔符将temp.log分割后的第二列所有内容
cat /etc/passwd | awk -F ":" 'print $1' #显示输出用":"分隔符将passwd分割后的第一列所有内容
xargs
xargs能够捕获一个命令的输出,然后传递给另外一个命令
kubectl get po | grep tom-server | awk '{print $1}' | xargs kubectl delete po # 批量删除tom-server*名称的pod
xargs -I 能够对管道参数命名,传给后面的命令。
ll | awk '{print9}' | xargs -I fileName -p kubectl cp fileName dsdsdhsjh:/root/tom/fileName # file为管道传入参数变量
sed
#sed命令用来自动编辑文件,简化对文件的反复操作,对文件内容的编辑,替换,读取
#sed适合对文本行操作
sed [options] 'command' files
sed -n '1p' temp.log #打印temp.log的第一行
awk -F ":" 'print $2' temp.log | sed -n '1p' #打印输出temp.log的第二列第一行的内容
sed -i "s/dddd/mmmm/g" /home/test.txt #将test.txt中所有dddd替换成mmmm
sed -i "s/dddd/mmmm/" /hone/test.txt #将test.txt的第一个dddd替换成mmmm
set
#set :Linux set命令用于设置shell,能设置所用shell的执行方式依照不同的需求进行设置。
项目实例中主要是在创建控制文件前对shell的一些设置。
spool
#spool是Oracle数据库交互工具SQLPULS的文件操作命令,其可以将屏幕显示及查询的结果输入到指定的文本文件
在项目实例中使用spool操作生成对应的控制文件
tee
#tee :这个命令用于读取标准输入的数据,并将其内容输出到指定的文件中
tee –a file #就是将获得的内容附加到文件file的后面
ssh
#连接到远程主机
ssh userName@remoteServerIp
#连接到远程主机指定的端口22
ssh userName@remoteServerIp -p 22
转载请注明 from tomsun28