标签:soc 通知 mysqld 遇到 nohup 权限 file install 正则匹配
权限:用户 读写 ugoa rwx
* useradd userdel groupadd groupmod usermod su sudo who whoami passwd
* chgrp chmod chown umask chattr lsattr
浏览:文本 文件 磁盘 配置 -m modify -c change -a access + date: Ymd His
* vim sed touch cat echo +date history|more less head tail | grep preg awk nl cut split wc join paste | sort diff locate | col expand tr
* file find ln cp ls mkdir rmdir mv rm whereis which | > < >> 2>/dev/null tee
* du df cd (dirs) pwd stat mount umount fdisk alias
* chkconfig timeconfig | shutdown login logout reboot | read readonly exec + wait sleep exit + sh rpm mail xargs iconv
执行:压缩( zj jcv jxv) 任务(系统 网络 数据 (分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 周(0-7) 命令|(所有时刻) ,(分隔时段) -(时段内) /n(每隔n分钟)))
* gzip bzip2 tar dump restore
* at crontab nohup bg fg | ps pstree nice renice kill killall (pkill)
* top free uptime iostat vmstat dmesg w uname ulimit logrotate logwatch(clear)
* telnet ifconfig netstat ping apachectl httpd wget iptables ip yum (mail)
* mysqldump mysqlimport|loaddata|source mysqladmin mysqlshow mysql (-A-B |--single-trasanction --master-data)
===========================or==================================================
--文本:vim sed grep sort cat more touch less tail head diff locate awk nl
--文件:
* file find ln cp ls mkdir rmdir mv rm whereis which tee
* chgrp chmod chown umask
* gzip bzip2 tar dump restore
--磁盘:du df cd (dirs) pwd stat mount umount fdisk alias
--系统:
* user: useradd userdel groupadd groupmod usermod su sudo who whoami passwd
* task:
run : at crontab nohup bg fg
exec: w ps pstree top kill killall (pkill) nice renice free uname uptime iostat netstat dmesg vmstat ulimit logrotate (clear)
* config : echo date history chkconfig timeconfig read exec readonly shutdown | login|logout reboot wait sleep exit
--网络:
* info:telnet httpd ifconfig netstat ping apachectl
* use:wget iptables ip yum (mail) mysqldump mysqlimport|loaddata|source mysqladmin mysqlshow mysql
===========================or==================================================
--管道:重定向 执行 连接 拆分 匹配
* redirect : cat + > < >> 2>/dev/null tee
* execute : cat + sh mail tar rpm iconv xargs
* join: join paste col more expand head tr
* cut:echo +cut split awk sort grep wc touch less
* preg
--脚本: 循环 判断 参数 输出 任务 显示 读取 数据
#! expr bc if-then-else elif else if if-then case case esac
for while test util continue break shift
$# $* $@ getopt getopts read
stdin stdout stderr lsof /dev/null mktemp tee
trap & nohup nice renice cron
echo local return
vim sed gawk
mysql curl disk user bak sys trace
0.参数:
-v 反选
-i 忽略大小写 交互-p
-n 输出行号
-r 反向排序 递归
-u 去重排序
-t 分隔符
-a 追加 全部
-d 目录
-f 执行
-c 执行
-h 字节单位
-l 显示列表
-d delete
-s replace
zj压缩 jc(create)v jx(extract)v
时间:-m modify -c change -a access
date: Ymd His
权限:u(owner) g(group) o(others) a(all) rwx
轮询:
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 周(0-7) 命令
* (所有时刻) ,(分隔时段) -(时段内) /n(每隔n分钟)
1.基础操作指令
--文本:vim sed grep sort cat more touch less tail head diff locate awk nl
vim
ctrl+f 向下一页
ctrl+b 向上一页
0 行首
$ 行尾
G文件最后一行
nEnter 光标向下移动n行
20yy复制下面的20行
pP 复制数据
. 重复上个操作
i-当前字符开始插入 o-光标所在下一行替换成新行 R-替换 Esc
:w :wq :q! :wq!
:n1,n2s/word1/word2/g n1行与n2行之间寻找word1这个字符串,并把它替换成word2
:1,$s/word1/word2/gc 第一行到最后一行查找word1字符串,并替换成word2,且给用户确认confirm
sed
nl /etc/passwd |sed ‘2,5d’ 删除2-5行
nl /etc/passwd |sed ‘2a drink tea’ 加在第三行 2i是加载第二行前
nl /etc/passwd |sed ‘2,5c No 2-5 number’ 替换2-5行为No 2-5 number
nl /etc/passwd |sed -n ‘2,5p’ 取出5-7行
sed ’s/要被替换的字符串/新的字符串/g‘
touch
-mtime 修改过的时间
-ctime 状态改过的时间
-atime 访问时间
cat -n 打印行号 | nl -b a -n rz 2015.log 空白行也写入行号,同时补0
awk last -n 5 |awk ‘{print $! "\t" $3}‘ 最后5行的第一列到第三列
more + less : enter space q +pageUp pageDown
head -n number | tail -n number + -f file
grep
-v 反选
-i 忽略大小写
-n 输出行号
-An -Bm —color=auto ’搜索的字符’ (前n行 后m行)
+正则 (356页)
sort
-f 忽略大小写
-r 反向排序
-u 去重排序
-t 分隔符
diff:
from file to file (4d(delete)3 6c(replace)5)
-b 忽略空格
-B 忽略空白行
-i 忽略大小写
locate (可updatedb,更新后查询)
-i 忽略大小写
-r 正则匹配
--文件目录:file find ln cp ls mkdir rmdir mv rm whereis which tee umask chgrp chmod chown chattr lsattr
file: filename
whereis -m(只寻找某个命令下的) 命令名
which -a(列出所有) 命令名
chmod -R xyz
r-4 w-2 x-1
rwx rwx rwx ==> u(owner) g(group) o(others) a(all)
chmod u=rwx, go=rx filename | chmod a+w filename
chown -R 账号 dir/file
chgrp -R dir/file
chattr +a(只能增加) +i(无法更改)
lsattr -adr
find
-mtime + - mtime(n+1天前 n天内 n-n+1)
-user
-name
-size
-type
-perm
-exec( find / -perm +7000 -exec ls -l { 这里是find执行查询后的结果})
tee
-a(add) file
ls -l /home | tee -a ~/homefile | more 写入homophile文件,屏幕上显示出来
ls
-a 全部文件,连同隐藏文件一起列出来
-d 仅列出目录
-l 列出长数据串,包含文件的属性与权限等数据
cp
-a 连同文件属性一起复制过来了
-i 若目标文件存在,则会先问一下
-r 递归复制文件
rm -r 慎用
mv 移动和更改文件名(rename)
mkdir -p 多级别目录 + -m 711 dir | rmdir 只能删除空的目录 -p连同上层空空目录一起删了
ln -s
硬链接:只能连接文件,相当于备份,删了一个另一个不受影响
软连接:还能连接目录,相当于快捷方式,删了它不会影响源文件,但删了源文件它就消失了
umask
022
drwxrwxrwx r=4 w=2 x=1 022 ——w—w-
如果要增加权限,就要减少umask的值
--文件压缩:gzip bzip2 tar dump restore
tar
-jcv -f filename.tar.bz2 被压缩的文件名或目录名称
-jtv -f filename.tar.bz2
-jxv -f filenametar.bz2 -C 欲解压缩的目录
-z gzip压缩和解压缩 *.tar.gz
-j bz2压缩和解压缩 *.tar.bz2
dump
-1u -f dump.file origin.file
-W 查看备份时间
-S 查看大小
restore
-t -f file.dump 还原dump数据
-C -f file.dump 查看差异数据
-r -f file.dump 还原所有文件
gzip(-v file)
bzip2(-z file)
2.系统操作指令
--user : useradd userdel groupadd groupmod usermod su sudo who whoami passwd
useradd
(useradd usename 系统默认创建了必要项)
-u UID
-g group
-G group
-D 默认项
usermod 修改useradd后的用户参数
-c 加说明
-e 密码失效
-d 创建主文件
groupadd
-g gid
-r groupname
groupmode
-g 修改GID数字
-n 修改既有组名
userdel -r 用户名 //连同用户主文件一起删了
su - -c “命令行"
sudo visudo修改 用户+群组 | 不同的权限 | 免密码
who : 用户情况
passwd
—stdin echo “abc543cc” | passwd - -stdin username 直接更改用户密码为abc543cc
-l lock密码
-u ulock密码
-S 密码信息
-n不可修改密码天数
-x 必须修改密码天数
-w 密码过期前警告天数
-i 密码失效天数
--task
run : at crontab nohup bg fg
exec: w ps pstree top kill killall (pkill) nice renice free uname uptime iostat netstat dmesg vmstat ulimit logrotate (clear)
--------------------------run-----------------------------------------
at
-c +命令
-l 浏览
-d 删除
-v 时间
-m email通知用户完成
atq 查看任务信息 | atrm jobNo 删除任务数
crontab
-u username
-e 编辑
-r 删除
-l 浏览
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 周(0-7) 命令
* (所有时刻) ,(分隔时段) -(时段内) /n(每隔n分钟)
nohup 命令 &(这个是后台) 脱机或注销后后台工作还能继续执行的
fg number 后台拿到前台 | bg number 工作在后台下的状态变成运行中
--------------------------exec-----------------------------------------
w
第一行 current_time up_time user_use
第二行 各项说明
第三行及其后面,说明了每个用户的情况
ps
aux 查看系统所有的进程数据
-lA 查看所有系统的数据
axjf 部分进程树状态
top
-d 2 每两秒钟更新一次top
-b -n 2 > /tmp/top.txt top的信息进行2次,然后结果输出到 /tmp/top.txt中
-d 2 -p 13639 查看指定进程数据
pstree
-A 进程相关性
-Aup 同时显示PID与users
kill
kill -SIGHUP $(grep ’syslog’| grep -v ‘grep’ | awk ‘{print $2}‘ )
killall -9 httpd
nice
nice -n -5 vi & 执行vi 的优先级是-5
renice 10 18625 给18625这个进程的优先级是10
free
-m 目前系统内存的容量
uname
-a 系统内核的信息
uptime top 的第一行
netstat
-tlnp 系统上已箭筒的网络连接及其PID
dmesg
|more 内核开机的信息
|grep -i hd 开机时硬盘信息
iostat
-c cpu
-d 存储设备
-k KB
-m MB
-t 日期
间隔秒数
检测次数
lsof
-a 不同条件同时成立
-U socket文件
-u username
+d 目录
vmstat
vmstat 1 3 统计目前诸暨cpu状态 每秒1次,共计3次
vmstat -d 硬盘读写状态
killall -9 httpd 强制删除httpd服务
ulimit
-a 查看限制额度
-H 严格限制
-S 警告设置
-c 最大内核文件
-f 文件大小
-d 最大内存
-l 锁定内存
-t 最大CPU时间
-u 最大进程数
logrotate -vf verbose force
(ogrotate..conf
weekly 每周一次
rotate 4 默认保留4个
create 新建一个来存储
compress 启用压缩
size按照大小来切分
prerotate 之前做的事情
postrotate之后做的事情
--sys : echo date history chkconfig timeconfig read exec readonly shutdown | login|logout reboot wait sleep exit
shutdown -h time|+number|now
date %Y %m %d %H %i %s
chkconfig
- - level 0-6 服务名称 on|off
- - add|del 文件名(/etc/init.d/文件名)
echo :name=Vbird ==> echo $name ==> Vbird
history
-w 写入
-c 清除
n 最近n条命令
!!66 执行第66条命令 !!执行上一条命令 !al执行最近al开头的命令
read -p “please keying your number “ -t 30 named
磁盘指令:du df cd (dirs) pwd stat mount umount fdisk alias
cd ./ ../ ~ -(刚才的目录)
df
-h GB MB KB存储
-i inode数量来显示
du
-s 总量
-S 每个子目录的量
-h GB MB KB存储
pwd
-P 区分链接
mount (mount A B 把A挂载到B)
-l 查看挂载信息
-t 挂载指定类型
-o 指定对应参数
umount
stat filename 显示文件时间
Access: 2015-07-30 20:04:30.000000000 +0800
Modify: 2015-07-30 20:04:53.000000000 +0800
Change: 2015-07-30 20:04:53.000000000 +0800
Birth: 2014-09-06 14:23:52.000000000 +0800
fdisk
d delete
n add
p print
q quit
w execute
alias lm = ‘ls -l | more‘
3.网络管理指令:
网络通信:telnet httpd ifconfig netstat ping apachectl
telnet -l userame ip
ifconfig eth0:80 192.168.1.1
httpd
-l 显示apache模块
-t 检查语法
-S 输出虚拟主机列表
netstat -a 显示系统中网络连接的状态
ping -c 3 www.sina.com ping3次sina
apachectl configtest 测试配置语法
网络应用:wget iptables ip yum (mail) mysqldump mysqlimport|loaddata|source mysqladmin mysqlshow mysql
wget -r -l 3 www.sina.com 下载3层网页
iptables -L -t nat 浏览 | iptables -save -t filter>iptables.bak 导出 | iptables -restore< iptables.bak 导入
ip link list 显示网络运行的信息
yum:
list info search provides whatprovides
install update
remove
其他: make php perl git apachectl
shell:
#! expr bc if-then-else elif else if if-then case case esac
for while test util continue break shift
$# $* $@ getopt getopts read
stdin stdout stderr lsof /dev/null mktemp tee
trap & nohup nice renice cron
echo local return
vim sed gawk
mysql curl disk user bak sys trace
test (Page 380)
文件类型
文件权限
文件比较
整数判断
字符串数据
多重判定
bc + - * % / ^ | scale=3 小数点取3位 1、3 ==>.333
pipe:
选取--cut grep
cut
-d ‘分隔字符’ -f fields
-c 字符范围
排序--sort wc uniq
wc
-l 行
-w 字
-m 字符
uniq
-i 忽略大小写字符的不同
-c 进行计数
双向重定向--tee
字符转换命令--tr col join paste expand
tr
-d 删掉字符
-s 替换字符
col
-x tab键转换成对等的空格键
-b 文字内有反斜杠,仅保留反斜杠后的那个字符
join
-t 通过分隔符连结的
-i 忽略大小写
-1 第一个文件哪个字段
-2 第二个文件哪个字段
paste -d file1 file2
expand -t file //tab键连结
切割--split
split
-b 大小分隔
-l 行数分隔
参数代换—xargs : cut -d ‘:’ -f1 /etc/passwd | xargs -p -e ‘lp’ finger
-0 特殊字符还原成一般字符
-e 遇见某个字符停止
-p 询问用户
-n 次数,使用几个参数
减号-- -
tar -cvf -/home | tar -xvf -(这个减号是取前面的输出作为输入)
管道:cut join exec redirect +preg
//redirect : cat + > < >> 2>/dev/null tee
cat test.sh test1.sh 2>/dev/null | grep -n ‘echo‘
ls test.sh test1.sh testsh.sh 2>err.txt | grep ‘test‘
grep -n ‘echo‘ <test.sh
cat test.sh>test.txt
cat termcap* >> termcapback
cat test.sh|tee -a test.txt &>/dev/null <==> /dev/null 2>&1 正确和错误的信息全部丢弃
ls -l / | tee -a ~/homefile | more
//execute : cat + sh mail tar rpm iconv xargs
cat testpipe.txt | sh testpipe.sh
cat test.sh|mail -s ‘test‘ 8292669@qq.com
tar -cvf -packname filename| tar -xvf -(这个减号是取前面的输出作为输入)
rpm -qa|grep licq
iconv -f gb18030 -t utf-8 new-aa.txt
cut -d‘:‘ -f1 /etc/passwd | xargs -p -n 5 -e‘lp‘ finger
find /sbin -perm +7000 | xargs ls -l
//join: join paste col more expand head tr
last | tr ‘[a-z]‘ ‘[A-Z]‘
cat /etc/passwd | tr -d ‘:‘ > /root/passwd.linux
man col | col -b > /root/col.man
cat /etc/man.config | col -x | cat -A | more
paste /etc/passwd /etc/shadow
cat /etc/group|paste /etc/passwd /etc/shadow -|head -n 3
join -t ‘:‘ -1 4 /etc/passwd -2 3 /etc/group
grep ‘^MANPATH‘ /etc/man.config | head -n 3 | \
>expand -t 6 - | cat -A
//cut:echo +cut split awk sort grep wc touch less
wc -l lsroot*
last | grep [a-zA-Z] | grep -v ‘wtmp‘ | wc -l
grep --color=auto ‘MANPATH‘ /etc/man.config
touch `date +%Y%m%d%k%M%S`.txt
ls -al /etc | less
echo $PATH | cut -d ‘:‘ -f 3,5 //3- 3.5 3-5
export | cut -c 12-
cat /etc/passwd | sort -t ‘:‘ -k 3 -n
echo $PATH | cut -d ‘:‘ -f1 | sort | uniq -c
split -b 300k /etc/termcap termcap
split -l 10 /etc/termcap termcap
cat /etc/passwd | awk -F ‘:‘ ‘{print $1"\t"$2}‘
kill -9 `ps -ef | grep smbd | tr -s ‘ ‘ | awk -F‘ ‘ ‘{print $2}‘`
//preg
(sed -n ‘1,$p‘|grep -n ‘echo‘)<test.sh #这个脚本比较有意思了。由于前面是管道,后面需要把test.sh内容重定向到 sed ,然后sed输出通过管道,输入给grep.需要将前面用"()"运算符括起来。在单括号内的命令,可以把它们看作一个象一个命令样。如果不加括号test.sh就是grep 的输入了。
#上面一个等同于这个
sed -n ‘1,$p‘<test.sh | grep -n ‘echo‘
sed -n ‘1,10p‘<test.sh | grep -n ‘echo‘ <testsh.sh#哈哈,这个grep又接受管道输入,又有testsh.sh输入,那是不是2个都接收呢。刚才说了"<"运算符会优先,管道还没有发送数据前,grep绑定了testsh.sh输入,这样sed命令输出就被抛弃了。这里一定要小心使用
cat filename |grep -v ‘^[0-9]*$‘ | sed ‘s/|/ /g‘ |sort -nrk 8 -nrk 9 |tail -n +1 |head -n 10
导出:Mysqldump
1)全量 mysqldump -A -B
mysqldump -B (会创建库表结构) database1 database2 | 不加 -B,就是库名 表1 表2
备份所有库 -A
刷新binlog参数 -F
备份表结构 -d
锁表 -x
只备份数据 -t
只读锁表 -l
2)增量binlog
//binlog转成sql
mysqlbinlog -d database mysql-bin.000014>bin.sql
//备份
mysqldump -uroot -proot —master-data=2 —events -single-transaction database gzip>/opt/all.sql.gz
—master-data 增加binlog 日志文件名及对应的位置点,
如果是2,就注释掉了changemasterto
如果是1,就包含了changemasterto,找到了结合
-single-transaction 备份事务数据库
导入:mysqlimport loaddata source (/path/file.sql)
mysqlimport
mysqlimport Meet_A_Geek Customers.txt
注意:这里Customers.txt是我们要导入数据的文本文件,而Meet_A_Geek是我们要操作的数据库,数据库中的表名是Customers,这里文本文件的数据格式必须与Customers表中的记录格式一致,否则mysqlimport命令将会出错。
其中表的名字是导入文件的第一个句号(.)前面文件字符串,
例子:导入一个以逗号为分隔符的文件文件中行的记录格式是这样的:
"1", "ORD89876", "1 Dozen Roses", "19991226"
我们的任务是要把这个文件里面的数据导入到数据库Meet_A_Geek中的表格Orders中,我们使用这个命令:
bin/mysqlimport –prl –fields-enclosed-by=" –fields-terminated-by=, Meet_A_Geek Orders.txt
-prl的意思是-password replace lock
-d or --delete 新数据导入数据表中之前删除数据数据表中的所有信息
-f or --force 不管是否遇到错误,mysqlimport将强制继续插入数据
-i or --ignore mysqlimport跳过或者忽略那些有相同唯一关键字的行, 导入文件中的数据将被忽略。
-l or -lock-tables 数据被插入之前锁住表,这样就防止了,你在更新数据库时,用户的查询和更新受到影响。
-r or -replace 这个选项与-i选项的作用相反;此选项将替代表中有相同唯一关键字的记录。
--fields-enclosed- by= char 指定文本文件中数据的记录时以什么括起的, 很多情况下数据以双引号括起。 默认的情况下数据是没有被字符括起的。
--fields-terminated- by=char 指定各个数据的值之间的分隔符,在句号分隔的文件中,分隔符是句号。您可以用此选项指定数据之间的分隔符。默认的分隔符是跳格符(Tab)
--lines-terminated- by=str 此选项指定文本文件中行与行之间数据的分隔字符串或者字符。 默认的情况下mysqlimport以newline为行分隔符。您可以选择用一个字符串来替代一个单个的字符:一个新行或者一个回车。
mysqlimport命令常用的选项还有-v 显示版本(version), -p 提示输入密码(password)等。
LOADDATA
LOAD DATA INFILE "/home/mark/data.sql" INTO TABLE Orders;//读取文件
LOAD DATA INFILE "/home/Order.txt" INTO TABLE Orders(Order_Number, Order_Date, Customer_ID); //选取字段
LOAD DATA LOCAL INFILE "C:\MyDocs\SQL.txt" INTO TABLE Orders; //读取本地
LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" INTO TABLE Orders;//没有其他用户读取后 写入
LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" REPLACE INTO TABLE Orders; //替换
LOAD DATA INFILE "/home/mark/Orders.txt" REPLACE INTO TABLE Orders FIELDS TERMINATED BY ‘,‘
ENCLOSED BY ‘"‘;
和 Load Data InFile 相反的是 把表的数据导出
Select * From `TableTest` Into OutFile ‘C:/Data_OutFile.txt‘;
+mysqladmin
create databasename 创建一个新数据库
drop databasename 删除一个数据库及其所有表
extended-status 给出服务器的一个扩展状态消息
flush-hosts 洗掉所有缓存的主机
flush-logs 洗掉所有日志
flush-tables 洗掉所有表
flush-privileges 再次装载授权表(同reload)
kill id,id,... 杀死mysql线程
password 新口令,将老口令改为新口令
ping 检查mysqld是否活着
processlist 显示服务其中活跃线程列表
reload 重载授权表
refresh 洗掉所有表并关闭和打开日志文件
shutdown 关掉服务器
status 给出服务器的简短状态消息
variables 打印出可用变量
version 得到服务器的版本信息
+mysqlshow
1. show tables或show tables from database_name; -- 显示当前数据库中所有表的名称。
2. show databases; -- 显示mysql中所有数据库的名称。
3. show columns from table_name from database_name; 或show columns from database_name.table_name; -- 显示表中列名称。
4. show grants for user_name; -- 显示一个用户的权限,显示结果类似于grant 命令。
5. show index from table_name; -- 显示表的索引。
6. show status; -- 显示一些系统特定资源的信息,例如,正在运行的线程数量。
7. show variables; -- 显示系统变量的名称和值。
8. show processlist; -- 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。
9. show table status; -- 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间。
10. show privileges; -- 显示服务器所支持的不同权限。
11. show create database database_name; -- 显示create database 语句是否能够创建指定的数据库。
12. show create table table_name; -- 显示create database 语句是否能够创建指定的数据库。
13. show engines; -- 显示安装以后可用的存储引擎和默认引擎。
14. show innodb status; -- 显示innoDB存储引擎的状态。
15. show logs; -- 显示BDB存储引擎的日志。
16. show warnings; -- 显示最后一个执行的语句所产生的错误、警告和通知。
17. show errors; -- 只显示最后一个执行语句所产生的错误。
18. show [storage] engines; --显示安装后的可用存储引擎和默认引擎。
感谢:http://blog.csdn.net/learner811/article/details/47177219
shell 指令 摘录
标签:soc 通知 mysqld 遇到 nohup 权限 file install 正则匹配
原文地址:http://www.cnblogs.com/xred/p/7765731.html