Linux实用操作

如果提示命令错误...sudo一下

1:先讲管道的原理,在讲管道之前就得讲讲IPC(进程间通信)

1.1:进程间通信就是在不同进程之间传播或交换信息,方式主要用管道,系统IPC,消息队列,套接字。。。

1.2:管道的特质:两个文件描述符引用,一个表示读端,一个表示写端。且规定从数据从管道的写端流入,从读端流出。

2:ps-ef | grep runserver

这条命令是选择命名为runserver的进程的信息,并打印出来,当然进程名可以改变。

首先是ps:processstatus,基本9且强大的进程查看命令。具体后面带什么参数有什么作用这里不说。

grep:globalsearch regular expression(RE) and print out theline,全面搜索正则表达式并把行打印出来,搜索的时候经常用到。

中间的|:管道符,管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。

3:vim

3.1.删除字符

要删除一个字符,只需要将光标移到该字符上按下"x"。

3.2.删除一行

删除一整行内容使用"dd"命令。删除后下面的行会移上来填补空缺。

3.3.删除换行符

在Vim中你可以把两行合并为一行,也就是说两行之间的换行符被删除了:命令是"J"。

3.4.撤销

如果你误删了过多的内容。显然你可以再输入一遍,但是命令"u"更简便,它可以撤消上一次的操作。

3.5.重做

如果你撤消了多次,你还可以用CTRL-R(重做)来反转撤消的动作。换句话说,它是对撤消的撤消。撤消命令还有另一种形式,"U"命令,它一次撤消对一行的全部操作。第二次使用该命令则会撤消前一个"U"的操作。用"u"和CTRL-R你可以找回任何一个操作状态。

3.6.追加

"i"命令可以在当前光标之前插入文本。

"a"命令可以在当前光标之后插入文本。

"o"命令可以在当前行的下面另起一行,并使当前模式转为Insert模式。

"O"命令(注意是大写的字母O)将在当前行的上面另起一行。

3.7.使用命令计数

假设你要向上移动9行。这可以用"kkkkkkkkk"或"9k"来完成。事实上,很多命令都可以接受一个数字作为重复执行同一命令的次数。比如刚才的例子,要在行尾追加三个感叹号,当时用的命令是"a!!!"。另一个办法是用"3a!"命令。3说明该命令将被重复执行3次。同样,删除3个字符可以用"3x"。指定的数字要紧挨在它所要修饰的命令前面。

3.8.复制粘贴

复制:y;粘贴:p;选择:v

复制到系统剪切板:+y;粘贴我就不写了。

复制一行:yy,这样复制的,p的话会自动粘贴到下一行。

3.9

跳到文本最后一行按”G”或者shift+ g。

跳到文本第一行按gg或者2g。

3.10放弃所做的操作,q!

3.11查询,在命令行模式下输入/要查询的内容,回车,然后按n可以依次查看。

3.12跳转到指定行:命令行模式行号n:ngg。或者命令行输入:n,注意冒号要写。

3.13

v字符选择,将光标经过的字符选择

V行选择,将光标经过的行选择

3.14

设置行号: 进入vim,:setnumber (有冒号)

取消行号设置::setnonumber

或者,只要在/etc/vimrc(/etc/virc)文件中修改一下就行了,增加一行:setnumber,没有这个冒号

3.15

全局替换 %s/aaa/bbb ,%全局,s替换

第一步:进终端,输入指令: #vim ~/.vimrc

第二步:这时我们进入到vimrc文件,可能大家会以为自己步骤错了,但是别担心,那vimrc文件就是一个空文件,别管那么多,随便找个空行,敲入 set number.

第三部:保存退出,这是再试一下打开vim编辑器,这是就会法发现已经自动显示行号了,如果想取消的话当然也很简单,不用改什么环境变量,直接再一次 vim ~/.vimrc,把里面的set number给删除掉就搞定了。

4:cat命令

cat命令用于文本输出。主要用三大功能

1.一次显示整个文件。

$ cat filename

2.从键盘创建一个文件。

$ cat > filename

只能创建新文件,不能编辑已有文件.

3.将几个文件合并为一个文件。

$cat file1 file2 > file

-n 或–number 由 1开始对所有输出的行数编号

-b 或–number-nonblank 和-n 相似,只不过对于空白行不编号

-s 或–squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行

接下来两个命令自己去领悟吧

cat-ns mess.txt

catmess.txt garbage.txt | grep 2333 > new.txt

5:在命令行控制台怎样粘贴复制

复制命令:ctrl + insert 或者鼠标左键选中就是复制

粘贴命令:shilt + insert 或者鼠标右键选中就是粘贴

6:ps命令:

ps中cmd表示启动进程的命令

6:grep命令:

grephello mess.txt garbage.txt

-v输出补集

-E使用正则表达式匹配 grep-E '[0-9]+' = egrep '[0-9]+'

只输出文件匹配到的部分- o:echothis is a test line. | egrep -o "[a-z]+\."

统计匹配字符串的行数-c:grep-c "text" file_name

忽略匹配样式中的字符大小写:echo"hello world" | grep -i "HELLO"

在多级目录中对文本进行递归搜索:grep-i 'hello' . -r -n

7:

> 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节);

所以清空文件

echo> new.txt

>new.txt

>>

这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响。

8:watch命令以周期性的方式执行给定的指令,指令输出以全屏方式显示。

-n:指定指令执行的间隔时间(秒):watch-n 1 'ps -aux –sort -pcpu' | head -n

9:文件颜色代表的含义

绿色文件:可执行文件,可执行的程序

红色文件:压缩文件或者包文件

蓝色文件:目录

白色文件:一般性文件,如文本文件,配置文件,源码文件等

浅蓝色文件:链接文件,主要是使用ln命令建立的文件

红色闪烁:表示链接的文件有问题

黄色:表示设备文件

灰色:表示其他文件

10:nohup

用途:不挂断地运行命令。

语法:nohupCommand [ Arg … ] [ &]

无论是否将nohup 命令的输出重定向到终端,输出都将附加到当前目录的nohup.out 文件中。

如果当前目录的nohup.out 文件不可写,输出重定向到$HOME/nohup.out 文件中。

如果没有文件能创建或打开以用于追加,那么Command 参数指定的命令不可调用。

举例:nohuppython manage.py runserver 0.0.0.0:9988

11:ls命令

-l:能展示出是文件还是目录,它的大小、修改日期和时间、文件或目录的名字以及文件的属主和它的权限。

-a:列出所有文件包括以‘.’开头的隐藏文件。

-lS:带-lS组合选项能按文件从大到小的次序显示。

-n:用ls-n命令来显示文件和目录的UID(译者注:userid,用户ID)和GID(译者注:groupid,组ID)。

-R:递归全部文件

12:chmod

变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。您可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果您对符号连接修改权限,其改变会作用在被连接的原始文件。权限范围的表示法如下:

u:User,即文件或目录的拥有者。

g:Group,即文件或目录的所属群组。

o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。

a:All,即全部的用户,包含拥有者,所属群组以及其他用户。

  有关权限代号的部分,列表于下:

r:读取权限,数字代号为"4"。

w:写入权限,数字代号为"2"。

x:执行或切换权限,数字代号为"1"。

-:不具任何权限,数字代号为"0"。

实例:

chmodug+w,o-w file1.txt file2.txt

温馨提示,有些文件不是自己的,要注意这时候需要修改的g的权限,例如sudochmod g+w vimrc

13:who

在linux系统中,我们可以使用who命令查看登录者信息。

who命令能够打印当前都有谁登录到系统中 的相关信息。who命令只会显示真正登录到系统中的用户。它不会显示那些通过su命令切换用户的登录者。

-q选项完成计数功能。

默认情况下,who命令不会打印空闲时间和PID信息。如果打算显示这些信息,使用-u选项。不要忘记使用-H选项让显示的信息更加简单易读。空闲时间包含了最近最后一次活动以来消逝的时间.所以,00:13意思是 用户leni已经13分钟没执行过命令了.(.)符号 是指该终端过去的一分钟有过活动。在那期间,我们称之为“current” 。PID是用户shell程序的进程ID号。

用户连接方式。Tty意味着用户直接连接到电脑上,而pts意味着远程登录。

14:find命令

find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

命令参考:find. -name *.pyc | xargs sudo rm -rf

有个更方便的做法,find. -name "*.pyc" -delete

说一下上面这个命令,查找当前目录下所有.pyc文件,并将其删除,而且由于这里的.pyc文件有写保护,所以需要-rf 并且是在sudo(root)权限下执行删除,注意sudo的位置。

find– name *.pyc默认情况下是在当前目录查找,如果当前目录有,则结束查找,如果当前目录没有,则会递归全部的子目录。

find-name "*.py" ,多了这个双引号,会递归全部的子目录。所以最好是写双引号

命令参考,find. -maxdepth 1 ! -name ".py"

当前目录下第一层(maxdepth最大搜索深度为1),的全部非.py文件和目录

命令参考,

find .-atime -2,最近两天内访问过的文件(注意负号)

find .-atime +2,不是在最近两天访问过的文件

find .-atime 2,恰好在2天前被访问过的文件

find .-iname *docker*: 忽略大小写

。。。。。。这东西太多扩展了。

find和grep,比如我要找当前目录的一个文件

find .-maxdepth 1 -name "*.py" = ls | grep .py

15:top

交互操作:

1:展开CPU

M:根据驻留内存大小进行排序;

P:根据CPU使用百分比大小进行排序;

T:根据时间/累计时间进行排序;

PR — 进程优先级

NI — nice值。负值表示高优先级,正值表示低优先级

VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR — 共享内存大小,单位kb

S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU — 上次更新到现在的CPU时间占用百分比

%MEM — 进程使用的物理内存百分比

TIME+ — 进程使用的CPU时间总计,单位1/100秒

COMMAND — 进程名称(命令名/命令行)

参考:https://blog.csdn.net/dxl342/article/details/53507673

https://www.cnblogs.com/dragonsuc/p/5512797.html

16:service redis

例:

service redis ,会显示可以进行的操作

service redis status ,这个进程的状态

17:mount挂载

挂载是将一个目录到另一个目录下,注意两个目录中间的空格

linux挂载一个文件夹

/bin/mount-t cifs -o username=share,password=share, uid=505, gid=602,file_mode=0775 //10.0.12.19/security /data/zhuyuanbing/security

18:netstat

netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

windows:netstat-nao | findstr 9977 (9977是开的端口)

linux:netstat-antp | grep 9977

参考:https://www.cnblogs.com/10277EVER/articles/5626349.html

19:mkdir

-p:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;

-m:建立目录的同时设置目录的权限;

mkdir-p -m 755 /var/www/config

20:source

通常用法:sourcefilepath 或 .filepath

功能:使当前shell读入路径为filepath的shell文件并依次执行文件中的所有语句,通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。例如,当我们修改了/etc/profile文件,并想让它立刻生效,而不用重新登录,就可以使用source命令,如source/etc/profile。

20打包tar,和压缩

tar-cvf exam.tar django ,建立一个归档文件

tar-xvf exam.tar ,从一个归档文件中提取文件到当前目录

tar-zcvf examples.tgz examples,-z:通过gzip方式

请注意:你的tgz如果被修改了名字,但是这种方式打包出来的目录名仍然和之前相关联

例:django-1.7.11.tar.gz

修改文件名:django-1.7.tar.gz

执行命令tar-zxvf django-1.7.tar.gz

提取的文件的目录是django-1.7.11

制定包的路径-C (大写)

tartar -zxvf django-1.7.11.tar.gz -C ./temp

这样./temp下面会有一个django.1.7.11的文件夹

21:linux定时任务

crontab:参考:https://blog.csdn.net/lck898989/article/details/79119242

crobtab-l :查看定时任务

crontab-e:编辑定时任务

例子:

30 21* * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每晚的21:30重启apache。

22:awk

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。

awk'BEGIN{ print "start" } pattern{ commands } END{ print"end" }' file

pattern语句块中的通用命令是最重要的部分,它也是可选的。如果没有提供pattern语句块,则默认执行{print },即打印每一个读取到的行,awk读取的每一行都会执行该语句块。

23:locate定位一个文件

locate命令其实是find-name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

Locate redis.conf

locate my.cnf (一个机器上可能会有多个my.cnf,要去看实际用的是哪一个)

locate ~/fit (搜索用户主目录下的fit开头的文件)

24:tail

tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。

tail -f logs/zx.access.log

tail -n 20 logs/zx.access.log 显示最后20行

25:

stat命令用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。

26:

wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

wget -t 3 -T 10 -N -q "http://192.168.0.1:8080/webcache/"$cache_file -O abc

-t设定最大尝试连接次数(0表示无限制)

-T设定响应超时的秒数

-q不显示执行过程

-N不要重新下载文件除非比本地文件新

-O重命名

27:nginx

启动:sudo /usr/local/nginx-waf/sbin/nginx -c /usr/local/nginx-waf/conf/nginx.conf

重启:sudo /usr/local/nginx-waf/sbin/nginx -s reload

查看nginx版本 nginx -v

查看使用有哪些module,nginx -V

28:linux下用户(user),用户组,root

参考:https://www.cnblogs.com/jackyyou/p/5498083.html

https://www.linuxidc.com/Linux/2017-06/144916.htm

https://www.linuxidc.com/Linux/2017-01/139361.htm

whoami

groups

几个命令只有root账号才可以使用

useradd testuser 创建用户testuser

passwd testuser 给已创建的用户testuser设置密码

说明:新创建的用户会在/home下创建一个用户目录testuser

usermod --help 修改用户这个命令的相关参数

userdel testuser 删除用户testuser

rm -rf testuser 删除用户testuser所在目录

创建新用户后,同时会在etc目录下的passwd文件中添加这个新用户的相关信息

给用户添加sudo权限

切换到root用户下,cd root,运行visudo命令,visudo命令是用来编辑修改/etc/sudoers配置文件

查看user 属于哪个group

id user

group user

查看有哪些user

cat /etc/passwd

查看有哪些group

cat /etc/group

将一个已有用户 cnzhx 增加到一个已有用户组 apache 中,使此用户组成为该用户的附加用户组,可以使用带 -a 参数的 usermod 指令。-a 代表 append, 也就是将用户添加到新用户组中而不必离开原有的其他用户组。不过需要与 -G 选项配合使用:

usermod -a -G apache cnzhx

如果要同时将 cnzhx 的主要用户组改为 apache,则直接使用 -g 选项:

usermod -g apache cnzhx

29:curl

-A (or --user-agent): 设置 "User-Agent" 字段.

-b (or --cookie): 设置 "Cookie" 字段.

-e (or --referer): 设置 "Referer" 字段.

-d post请求

curl -H "User-Agent: my browser" http://cnn.com

curl -A "my browser" http://cnn.com

30:whereis

whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

31:建立连接soft link

ln命令用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项

源文件:指定连接的源文件。如果使用-s选项创建符号连接,则“源文件”可以是文件或者目录。创建硬连接时,则“源文件”参数只能是文件;

目标文件:指定源文件的目标连接文件。

将目录/usr/mengqc/mub1下的文件m2.c链接到目录/usr/liu下的文件a2.c

cd /usr/mengqc

ln /mub1/m2.c /usr/liu/a2.c

在执行ln命令之前,目录/usr/liu中不存在a2.c文件。执行ln之后,在/usr/liu目录中才有a2.c这一项,表明m2.c和a2.c链接起来(注意,二者在物理上是同一文件),利用ls -l命令可以看到链接数的变化。

Ln -sf /data/zhuayuanbing/openresty/nginx/sbin/nginx /data/zhuyuanbing/bin/openresty

32:登录日志,操作日志,login log, operation log

https://www.cnblogs.com/lizhaoxian/p/5981029.html

1 /var/run/utmp:记录当前正在登录系统的用户信息,默认由who和w记录当前登录用户的信息,uptime记录系统启动时间;

2 /var/log/wtmp:记录当前正在登录和历史登录系统的用户信息,默认由last命令查看;

3 /var/log/btmp:记录失败的登录尝试信息,默认由lastb命令查看。

Lastlog

列出所有用户最近登录的信息,或者指定用户的最近登录信息。lastlog引用的是/var/log/lastlog文件中的信息,包括login-name、port、last login time

last

列出当前和曾经登入系统的用户信息,它默认读取的是/var/log/wtmp文件的信息

lastb

列出失败尝试的登录信息,和last命令功能完全相同,只不过它默认读取的是/var/log/btmp文件的信息。当然也可以通过last -f参数指定读取文件,可以是/var/log/btmp、/var/run/utmp

ac

输出所有用户总的连接时间,默认单位是小时。由于ac是基于wtmp统计的,所以修改或者删除wtmp文件都会使ac的结果受影响。

w

查看当前登入系统的用户信息及用户当前的进程(而who命令只能看用户不能看进程)。该命令能查看的信息包括字系统当前时间,系统运行时间,登陆系统用户总数及系统1、5、10分钟内的平均负载信息。后面的信息是用户,终端,登录源,login time,idle time,JCPU,PCPU,当前执行的进程等。

w的信息来自两个文件:用户登录信息来自/var/run/utmp,进程信息来自/proc/.

user,who

显示当前正在登入统的用户名。

utmpdump

utmpdump用于转储二进制日志文件到文本格式的文件以便查看,同时也可以修改二进制文件!!包括/var/run/utmp、/var/log/wtmp、/var/log/btmp。语法为:utmpdump [options] [filename]。修改文件实际就可以抹除系统记录,所以一定要设置好权限,防止非法入侵。

例子:修改utmp或wtmp。由于这些都是二进制日志文件,你不能像编辑文件一样来编辑它们。取而代之是,你可以将其内容输出成为文本格式,并修改文本输出内容,然后将修改后的内容导入回二进制日志中。如下:

utmpdump /var/log/utmp > tmp_output.txt #导出文件信息

#<使用文本编辑器修改 tmp_output.txt>

utmpdump -r tmp_output.txt > /var/log/utmp #导入到源文件中

33 history,历史

当前用户的操作记录记录在home(~)下的.bash_history里,只记录1000条,在关闭当前shell之前,所有操作都记录在内存中,关闭后写入,._bash_history里

n :数字,意思是要列出最近的 n 条命令行表的意思!

-c :将目前的 shell 中的所有 history 内容全部消除

-a :将目前新增的 history 命令新增入 histfiles 中,若没有加 histfiles ,

则默认写入 ~/.bash_history

-r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中;

-w :将目前的 history 记忆内容写入 histfiles 中!(这一部分也随即在内存中被清空)

34 spilt,分割文件

-b:值为每一输出档案的大小,单位为 byte。

-a:指定分割出的文件名前缀

-d:使用数字作为后缀。

-l:值为每一输出档的列数大小。

Split -l 1000000 news.access.log -d -a 3 news.access

将文件每1000000行分割一次,命名为news.access000,news.access001

ps:自己拿去玩的命令

(1)按cpu和mem占用率排序来显示前10个进程:ps-aux –sort -pcpu,-pmem | head -n 10

(2)打印getty进程:ps-f -C getty = ps -ef | grep getty

(3)查看系统占用:watch-n 1 'ps -aux –sort -pcpu' | head -n

(4)查看特定列:ps-ef | grep runserver | awk '{print $1,$2}'

xargs命令可以通过管道接受字符串,并将接收到的字符串通过空格分割成许多参数(默认情况下是通过空格分割)然后将参数传递给其后面的命令,作为后面命令的命令行参数:

所以杀死多个进程:ps-aux | grep flume | awk '{print $2}' | xargs kill

(5)查看当前目录的各个文件,文件夹的磁盘占用:du-ah –max-depth=1 (注意max前面是两个-)

(6)查看特定文件或文件夹的大小,du–max-depth 1 -h 路径

(7)创建文件:touchfilename

(8)查看指定文件的权限:还是得用管道和grep,例如ls -l | grep vimrc

(9)查看主机cpu的情况:cat/proc/cpuinfo

(10)查看一个命令是外部命令还是内部命令:type cd,type ls

(11)linux挂载一个文件夹

/bin/mount-t cifs -o username=share, password=share, uid=505,gid=602,file_mode=0775 //10.0.12.19/security /data/zhuyuanbing/security

(12)此处插入一条Windows命令的广告,piplist | findstr“tor”,Windows中的管道好像和linux差不多只是字符串查找工具不一样,还有注意双引号,或者不加引号也可以,但是不要用单引号

(13)CentOS(CommunityEnterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一

(14)ll-a /opt/*.desktop 查看这个目录以.desktop结尾的文件

(15)类NUIX的系统中,mysql配置文件的位置一般在/etc/my.cnf或者/etc/MySQL/my.cnf

(16)连接数据库:mysql-h127.0.0.1 -uroot -psecurityths -P3307

(17)查看系统内核版本:cat/proc/version

(18)查看系统版本:cat/etc/issue

(19)linux创建数据库时指定编码和排序规则:createdatabase anti_crawler_config default character set utf8 collateutf8_general_ci

(20)sudosu:换到root,切换回普通用户,supercy。su切换用户,sudo切换用户执行命令favor:sudosu(感觉好用)

(21)遇到的一个问题,在linux中默认使用的Python2.6,2.6下面是没有django的,所以会报错,这时需要手动指定python2.7就是绝对路径去执行。/usr/local/bin/python2.7manage.py runserver 0.0.0.0:9988。

(22)高级!!!linux的环境变量也是“很多用户的”,比如系统的环境变量设置的默认Python是2.6,而当前用户也不能修改系统的环境变量,但是用户是可以修改本用户的“环境变量”的,在用户主目录下(~),有个.bashrc(隐藏文件),在其中修改当前用户环境变量,exportPATH=/usr/local/bin:$PATH,(记住写在左边的优先级更高,所以我的/usr/local/bin下是我的Python2.7)改完之后source.bashrc一下。

(24)linux挂载Windows的NTFS文件后,是不可以修改文件的权限的。linux内核不支持修改ntfs文件的权限,chmod只能修改ext3文件的权限。

(25)filefile_name:查看文件的类型

(26)插播一条windows的命令:确定是否可以访问某端口,telnet10.0.15.205 8

(27)linux查看是否可以访问某端口telnet10.0.12.88 3600

参考:https://blog.csdn.net/z1134145881/article/details/54706711

(28)查看pip的包的地址,pipshow django, pipshow django | grep Location

(29)Python的跨平台性还是可以的(除了少量的pip包需要编译,大多数都还是可以直接在linux和windows同时使用的)

(30)pgrep-ol crond :以名称为依据从运行队列中查找进程

(31)获取redis的密码:ps-ef | grep redis | awk ‘{print $NF}’ | xargs cat | grep pass >redis.conf

(32)scp -r ac-waf/ webscan@wc_b2ctest_195:~ 将现在机器上的ac-waf目录拷贝到另一个机器上,后面那个是命令行最前面括号里面那一块

(33)``

命令替换.`command` 结构使字符(`)[译者注:这个字符不是单引号,而是在标准美国键盘上的ESC键下面,在字符1左边,在TAB键上面的那个键,要特别留心]引住的命令(command)执行结果能赋值给一个变量。它也被称为后引号(backquotes)或是斜引号(backticks).

例子:

A=`ls -l`

把ls -l的结果赋给A ls -l 作为命令来执行

if [[ "`stat $cache_file | grep Modify`" == "$mtime" ]]

(34)

字符串替换{str/a/b}

(35)

统计文件的个数ls -l | wc -l ,需要减1

ls | wc -l

ls | wc -w

wc -l a.txt

(36)

ctrl + r 检索最近操作的history

(37)

查看最新修改的文件

ls -ltr 按时间反序排序当前文件夹中文件(-r反序)

(38)

nginx编译参数重定向

http://blog.51cto.com/laoxu/1542694

linux下stdout标准正确输出也是默认输出是1,标准错误输出是2,于是/usr/local/nginx/sbin/nginx -V 2> nginx_configure.txt

(39)

将demo.txt内容加载到一个数组中,然后将数组内容打印处理

#加载文件内容

content=(`cat"demo.txt"`)

(40)

将一个目录设置为777很有风险

sudo mkdir -m 777 aaa

cd aaa

touch aa.log

这里是可以执行成功,并且可以修改这个文件,也就是如果进入这个文件了,不是root权限的用户也可以为所欲为

aaa的权限为

drwxrwxrwx

sudo mkdir bbb

cd bbb

touch bb.log

这里报错, permission denied

bbb的权限为

drwxr-xr-x

sudo mkdir -m 766 ccc

cd ccc

这里报错

目录的x表示可以进入,所以766表示非当前用户(root,因为sudo了)不可进入

(41)

linux复制,拷贝,copy一个目录要除去一个目录,那么最好使用rsync

cd $workpath

rsync -ac –exclude nginx/logs -ac –exclude nginx/conf “./” /data/zhuyuanbing/openresty

表示将当前目录下的logs和conf目录除去之外的目录都拷贝到/data/zhuyuanbing/openresty下

(42)ab压力测试

ab 压力测试

ab -n 1000 -c 100 -k www.baidu.com

-n 请求总数

-c 并发数

-k 激活HTTP中的“keepAlive”特性;

(43)查看磁盘使用情况

df -h

或者

df /usr

(44)用户态和系统态,用户空间,系统空间

用户空间就是用户进程所在的内存区域,相对的,系统空间就是操作系统占据的内存区域。用户进程和系统进程的所有数据都在内存中。

是谁来划分内存空间的呢?在电脑开机之前,内存就是一块原始的物理内存。什么也没有。开机加电,系统启动后,就对物理内存进行了划分。当然,这是系统的规定,物理内存条上并没有划分好的地址和空间范围。这些划分都是操作系统在逻辑上的划分。不同版本的操作系统划分的结果都是不一样的。

(45)查看端口联通性

telnet ip port

猜你喜欢

转载自blog.csdn.net/ivalue/article/details/79584449