######
base64_编码
如果在linux上直接运行base64命令,则是对字符串进行编码
在python和go语言中,需要将字符串转换成字节才能进行base64编码,两者的结果不一样
echo "Hello World" | base64
######
read_同时为多个变量赋值
命令结果同时赋值给read命令后的两个变量
read drbdconstat nodesync <<< $(drbd-overview | awk '{print $2,$4}')
######
tr_替换字符串
SET1/SET2: 字符集,里边是单个字符,不是连续字符,若替换联系字符,可以使用sed
-c: complement,用SET2替换SET1中没有包含的字符
-d: delete,删除SET1中所有的字符,不转换
-s: squeeze-repeats,压缩SET1中重复的字符,即删除重复的字符
-t: truncate-set1,将SET1用SET2替换,一般缺省为-t-c:complement,用SET2替换SET1中没有包含的字符
echo "dd ddd" | tr -d " " #tr命令删除空格
echo "2019-9--9" | tr "-" ":" #"-"替换成":"
######
source_加载环境变量
source:
source命令用法:
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代。
如:source .bash_rc 与 . .bash_rc 是等效的。
比如您在一个脚本里export $KKK=111 ,假如您用./a.sh执行该脚本,执行完毕后,您运行 echo $KKK
,发现没有值,假如您用source来执行 ,然后再echo
,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是
source不同他就是在本shell中执行的,所以能够看到结果
source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是一个点符号,(从Bourne Shell而来)是source的另一名称。这两个命令都以一个脚本为参数,该脚本将作为当前shell的环境执行,即不会启动一个新的子进程。所有在脚本中设置的变量将成为当前Shell的一部分。同样的,当前脚本中设置的变量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文件,如 .bash_profile 和 .profile 等等。例如,如果在登录后对 .bash_profile 中的 EDITER 和
TERM 变量做了修改,则可以用source命令重新执行 .bash_profile 中的命令而不用注销并重新登录。象.bash_profile 或其它类似的Shell脚本这样,文件无需可执行权限即可用source或点命令执行。
######
script_标准打印输出到文件
命令结果输出到指定文件
script.sh > result.log 2>&1
######
scp_远程拷贝文件
2.虚拟机之间scp命令拷贝文件,提示 Read from socket failed: Connection timed out
现象:控制面口地址分别为128.143.17.129 和 128.143.17.130,使用scp命令拷贝文件,出现连接超时的错误。ssh也不行。
[root@zxveg ~]# ssh 128.143.17.130
Read from socket failed: Connection timed out
[root@zxveg home]# scp pycrypto-2.6.1.tar.gz root@128.143.17.130:/home
Read from socket failed: Connection timed out
lost connection
用 scp -v 查看出现,看到在下面的地方中断了连接。
Read from socket failed: Connection timed out
lost connection
[root@zxveg_247 home]# scp -v ZXVEG_V01.01.10_P1B1_VEG_1604221825.rpm root@128.143.17.129:/home/tmp
Executing: program /usr/bin/ssh host 128.143.17.129, user root, command scp -v -t /home/tmp
OpenSSH_6.4, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 51: Applying options for *
debug1: Connecting to 128.143.17.129 [128.143.17.129] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/id_rsa type 1
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: identity file /root/.ssh/id_dsa type 2
debug1: identity file /root/.ssh/id_dsa-cert type -1
debug1: identity file /root/.ssh/id_ecdsa type -1
debug1: identity file /root/.ssh/id_ecdsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.4
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.4
debug1: match: OpenSSH_6.4 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
Read from socket failed: Connection timed out
lost connection
原因: 两个虚拟机之间。ssh或者scp 控制面128地址不通,原因是网卡的mtu被设为1542,估计超过了virtio所支持的MTU,改为1500以后,问题解决
######
ps_查看系统进程
1、启动进程的用户名过长,显示不全,通过如下字段指定显示
ps -o ruser=userForLongName -e -o pid,ppid,c,stime,tty,time,cmd
2、# 查看是否有虚机进程僵死
ps -ef |grep defunct
root 735 1 95 May05 ? 4-18:24:52 [qemu-system-x86] <defunct>
######
ping_测试网络连通
-M 包是否分片
######
passwd_修改用户密码
######
openssl_证书签发认证及校验
openssl verify -purpose sslclient/sslserver -CAfile ca.cert client.cert
######
mount_挂载与解挂
mount -t vfat /dev/sdb /mnt/usb_update/
mount -t vfat /dev/sdb1 /mnt/usb_update/
######
iptables_网络防火墙
实现地址nat映射
iptables -t nat -A POSTROUTING -s 193.168.103.0/24 -o eth2 -j SNAT --to-source 15.168.10.254
iptables -t nat -A PREROUTING -d 15.168.10.254 -j DNAT --to-destination 193.168.103.10
######
du_查看文件夹大小
du -ah --max-depth=1 这个是我想要的结果 a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度。
du命令用来查看目录或文件所占用磁盘空间的大小。常用选项组合为:du -sh
一、du的功能:`du` reports the amount of disk space used by the specified files and for each subdirectory (of directory arguments). with no arguments,`du` reports the disk space for the current directory。
很明显,与df不同,它用来查看文件或目录所占用的磁盘空间的大小。
二、du常用的选项:
-h:以人类可读的方式显示
-a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
-s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小
-c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和
--apparent-size:显示目录或文件自身的大小
-l :统计硬链接占用磁盘空间的大小
-L:统计符号链接所指向的文件占用的磁盘空间大小
一、du -h:这个就不多说了。
二、du -a:使用此选项时,显示目录和目录下子目录和文件占用磁盘空间的大小。
可以看出,默认情况下du只显示download目录占用磁盘空间的大小,而使用-a选项后,它不仅显示了目录(最后一行),而且显示了目录下各个文件占用磁盘空间的大小。
三、du -s:使用此选项时,du只显示目录所占用磁盘空间的大小,而不显示其下子目录和文件占用磁盘空间的信息。
默认情况下,du不显示目录下文件占用磁盘空间的信息,但它会显示其下子目录占用磁盘空间的信息;而使用-s选项以后,只显示xx目录占用磁盘空间的大小。
四、du --apparent-size:显示文件或目录自身大小,而不是它们占用的磁盘空间大小。文件或目录占用磁盘空间的大小与它们自身大小有时候并非完全一致;这种现象非linux所独有,windows里也是如此。我们看这个选项的帮助文档的解释:The apparent size of a file is the number of bytes reported by `wc –c` regular files ,or more generally, `ls –l –block-size=1` or `stat –format=%s`.For example, a file containing the word `zoo` with no newline would, of course, have an apparent size of 3. Such a small file may require anywhere from 0 to 16 kib or more of disk space, depending on the type and configuration of the file system on which the file resides.
这段话给出了文件或目录自身大小与占用磁盘空间大小的区别。他下面举出了一个更加夸张的例子,这里就不把它写出来了。我们知道了:wc或ls --block-size显示的是其自身大小,而du给出的则是占用的磁盘空间的大小。
五、du -c:使用此选项时,不仅显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和。
如图所示,加上-c选项后,du不仅显示两个目录各自占用磁盘空间的大小,还在最后一行统计它们的总和。
六、du -l:这个选项主要是针对硬链接。在统计目录占用磁盘空间大小时,-l选项会把硬链接也统计进来。帮助文档是这样解释的:Count the size of all files,even if they have appeared already(as a hard link)。
我们在download目录下建立一个硬链接,指向本目录下的一个文件。不使用-l选项时,du发现硬链接指向本目录下的文件,于是自动忽略该链接文件,以免造成重复统计;使用-l选项,du才会把硬链接文件也统计进来。
七、du -L:这个选项主要是针对符号链接。它会把符号链接所指向的文件占用磁盘空间的大小也统计进来。帮助文档是这样解释的:Dereference symbolic links(show the disk space used by the file or directory that the link points to instead of the space used by the link)。
我们在download目录下创建一个符号链接,指向本目录下的一个文件。我们看到上面图片中显示的操作结果,当使用-L选项时,du会把符号链接所指向的文件的大小也统计到目录里来。
另外我们看du -lh的结果,与du -h相同,好像没有统计出符号链接的大小;其实并非如此。从实际操作来看,符号链接本身似乎并不占用磁盘空间,所以才出现上述情况。
最后,du命令在统计目录占用磁盘空间时,默认不统计链接文件(无论是硬链接或是符号链接),所以要用-l和-L选项特地指出来;此外,du命令默认不显示目录下文件占用磁盘空间的信息,但是却默认显示其下子目录所占用磁盘空间的信息。怪哉。
######
date_日期时间设置
date -s //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523 //设置成20120523,这样会把具体时间设置成空00:00:00
date -s 01:01:01 //设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23" //这样可以设置全部时间
date -s "01:01:01 20120523" //这样可以设置全部时间
date -s "2012-05-23 01:01:01" //这样可以设置全部时间
date -s "20120523 01:01:01" //这样可以设置全部时间
date +'%Y%m%d%H%M%S'
date +%s%N 可以获得一个纳秒级的unix时间戳(当前时间)
date -d @"$time1" "+%F %T" 2
date -d "$time2" +%s 2> /dev/null
######
crontab_定时任务
第1列分钟1~59
第2列小时1~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~6(0表示星期天)
第6列要运行的命令
下面是crontab的格式:
分 时 日 月 星期 要运行的命令
这里有crontab文件条目的一些例子:
30 21 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/apache/bin/apachectl restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/apache/bin/apachectl restart
上面的例子表示每周六、周日的1 : 10重启apache。
0,30 18-23 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/apache/bin/apachectl restart
上面的例子表示每星期六的11 : 00 pm重启apache。
* */1 * * * /usr/local/apache/bin/apachectl restart
每一小时重启apache
* 23-7/1 * * * /usr/local/apache/bin/apachectl restart
晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/apache/bin/apachectl restart
每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/apache/bin/apachectl restart
一月一号的4点重启apache
######
chkconfig_修改指定服务在各个运行级别启动信息
如果在服务名后面指定了on,off 或者 reset,那么 chkconfig 会改变指定服务的启动信息。
on 和 off 分别指服务在改变运行级时的启动和停止。
reset 指初始化服务信息,无论有问题的初始化脚本指定了什么。
对于 on 和 off 开关,系统默认只对运行级 3,4, 5有效,
但是 reset 可以对所有运行级有效。
指定 --level 选项时,可以选择特定的运行级。
需要说明的是,对于每个运行级,只能有一个启动脚本或者停止脚本。
当切换运行级时,init 不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。
######
echo 'ubuntu:CloudStudio__123' | chpasswd
useradd
-p 指定密码,密文格式
-m 创建家目录
-d 指定根目录
-U 创建同名用户组
-s 指定shell
/var/spool/mail/ 电子邮箱目录,与用户名相同
echo 'ubuntu:CloudStudio__123' | chpasswd
# cpu mem 统计
/proc/stat 该文件包含了所有CPU活动的信息 统计了cpu各个状态的时间 以jiffies为单位
/proc/<pid>/stat 统计进程
/proc/<pid>/task/<tid>/stat 统计线程
# 日志 轮转 配置
cat /etc/logrotate.conf
# ntp同步
ntpstat -p 查看时间同步状态
#修改ftp用于名和密码
echo "VMVNFM:VMVNFM" |chpasswd
# history 显示命令执行时间
以ROOT用户编辑/etc/profile文件,在里面加入下面内容:
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
# Selinux 配置
'[root@nfvo_ci_20 /]# vi /etc/selinux/config
'[root@vm_test_single ~]# cat /etc/selinux/config
SELINUX=enforcing
'[root@nfvo_ci_20 /]# setenforce permissive
'[root@nfvo_ci_20 /]# getenforce
Permissive
#内核参数 ip转发
/etc/sysctl.conf
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
#ssh 自动退出时间
export TMOUT=300 # 单位是秒
#Linux自动挂载配置
/etc/fstab
#linux 文件系统检查及修复
umount /dev/mapper/vg_data-lv_home 卸载目录
fsck -y /dev/vdb 执行检查
mount /dev/mapper/vg_data-lv_home /home 重新挂载
# Linux 查看进程打开文件 文件被哪些进程打开
lsof -p pid 查看进程打开的文件
fuser -m filename 查看文件被哪些进程打开
# top 命令
top -p 41843
top -p 41843 -H 显示对应线程情况
VIRT 进程申请内存
RES 进程实际使用内存
SHR 共享内存
#删除异常文件
linux遇到无法删除文件:无法访问index.html: 输入/输出错误 -?????????? index.html
时间:2013-05-01来源:蓝木网络 作者:蓝木网络 点击: 次
linux系统ssh远程登录删除文件,有时候会遇到:
无法访问index.html: 输入/输出错误 -?????????? index.html
这种文件,普通方式删除不了,要进debug调试模式
1.首先 df -lh 查看 /HOME 挂载磁盘
2. debugfs -w /dev/sdb5 (/dev/sdb5 是挂载 HOME )
3.进去后再进入网站目录 cd cqxsdkqocvq8xjshd1kmq/wwwroot/yachixiufu/ rm删除指定文件既可.
# ntp 时钟同步
ntpdate ${ip}
ntpdate -u ${ip} #防止端口被占用
#制造内核故障告警
https://blog.csdn.net/cdjsjyf/article/details/9842493
#xargs用法:
ls -rlt | awk '{print $9}' | xargs -i kubectl -n zenap cp {} nfvo-lcm-mano-res-vimproxy-1-47ns2:/etc/nginx/vim_proxy/conf/two_way/
kubectl -n opcs get pods | grep srvpg | awk '{print $1}' |xargs -i sh -c "echo {};kubectl -n opcs exec -it {} -- ip addr show eth0"
#修改文件的修改时间:
touch -d "2019/04/10 20:19:39" MANO-CloudStudio
#linux格式化
mount /dev/vdc /tmp/tmpmount
mkfs.xfs /dev/vdc
umount /dev/vdc
#Linux路由
ip -6 route get 2000:803::/64
ip route get 192.168.24.3
#lsof命令
lsof abc.txt 显示开启文件abc.txt的进程
lsof 目录名 查找谁在使用文件目录系统
lsof -i:22 知道22端口被哪个进程占用
lsof -c abc 显示abc进程现在打开的文件
lsof -p 12 看进程号为12的进程打开了哪些文件
#ping带源地址
ping 194.5.5.1 -I 194.5.5.213
#查看磁盘读写速度
dd if=/dev/zero of=/home/dddd.dat bs=128kB count=100 conv=fsync
#测试读写速度:
iostat -xm 2
#find命令根据文件修改时间搜索:
find . -mmin -60 | grep pyc
#检查文件系统
dmesg
lvchange -ay /dev/mapper/vg_data-lv_home
xfs_repair -n /dev/mapper/vg_data-lv_home
xfs_repair /dev/mapper/vg_data-lv_home
#修改用户名密码
echo "VMVNFM:VMVNFM" |chpasswd
# 查看ftp用户密码是否过期及修改密码有效时间
#新建用户密码永不过期
sed -i -e 's/PASS_MAX_DAYS 90/PASS_MAX_DAYS 99999/g' /etc/login.defs
chage -M 99999 umsfd 1>/dev/null 2>&1
chage -M 99999 VMVNFM 1>/dev/null 2>&1
chage -M 99999 uep 1>/dev/null 2>&1