shell学习笔记--自我总结

一、文件

touch file              # 创建空白文件
rm -rf 目录名           # 不提示删除非空目录(-r:递归删除 -f强制)
dos2unix                # windows文本转linux文本  
unix2dos                # linux文本转windows文本
enca filename           # 查看编码  安装 yum install -y enca 
md5sum                  # 查看md5值ln 源文件 目标文件         # 硬链接
ln -s 源文件 目标文件      # 符号连接
readlink -f /data       # 查看连接真实目录
cat file | nl |less     # 查看上下翻页且显示行号  q退出head                    # 查看文件开头内容
head -c 10m             # 截取文件中10m内容
split -c 10m            # 将文件切割大小为10m
tail -f file            # 查看结尾 监视日志文件
file                    # 检查文件类型
umask                   # 更改默认权限uniq                    # 删除重复的行
uniq -c                 # 重复的行出现次数
uniq -u                 # 只显示不重复行paste a b               # 将两个文件合并用tab键分隔开
paste -d'+' a b         # 将两个文件合并指定'+'符号隔开
paste -s a              # 将多行数据合并到一行用tab键隔开
chattr +i /etc/passwd   # 设置不可改变位
more                    # 向下分面器
locate 字符串              # 搜索wc -l file              # 查看行数
cp filename{,.bak}      # 快速备份一个文件
\cp a b                 # 拷贝不提示 既不使用别名 cp -i
rev                     # 将行中的字符逆序排列
comm -12 2 3            # 行和行比较匹配
iconv -f gbk -t utf8 原.txt > 新.txt      # 转换编码
rename 原模式 目标模式 文件              #重命名,可正则
watch -d -n 1 'df; ls -flat /path'      # 实时某个目录下查看最新改动过的文件
cp -v  /dev/dvd  /rhel4.6.Iphone 苹果 ios 9660       # 制作镜像
diff suzu.c suzu2.c  > sz.patch         # 制作补丁
patch suzu.c < sz.patch                 # 安装补丁

sort

    -t  # 指定排序时所用的栏位分隔字符-n  # 依照数值的大小排序-r  # 以相反的顺序来排序-f  # 排序时,将小写字母视为大写字母-d  # 排序时,处理英文字母、数字及空格字符外,忽略其他的字符-c  # 检查文件是否已经按照顺序排序-b  # 忽略每行前面开始处的空格字符-m  # 前面3个字母依照月份的缩写进行排序-k  # 指定域-m  # 将几个排序好的文件进行合并+<起始栏位>-<结束栏位>   # 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。-o  # 将排序后的结果存入指定的文n   # 表示进行排序r   # 表示逆序sort -n               # 按数字排序sort -nr              # 按数字倒叙sort -u               # 过滤重复行sort -m a.txt c.txt   # 将两个文件内容整合到一起sort -n -t' ' -k 2 -k 3 a.txt     # 第二域相同,将从第三域进行升降处理sort -n -t':' -k 3r a.txt         # 以:为分割域的第三域进行倒叙排列sort -k 1.3 a.txt                 # 从第三个字母起进行排序sort -t" " -k 2n -u  a.txt        # 以第二域进行排序,如果遇到重复的,就删除

find

    # linux文件无创建时间# access 使用时间  # modify 内容修改时间  # change 状态改变时间(权限、属主)# 时间默认以24小时为单位,当前时间到向前24小时为0天,向前48-72小时为2天# -and 且 匹配两个条件 参数可以确定时间范围 -mtime +2 -and -mtime -4# -or 或 匹配任意一个条件find /etc -name http         # 按文件名查找find . -type f               # 查找某一类型文件find / -perm                 # 按照文件权限查找find / -user                 # 按照文件属主查找find / -group                # 按照文件所属的组来查找文件find / -atime -n             # 文件使用时间在n天以内find / -atime +n             # 文件使用时间在n天以前find / -mtime -n             # 文件内容改变时间在n天以内find / -mtime +n             # 文件内容改变时间在n天以前find / -ctime +n             # 文件状态改变时间在n天前find / -ctime -n             # 文件状态改变时间在n天内find / -size +1000000c -print                           # 查找文件长度大于1m字节的文件find /etc -name "passwd*" -exec grep "xuesong" {} \;    # 按名字查找文件传递给-exec后命令find . -name 't*' -exec basename {} \;                  # 查找文件名,不取路径find . -type f -name "err*" -exec  rename err err {} \; # 批量改名(查找err 替换为 err {}文件find 路径 -name *name1* -or -name *name2*               # 查找任意一个关键字

tar、gzip、gunzip

    tar zxvpf gz.tar.gz -c    放到指定目录 包中的目录 # 解包tar.gz 不指定目录则全解压tar zcvpf /$path/gz.tar.gz * # 打包gz 注意*最好用相对路径tar zcf /$path/gz.tar.gz *   # 打包正确不提示tar ztvpf gz.tar.gz          # 查看gztar xvf 1.tar -c 目录        # 解包tartar -cvf 1.tar *             # 打包tartar tvf 1.tar                # 查看tartar -rvf 1.tar 文件名        # 给tar追加文件tar --exclude=/home/dmtsai -zcvf myfile.tar.gz /home/* /etc     # 打包/home, /etc ,但排除 /home/dmtsaitar -n "2005/06/01" -zcvf home.tar.gz /home      # 在 /home 当中,比 2005/06/01 新的文件才备份tar -zcvfh home.tar.gz /home                     # 打包目录中包括连接目录zgrep 字符 1.gz              # 查看压缩包中文件字符行bzip2  -dv 1.tar.bz2         # 解压bzip2bzip2 -v 1.tar               # bzip2压缩bzcat                        # 查看bzip2gzip a                       # 直接压缩文件 # 压缩后源文件消失gunzip a.gz                  # 直接解压文件 # 解压后源文件消失gzip -dv 1.tar.gz            # 解压gzip到targzip -v 1.tar                # 压缩tar到gzunzip zip.zip                # 解压zipzip zip.zip *                # 压缩zip# rar3.6下载:  http://www.rarsoft.com/rar/rarlinux-3.6.0.tar.gzrar a rar.rar *.jpg          # 压缩文件为rar包unrar x rar.rar              # 解压rar包7z a 7z.7z *                 # 7z压缩7z e 7z.7z                   # 7z解压

二、系统

系统信息

    uname -a              # 查看linux内核版本信息cat /proc/version     # 查看内核版本cat /etc/issue        # 查看系统版本lsb_release -a        # 查看系统版本  需安装 centos-releaselocale -a             # 列出所有语系hwclock               # 查看时间who                   # 当前在线用户w                     # 当前在线用户whoami                # 查看当前用户名logname               # 查看初始登陆用户名uptime                # 查看服务器启动时间sar -n dev 1 10       # 查看网卡网速流量dmesg                 # 显示开机信息lsmod                  # 查看内核模块

硬件信息

    more /proc/cpuinfo                                       # 查看cpu信息cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c    # 查看cpu型号和逻辑核心数getconf long_bit                                         # cpu运行的位数cat /proc/cpuinfo | grep physical | uniq -c              # 物理cpu个数cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l     # 结果大于0支持64位cat /proc/cpuinfo|grep flags                             # 查看cpu是否支持虚拟化   pae支持半虚拟化  intelvt 支持全虚拟化more /proc/meminfo                                       # 查看内存信息dmidecode                                                # 查看全面其他硬件 信息dmidecode | grep "product name"                          # 查看服务器型号dmidecode | grep -p -a5 "memory\s+device" | grep size | grep -v range       # 查看内存插槽cat /proc/mdstat                                         # 查看软raid信息cat /proc/scsi/scsi                                      # 查看dell硬raid信息(ibm、hp需要官方检测工具)lspci                                                    # 查看其他硬件 信息lspci|grep raid                                          # 查看是否支持raidlspci -vvv |grep ethernet                                # 查看网卡型号lspci -vvv |grep kernel|grep driver                      # 查看驱动模块modinfo tg2                                              # 查看驱动版本(驱动模块)ethtool -i em1                                           # 查看网卡驱动版本

系统命令

wall                      # 给其它用户发消息
whereis ls                  # 查找命令的目录
which                       # 查看当前要执行的命令所在的路径
clear                       # 清空整个屏幕
reset                       # 重新初始化屏幕
cal                         # 显示月历
echo -n 123456 | md5sum     # md5加密
mkpasswd                    # 随机生成密码   -l位数 -c大小 -c小写 -d数字 -s特殊字符
netstat -anlp | grep port   # 是否打开了某个端口
ntpdate stdtime.gov.hk      # 同步时间
tzselect                    # 选择时区 #+8=(5 9 1 1) # (tz='asia/shanghai'; export tz)括号内写入 /etc/profile
/sbin/hwclock -w            # 保存到其他硬件 
/etc/shadow                 # 账户影子文件
lang=en                     # 修改语言
vim /etc/sysconfig/i18n     # 修改编码  lang="en_us.utf-8"
export lc_all=c             # 强制字符集
vi /etc/hosts               # 查询静态主机名
alias                       # 别名
watch uptime                # 监测命令动态刷新
ipcs -a                     # 查看linux系统当前单个共享内存段的最大值
lsof |grep /lib             # 查看加载库文件
ldconfig                    # 动态链接库管理命令
dist-upgrade                # 会改变配置文件,改变旧的依赖关系,改变系统版本 
/boot/grub/grub.conf        # grub启动项配置
sysctl -p                   # 修改内核参数/etc/sysctl.conf,让/etc/rc.d/rc.sysinit读取生效
mkpasswd -l 8  -c 2 -c 2 -d 4 -s 0            # 随机生成指定类型密码
echo 1 > /proc/sys/net/ipv4/tcp_syncookies    # 使tcp syn cookie 保护生效  # "syn attack"是一种拒绝服务的攻击方式

进程

    ps -eaf               # 查看所有进程kill -9 pid           # 强制终止某个pid进程kill -15 pid          # 安全退出 需程序内部处理信号cmd &                 # 命令后台运行nohup cmd &           # 后台运行不受shell退出影响ctrl+z                # 将前台放入后台(暂停)jobs                  # 查看后台运行程序bg 2                  # 启动后台暂停进程fg 2                  # 调回后台进程pstree                # 进程树vmstat 1 9            # 每隔一秒报告系统性能信息9次sar                   # 查看cpu等状态lsof file             # 显示打开指定文件的所有进程lsof -i:32768         # 查看端口的进程renice +1 180         # 把180号进程的优先级加1ps aux |grep -v user | sort -nk +4 | tail      # 显示消耗内存最多的10个运行中的进程,以内存使用量排序.cpu+3

top

前五行是系统整体的统计信息。第一行: 任务队列信息,同 uptime 命令的执行结果。内容如下:01:06:48 当前时间up 1:22 系统运行时间,格式为时:分1 user 当前登录用户数load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。第二、三行:为进程和cpu的信息。当有多个cpu时,这些内容可能会超过两行。内容如下:tasks: 29 total 进程总数1 running 正在运行的进程数28 sleeping 睡眠的进程数0 stopped 停止的进程数0 zombie 僵尸进程数cpu(s): 0.3% us 用户空间占用cpu百分比1.0% sy 内核空间占用cpu百分比0.0% ni 用户进程空间内改变过优先级的进程占用cpu百分比98.7% id 空闲cpu百分比0.0% wa 等待输入输出的cpu时间百分比0.0% hi0.0% si第四、五行:为内存信息。内容如下:mem: 191272k total 物理内存总量173656k used 使用的物理内存总量17616k free 空闲内存总量22052k buffers 用作内核缓存的内存量swap: 192772k total 交换区总量0k used 使用的交换区总量192772k free 空闲交换区总量123988k cached 缓冲的交换区总量。内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可,不必再对交换区写入

进程信息区,各列的含义如下: # 显示各个进程的详细信息

        序号 列名    含义a   pid      进程idb   ppid     父进程idc   ruser    real user named   uid      进程所有者的用户ide   user     进程所有者的用户名f   group    进程所有者的组名g   tty      启动进程的终端名。不是从终端启动的进程则显示为 ?h   pr       优先级i   ni       nice值。负值表示高优先级,正值表示低优先级j   p        最后使用的cpu,仅在多cpu环境下有意义k   %cpu     上次更新到现在的cpu时间占用百分比l   time     进程使用的cpu时间总计,单位秒m   time+    进程使用的cpu时间总计,单位1/100秒n   %mem     进程使用的物理内存百分比o   virt     进程使用的虚拟内存总量,单位kb。virt=swap+resp   swap     进程使用的虚拟内存中,被换出的大小,单位kb。q   res      进程使用的、未被换出的物理内存大小,单位kb。res=code+datar   code     可执行代码占用的物理内存大小,单位kbs   data     可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kbt   shr      共享内存大小,单位kbu   nflt     页面错误次数v   ndrt     最后一次写入到现在,被修改过的页面数。w   s        进程状态。d=不可中断的睡眠状态r=运行s=睡眠t=跟踪/停止z=僵尸进程x   command  命令名/命令行y   wchan    若该进程在睡眠,则显示睡眠中的系统函数名z   flags    任务标志,参考 sched.h

signal

        kill -l                    # 查看linux提供的信号trap "echo aaa"  2 3 15    # shell使用 trap 捕捉退出信号# 发送信号一般有两种原因:#   1(被动式)  内核检测到一个系统事件.例如子进程退出会像父进程发送sigchld信号.键盘按下control+c会发送sigint信号#   2(主动式)  通过系统调用kill来向指定进程发送信号                             # 进程结束信号 sigterm 和 sigkill 的区别:  sigterm 比较友好,进程能捕捉这个信号,根据您的需要来关闭程序。在关闭程序之前,您可以结束打开的记录文件和完成正在做的任务。在某些情况下,假如进程正在进行作业而且不能中断,那么进程可以忽略这个sigterm信号。# 如果一个进程收到一个sigusr1信号,然后执行信号绑定函数,第二个sigusr2信号又来了,第一个信号没有被处理完毕的话,第二个信号就会丢弃。sighup  1          a     # 终端挂起或者控制进程终止sigint  2          a     # 键盘终端进程(如control+c)sigquit 3          c     # 键盘的退出键被按下sigill  4          c     # 非法指令sigabrt 6          c     # 由abort(3)发出的退出指令sigfpe  8          c     # 浮点异常sigkill 9          aef   # kill信号  立刻停止sigsegv 11         c     # 无效的内存引用sigpipe 13         a     # 管道破裂: 写一个没有读端口的管道sigalrm 14         a     # 闹钟信号 由alarm(2)发出的信号 sigterm 15         a     # 终止信号,可让程序安全退出 kill -15sigusr1 30,10,16   a     # 用户自定义信号1sigusr2 31,12,17   a     # 用户自定义信号2sigchld 20,17,18   b     # 子进程结束自动向父进程发送sigchld信号sigcont 19,18,25         # 进程继续(曾被停止的进程)sigstop 17,19,23   def   # 终止进程sigtstp 18,20,24   d     # 控制终端(tty)上按下停止键sigttin 21,21,26   d     # 后台进程企图从控制终端读sigttou 22,22,27   d     # 后台进程企图从控制终端写缺省处理动作一项中的字母含义如下:a  缺省的动作是终止进程b  缺省的动作是忽略此信号,将该信号丢弃,不做处理c  缺省的动作是终止进程并进行内核映像转储(dump core),内核映像转储是指将进程数据在内存的映像和进程在内核结构中的部分内容以一定格式转储到文件系统,并且进程退出执行,这样做的好处是为程序员提供了方便,使得他们可以得到进程当时执行时的数据值,允许他们确定转储的原因,并且可以调试他们的程序。d  缺省的动作是停止进程,进入停止状况以后还能重新进行下去,一般是在调试的过程中(例如ptrace系统调用)e  信号不能被捕获f  信号不能被忽略

crontab

    at 5pm + 3 days /bin/ls  # 单次定时任务 指定三天后下午5:00执行/bin/lscrontab -e               # 编辑周期任务#分钟  小时    天  月  星期   命令或脚本1,30  1-3/2    *   *   *      命令或脚本  >> file.log 2>&1echo "40 7 * * 2 /root/sh">>/var/spool/cron/root    # 直接将命令写入周期任务crontab -l                                          # 查看自动周期性任务crontab -r                                          # 删除自动周期性任务cron.deny和cron.allow                               # 禁止或允许用户使用周期任务service crond start|stop|rest art                    # 启动自动周期性服务

日志管理

    history                      # 历时命令默认1000条histtimeformat="%y-%m-%d %h:%m:%s "   # 让history命令显示具体时间history  -c                  # 清除记录命令cat $home/.bash_history      # 历史命令记录文件last                         # 查看登陆过的用户信息who /var/log/wtmp            # 查看登陆过的用户信息lastlog                      # 用户最后登录的时间lastb -a                     # 列出登录系统失败的用户相关信息/var/log/btmp                # 登录失败二进制日志记录文件tail -f /var/log/messages    # 系统日志tail -f /var/log/secure      # ssh日志

selinux

    sestatus -v                    # 查看selinux状态getenforce                     # 查看selinux模式setenforce 0                   # 设置selinux为宽容模式(可避免阻止一些操作)semanage port -l    # 查看selinux端口限制规则semanage port -a -t http_port_t -p tcp 8000  # 在selinux中注册端口类型vi /etc/selinux/config         # selinux配置文件selinux=enfoceing              # 关闭selinux 把其修改为  selinux=disabled

iptables

内建三个表:nat mangle 和 filter

filter预设规则表,有input、forward 和 output 三个规则链

    vi /etc/sysconfig/iptables    # 配置文件input    # 进入forward  # 转发output   # 出去accept   # 将封包放行reject   # 拦阻该封包drop     # 丢弃封包不予处理-a         # 在所选择的链(input等)末添加一条或更多规则-d       # 删除一条-e       # 修改-p         # tcp、udp、icmp    0相当于所有all    !取反-p       # 设置缺省策略(与所有链都不匹配强制使用此策略)-s         # ip/掩码    (ip/24)    主机名、网络名和清楚的ip地址 !取反-j         # 目标跳转,立即决定包的命运的专用内建目标-i         # 进入的(网络)接口 [名称] eth0-o         # 输出接口[名称] -m         # 模块--sport  # 源端口--dport  # 目标端口iptables -f                        # 将防火墙中的规则条目清除掉  # 注意: iptables -p input acceptiptables-rest ore < 规则文件        # 导入防火墙规则/etc/init.d/iptables save          # 保存防火墙设置/etc/init.d/iptables rest art       # 重启防火墙服务iptables -l -n                     # 查看规则iptables -t nat -nl                # 查看转发

iptables实例

        iptables -l input                   # 列出某规则链中的所有规则iptables -x allowed                 # 删除某个规则链 ,不加规则链,清除所有非内建的iptables -z input                   # 将封包计数器归零iptables -n allowed                 # 定义新的规则链iptables -p input drop              # 定义过滤政策iptables -a input -s 192.168.1.1    # 比对封包的来源ip   # ! 192.168.0.0/24  ! 反向对比iptables -a input -d 192.168.1.1    # 比对封包的目的地ipiptables -a input -i eth0           # 比对封包是从哪片网卡进入iptables -a forward -o eth0         # 比对封包要从哪片网卡送出 eth+表示所有的网卡iptables -a input -p tcp            # -p ! tcp 排除tcp以外的udp、icmp。-p all所有类型iptables -d input 8                 # 从某个规则链中删除一条规则iptables -d input --dport 80 -j drop         # 从某个规则链中删除一条规则iptables -r input 8 -s 192.168.0.1 -j drop   # 取代现行规则iptables -i input 8 --dport 80 -j accept     # 插入一条规则iptables -a input -i eth0 -j drop            # 其它情况不允许iptables -a input -p tcp -s ip -j drop       # 禁止指定ip访问iptables -a input -p tcp -s ip --dport port -j drop               # 禁止指定ip访问端口iptables -a input -s ip -p tcp --dport port -j accept             # 允许在ip访问指定端口iptables -a input -p tcp --dport 22 -j drop                       # 禁止使用某端口iptables -a input -i eth0 -p icmp -m icmp --icmp-type 8 -j drop   # 禁止icmp端口iptables -a input -i eth0 -p icmp -j drop                         # 禁止icmp端口iptables -t filter -a input -i eth0 -p tcp --syn -j drop                  # 阻止所有没有经过你系统授权的tcp连接iptables -a input -f -m limit --limit 100/s --limit-burst 100 -j accept   # ip包流量限制iptables -a input -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j accept  # 除192.168.62.1外,禁止其它人ping我的主机iptables -a input -p tcp -m tcp --dport 80 -m state --state new -m recent --update --seconds 5 --hitcount 20 --rttl --name web --rsource -j drop

iptables配置实例文件

# generated by iptables-save v1.2.11 on fri feb  9 12:10:37 2007*filter:input accept [637:58967]:forward drop [0:0]:output accept [5091:1301533]# 允许的ip或ip段访问 建议多个-a input -s 127.0.0.1 -p tcp -j accept-a input -s 192.168.0.0/255.255.0.0 -p tcp -j accept# 开放对外开放端口-a input -p tcp --dport 80 -j accept# 指定某端口针对ip开放-a input -s 192.168.10.37 -p tcp --dport 22 -j accept# 拒绝所有协议(input允许)-a input -p tcp -m tcp --tcp-flags fin,syn,rst,psh,urg rst -j drop# 允许已建立的或相关连的通行iptables -a input -m state --state established,related -j accept# 拒绝ping-a input -p tcp -m tcp -j reject --reject-with icmp-port-unreachablecommit# completed on fri feb  9 12:10:37 2007

iptables配置实例

        # 允许某段ip访问任何端口iptables -a input -s 192.168.0.3/24 -p tcp -j accept# 设定预设规则 (拒绝所有的数据包,再允许需要的,如只做其他web服务器 .还是推荐三个链都是drop)iptables -p input dropiptables -p forward dropiptables -p output accept# 注意: 直接设置这三条会掉线# 开启22端口iptables -a input -p tcp --dport 22 -j accept# 如果output 设置成drop的,要写上下面一条iptables -a output -p tcp --sport 22 -j accept # 注:不写导致无法ssh.其他的端口一样,output设置成drop的话,也要添加一条链# 如果开启了其他web服务器 ,output设置成drop的话,同样也要添加一条链iptables -a output -p tcp --sport 80 -j accept# 做其他web服务器 ,开启80端口 ,其他同理iptables -a input -p tcp --dport 80 -j accept# 做邮件服务器,开启25,110端口iptables -a input -p tcp --dport 110 -j acceptiptables -a input -p tcp --dport 25 -j accept# 允许icmp包通过,允许pingiptables -a output -p icmp -j accept (output设置成drop的话) iptables -a input -p icmp -j accept  (input设置成drop的话)# 允许loopback!(不然会导致dns无法正常关闭等问题) iptables -a input -i lo -p all -j accept (如果是input drop)iptables -a output -o lo -p all -j accept(如果是output drop)

Memory

    free -m#-/+ buffers/cache:       6458       1649#6458m为真实使用内存  1649m为真实剩余内存(剩余内存+缓存+缓冲器)#linux会利用所有的剩余内存作为缓存,所以要保证linux运行速度,就需要保证内存的缓存大小

date

    date -s 20091112                     # 设日期date -s 18:30:50                     # 设时间date -d "7 days ago" +%y%m%d         # 7天前日期date -d "5 minute ago" +%h:%m        # 5分钟前时间date -d "1 month ago" +%y%m%d        # 一个月前date +%y-%m-%d -d '20110902'         # 日期格式转换date +%y-%m-%d_%x                    # 日期和时间date +%n                             # 纳秒date -d "2012-08-13 14:00:23" +%s    # 换算成秒计算(1970年至今的秒数)date -d "@1363867952" +%y-%m-%d-%t   # 将时间戳换算成日期date -d "1970-01-01 utc 1363867952 seconds" +%y-%m-%d-%t  # 将时间戳换算成日期date -d "`awk -f. '{print $1}' /proc/uptime` second ago" +"%y-%m-%d %h:%m:%s"    # 格式化系统启动时间(多少秒前)

开机启动脚本顺序

/etc/profile/etc/profile.d/*.sh~/bash_profile~/.bashrc/etc/bashrc

四、服务

shell执行mysql

mysql -u$username -p$passwd -h$dbhost -p$dbport -a -e "
use $dbname;
delete from data where date=('$date1');"    
# 执行多条mysql命令mysql -uroot -p -s mysql.sock -e "
use db;
alter table gift add column accountid  int(11) not null;
flush privileges;"    
# 不登陆mysql插入字段

五、网络

rz   # 通过ssh上传小文件
sz   # 通过ssh下载小文件
ifconfig eth0 down                  # 禁用网卡
ifconfig eth0 up                    # 启用网卡
ifup eth0:0                         # 启用网卡
mii-tool em1                        # 查看网线是否连接
traceroute www.baidu.com            # 测试跳数
vi /etc/resolv.conf                 # 设置dns  nameserver ip 定义dns服务器的ip地址
nslookup www.moon.com               # 解析域名ip
dig -x www.baidu.com                # 解析域名ip
curl -i www.baidu.com               # 查看网页http头
tcpdump tcp port 22                 # 抓包
lynx                                # 文本上网
wget -p 路径 http地址               # 下载  包名:wgetrc
curl -d "user=xuesong&pwd=123" http://www.abc.cn/result    # 提交web页面表单 需查看表单提交地址
rsync -avzp -e "ssh -p 22" /dir user@$ip:/dir              # 同步目录 # --delete 无差同步 删除目录下其它文件
ifconfig eth0:0 192.168.1.221 netmask 255.255.255.0        # 增加逻辑ip地址
mtr -r www.baidu.com                                       # 测试网络链路节点响应时间 # trace ping 结合
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all           # 禁ping
ipcalc -m "$ip" -p "$num"                                  # 根据ip和主机最大数计算掩码
dig +short txt hacker.wp.dg.cx                             # 通过 dns 来读取 wikipedia 的hacker词条
host -t txt hacker.wp.dg.cx                                # 通过 dns 来读取 wikipedia 的hacker词条
net rpc shutdown -i ip_address -u username%password         # 远程关掉一台windows机器
wget --random-wait -r -p -e robots=off -u mozilla www.example.com    # 递归方式下载整个网站

netstat

    -a     # 显示所有连接中的socket-t     # 显示tcp连接-u     # 显示udp连接-n     # 显示所有已建立的有效连接-anlp  # 查看链接–r     # 查看路由表

ssh

    ssh -p 22 user@192.168.1.209                            # 从linux ssh登录另一台linux ssh -p 22 root@192.168.1.209 cmd                        # 利用ssh操作远程主机scp -p 22 文件 root@ip:/目录                            # 把本地文件拷贝到远程主机sshpass -p '密码' ssh -n root@$ip "echo hello"          # 指定密码远程操作ssh -o stricthostkeychecking=no $ip                     # ssh连接不提示yesssh -t "su -"                                           # 指定伪终端 客户端以交互模式工作scp root@192.168.1.209:远程目录 本地目录                # 把远程指定文件拷贝到本地ssh -n -l2001:remotehost:80 user@somemachine            # 用ssh创建端口转发通道ssh -t host_a ssh host_b                                # 嵌套使用sshssh -t -p 22 $user@$ip /bin/su - root -c {$cmd};     # 远程su执行命令 cmd="\"/sbin/ifconfig eth0\""ssh-keygen -t rsa                                       # 生成密钥ssh-copy-id -i xuesong@10.10.10.133                     # 传送keyvi $home/.ssh/authorized_keys                           # 公钥存放位置sshfs name@server:/path/to/folder /path/to/mount/point  # 通过ssh挂载远程主机上的文件夹fusermount -u /path/to/mount/point                      # 卸载ssh挂载的目录ssh user@host cat /path/to/remotefile | diff /path/to/localfile -                # 用diff对比远程文件跟本地文件su - user -c "ssh user@192.168.1.1 \"echo -e aa |mail -s test mail@163.com\""    # 切换用户登录远程发送邮件

ftps上传

ftp -i -v -n $host <<enduser $username $password cd /ftpmkdir datacd datamput *.tar.gzbye
end

nmap

snmp

六、存储

df -ph                                # 查看硬盘容量
df -t                                 # 查看磁盘分区格式
df -i                                 # 查看inode节点   如果inode用满后无法创建文件
du -h 目录                            # 检测目录下所有文件大小
du -sh *                              # 显示当前目录中子目录的大小
iostat -x                             # 查看磁盘io状态
mount                                 # 查看分区挂载情况
fdisk -l                              # 查看磁盘分区状态
fdisk /dev/hda3                       # 分区 
mkfs -t ext3  /dev/hda3               # 格式化分区
fsck -y /dev/sda6                     # 对文件系统修复
lsof |grep delete                     
# 释放进程占用磁盘空间  列出进程后,查看文件是否存在,不存在则kill掉此进程tmpwatch -afv 3                       # 删除3小时内的临时文件
cat /proc/filesystems                 # 查看当前系统支持文件系统
mount -o remount,rw /                 # 修改只读文件系统为读写
smartctl -h /dev/sda                  # 检测硬盘状态
smartctl -i /dev/sda                  # 检测硬盘信息
smartctl -a /dev/sda                  # 检测所有信息
e2label /dev/sda5                     # 查看卷标
e2label /dev/sda5 new-label           # 创建卷标
ntfslabel -v /dev/sda8 new-label      # ntfs添加卷标
tune2fs -j /dev/sda                   # ext2分区转ext3分区
mke2fs -b 2048 /dev/sda5              # 指定索引块大小
dumpe2fs -h /dev/sda5                 # 查看超级块的信息
mount -t Iphone 苹果 ios 9660 /dev/dvd  /mnt       # 挂载光驱
mount -t ntfs-3g /dev/sdc1 /media/yidong        # 挂载ntfs硬盘
mount -t nfs 10.0.0.3:/opt/images/  /data/img   # 挂载nfs
mount -o loop  /software/rhel4.6.Iphone 苹果 ios    /mnt/    # 挂载镜像文件

新硬盘挂载

    fdisk /dev/sdc p    #  打印分区d     #  删除分区n    #  创建分区,(一块硬盘最多4个主分区,扩展占一个主分区位置。p主分区 e扩展)w    #  保存退出mkfs -t ext3 -l 卷标  /dev/sdc1        # 格式化相应分区mount /dev/sdc1  /mnt        # 挂载vi /etc/fstab               # 添加开机挂载分区label=/data            /data                   ext3    defaults        1 2      # 用卷标挂载/dev/sdb1              /data4                  ext3    defaults        1 2      # 用真实分区挂载/dev/sdb2              /data4                  ext3    noatime,defaults        1 2

第一个数字"1"该选项被"dump"命令使用来检查一个文件系统应该以多快频率进行转储,若不需要转储就设置该字段为0

第二个数字"2"该字段被fsck命令用来决定在启动时需要被扫描的文件系统的顺序,根文件系统"/"对应该字段的值应该为1,其他文件系统应该为2。若该文件系统无需在启动时扫描则设置该字段为0

当以 noatime 选项加载(mount)文件系统时,对文件的读取不会更新文件属性中的atime信息。设置noatime的重要性是消除了文件系统对文件的写操作,文件只是简单地被系统读取。由于写操作相对读来说要更消耗系统资源,所以这样设置可以明显提高服务器的性能.wtime信息仍然有效,任何时候文件被写,该信息仍被更新

raid原理与区别

    raid0至少2块硬盘.吞吐量大,性能好,同时读写,但损坏一个就完蛋raid1至少2块硬盘.相当镜像,一个存储,一个备份。安全性比较高.但是性能比0弱raid5至少3块硬盘.分别存储校验信息和数据,坏了一个根据校验信息能恢复raid6至少4块硬盘.两个独立的奇偶系统,可坏两块磁盘,写性能非常差

七、用户

users                   # 显示所有的登录用户
groups                  # 列出当前用户和他所属的组
who -q                  # 显示所有的登录用户
groupadd                # 添加组
useradd user            # 建立用户
passwd 用户             # 修改密码
userdel -r              # 删除帐号及家目录
chown -r user:group     # 修改目录拥有者(r递归)
chown y\.li:mysql       # 修改所有者用户中包含点"."
umask                   # 设置用户文件和目录的文件创建缺省屏蔽值
chgrp                   # 修改用户组
finger                  # 查找用户显示信息
echo "xuesong" | passwd user --stdin       # 非交互修改密码
useradd -g www -m  -s /sbin/nologin  www   # 指定组并不允许登录的用户,nologin允许使用服务
useradd -g www -m  -s /bin/false  www      # 指定组并不允许登录的用户,false最为严格
usermod -l 新用户名 老用户名               # 修改用户名
usermod -g user group                      # 修改用户所属组
usermod -d 目录 -m 用户                    # 修改用户家目录
usermod -g group user                      # 将用户添加到附加组
gpasswd -d user group                      # 从组中删除用户
su - user -c " #命令1; "                   # 切换用户执行

转载于:https://www.cnblogs.com/pennli/p/8795102.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

201671030107胡文艳实验三作业互评与改进报告

任务1&#xff1a;要给出所点评作业的链接地址&#xff0c;点评内容和阅读心得 读了你的这篇博客&#xff0c;一方面给我的印象就是排版整齐&#xff0c;内容充实&#xff0c;态度认真&#xff1b;另外一方面就是通过别人反省自己&#xff0c;看了你的博客&#xff0c;我觉得我…

进程handle获取线程_获取进程中的线程列表

进程handle获取线程The System.Diagnostics namespace contains functions that allow you to manage processes, threads, eventlogs and performance information. System.Diagnostics命名空间包含允许您管理进程&#xff0c;线程&#xff0c;事件日志和性能信息的函数。 The…

2018-3-28Linux系统管理(16)计算机网络基础

在这一章当中我们讲述计算机网络基础。一、计算机网络网络通信就像人与人之间的交流一样&#xff0c;说同一种语言&#xff0c;而后双方进行无障碍的通信交流&#xff0c;那么两台主机通信时&#xff0c;它们彼此交换数据的格式的前提为互相理解才可以&#xff0c;我们此前也有…

从Ubuntu命令行按进程名称杀死进程

There are a number of ways to kill a process if you know the name of the process. Here’s a couple different ways you can accomplish this. We are going to assume that the process we are trying to kill is named irssi 如果您知道进程的名称&#xff0c;则有多种…

18 南京 D

裸的最小球覆盖。 坐标范围大一些所以我们把初始的温度也设置的大一些。 1 #include <bits/stdc.h>2 using namespace std;3 typedef long long ll;4 typedef double db;5 const db INF 1e100;6 const db delta 0.98;7 const db eps 1e-8;8 struct p3{9 db x,y,z;…

如何在iPhone或iPad的控制中心中控制智能家居设备

Apple’s Home app offers quick controls for controlling smart lights, doorbells, thermostats, and other smart home devices—right in your iPhone or iPad’s Control Center. Here’s how to set it up and use it. Apple的Home应用程序可在iPhone或iPad的控制中心内…

亚信安全与安徽电信共创“云网融合”安全新局面

全面提升公共安全能力 联合推“天翼U盾”保障移动政务安全 在近日举办的安徽“互联网”产业合作峰会上&#xff0c;亚信安全宣布与中国电信安徽公司达成战略合作&#xff0c;双方将在“云网融合”的生态基础上打造特色安全服务、促进政企协同安全监管、共创网络安全平安城市等…

idea中开启Run Dashboard

若没有 下一步 ok 转载于:https://www.cnblogs.com/aijiajia1314/p/10551007.html

电台复活节_如何玩Android 11的隐藏复活节彩蛋游戏

电台复活节Justin Duino贾斯汀杜伊诺(Justin Duino)Google includes a hidden “Easter Egg” with each new Android version. Android 11 has one of the more elaborate Easter Eggs as it’s actually a game you can play. We’ll show you how to find it and play. Goog…

AQS源码阅读笔记(一)

AQS源码阅读笔记 先看下这个类张非常重要的一个静态内部类Node。如下&#xff1a; static final class Node {//表示当前节点以共享模式等待锁static final Node SHARED new Node();//表示当前模式以独占模式等待锁static final Node EXCLUSIVE null;//表示当前线程等待锁的动…

python之实现从ftp下载文件到本地

#!/usr/bin/python # codingutf-8 import os from ftplib import FTP # 引入ftp模块class MyFtp:ftp FTP()def __init__(self,host,port21):self.ftp.connect(host,port)def login(self,username,pwd):self.ftp.set_debuglevel(2) # 打开调试级别2&#xff0c;显示详细信息s…

如何在Instagram上过滤冒犯性评论

Shubham AgarwalShubham AgarwalIf you have a public Instagram profile, chances are you’ve been a victim of inappropriate comments from strangers. Given the social network’s vast size, it’s practically impossible to escape such bad actors. Thankfully, Ins…

复杂性思维中文第二版 附录 A、算法分析

附录 A、算法分析 原文&#xff1a;Appendix A Analysis of algorithms 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 自豪地采用谷歌翻译 部分参考了《Think Python 2e 中译本 第二十一章&#xff1a;算法分析》 算法分析 (Analysis of algorithms) 是计算机科学的一…

如何在Windows 8.1中获取Windows 10样式的开始菜单

On January 21, Microsoft officially announced the new features that would be included in Windows 10. While you’ll have to wait for the release to enjoy most of the new features, you can take advantage of the new Windows 10 Start menu today. 1月21日&#x…

Android工程中javax annotation Nullable找不到的替代方案

我们在某些Android开源库中会遇到下面的引用找不到的问题&#xff1a;import javax.annotation.Nonnull;import javax.annotation.Nullable; 其实Android实现了javax的类似注解&#xff0c;可以使用下面的引用替换&#xff1a;import android.support.annotation.NonNull;impor…

HDU1561:The more, The Better——题解

http://acm.hdu.edu.cn/showproblem.php?pid1561 ACboy很喜欢玩一种战略游戏&#xff0c;在一个地图上&#xff0c;有N座城堡&#xff0c;每座城堡都有一定的宝物&#xff0c;在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物。但由于地理位置原因&#xff0c;有些城堡不能直…

ubuntu列出所有磁盘_列出Ubuntu上的磁盘空间使用情况

ubuntu列出所有磁盘Simply open a new Terminal window and type in this command 只需打开一个新的终端窗口并输入此命令 df -Th f翻译自: https://www.howtogeek.com/howto/ubuntu/list-disk-space-usage-on-ubuntu/ubuntu列出所有磁盘

python基础之字符编码

阅读目录 一 了解字符编码的知识储备二 字符编码介绍三 字符编码应用之文件编辑器3.1 文本编辑器之nodpad3.2 文本编辑器之pycharm3.3 文本编辑器之python解释器3.4 总结四 字符编码应用之python4.1 执行python程序的三个阶段4.2 python2与python3字符串类型的区别一 了解字符编…

C# WinForm开发系列 - DataGridView

1.DataGridView实现课程表 testcontrol.rar 2.DataGridView二维表头及单元格合并 DataGridView单元格合并和二维表头.rar myMultiColHeaderDgv.rar 3.DataGridView单元格显示GIF图片 gifanimationindatagrid.rar 4.自定义显示DataGridView列(行头显示行号与图标,同一单元格显示…

ruby语法_Ruby函数(方法)语法

ruby语法The Ruby language makes it easy to create functions. Ruby语言使创建函数变得容易。 Function Syntax 功能语法 def functionname(variable) return <value>end def functionname(variable)return <值>结束Examples 例子 Your function can compute …