编程基础笔记

一、linux
通常服务器使用LAMP(Linux + Apache + MySQL + PHP)或LNMP(Linux + Nginx + MySQL + PHP)组合
* linux_base
【*】缓存写入磁盘:sync
【*】查看系统版本及位
    cat /etc/redhat-release 查看centos版本
	arch 或 uname -m 显示机器的处理器架构  : x86_64
【*】centos日志tailf  /var/log/zabbix/zabbix_server.log   
【*】关机:shutdown [option]
	-h 20:23 定时关机
【*】通配符 : * 代表0或任意个字符 ; ? 代表1个
【*】重启:reboot
【*】who : 显示登录系统中的用户的信息;查看当前主机有哪几个用户登录
【*】hostname [name]: 查看和设置主机名
【*】删除文件夹:rmdir [-p] dirname
【*】man 命令名 : 查看帮助文档,q退出
【*】pip源:
	豆瓣源:-i https://pypi.douban.com/simple/ [--timeout 600]
【*】查看pip3安装的模块的版本: pip3 freeze|grep pygame
【*】设置时间	   date -s 15:11:00
【*】软硬连接
	软连接:ln -s 老位置 新位置 ,相当于快捷方式,原文件删除连接失效
	硬连接:没有-s,原文件被删除后新文件仍能使用(软连接权限为创建者,权限为源文件所有者)
【*】redis中文	链接redis客户端时添加 --raw
【*】环境变量
	vim /etc/profile
	export PATH=$PATH:/opt/software/redis/bin (末尾添加)
	source /etc/profile
【*】查看cpu信息: lscpu
【*】wc filename : 统计文件中行数、单词数、字节数
【*】scp [-P port] 用户名@IP地址:绝对路径 目标文件地址 : 远程复制文件或文件夹
【*】tailf /var/log/apache2/access.log 实时显示日志文件
【*】history
	开关历史记录操作:set +/-o history
	显示最近N个历史操作:history -N
	清空当前历史命令:history -c (文件中还在)
	位置:~/.bash_history
【*】netstat
	netstat -t  -- 显示tcp相关
	netstat -u  -- 显示udp相关
	netstat -l  -- 显示listen状态相关
	netstat -aptn  -- 查看所有开启的端口
	netstat -nap | grep 1095  -- 根据进程id查看端口
	netstat -nlp|grep :80  -- 根据端口查看进程
	netstat -nat | grep "10.1.62.23:443" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20  -- 查看连接某服务端口最多的的IP地址(前20个)
【*】文件认识:
	bin:Binary,存放常用命令;
	boot:启动linux的核心文件(连接文件、镜像等);
	dev:Device(设备),linux外部设备;
	etc:系统管理所需的配置文件;
	home:用户目录;
	lib:动态链接库,基本依赖;
	lost+found:存放突然关机的文件;
	media:linux自动识别的U盘、光驱等存放位置;
	mnt:临时挂载的文件系统,如光驱等;
	opt:额外安装软件的存放位置;
	proc:虚拟目录,系统内存的映射,可以获取系统信息;
	root:超级管理员用户目录;
	usr:用户的应用程序和文件存放位置;
	sbin:系统管理员使用的系统管理程序;
	srv:一些服务启动之后需要提取的数据;
	sys:linux2.6内核中新出的一个文件系统sysfs;
	tmp:存放临时文件的位置,如安装包;
	sur/bin:系统用户使用的应用程序;
	usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序;
	usr/src:内核源代码默认的放置目录;
	var:存放不断扩充的东西,习惯上放日志等经常被修改的文件;
	run:临时文件系统,存放系统启动以来的信息,重启清除;
	www:存放服务器网站相关资源;
	/etc/passwd:用户密码信息
		用户名:登陆密码:用户标识符:组标识:注释:主目录:登录shell
	/etc/sysconfig/network-scripts:网络配置目录;
【*】ls -la
	d:目录
	-:文件
	l:link file
	---:属主权限
	---:属组权限
	---:其他用户权限
	----:属主
	----:属组
	---:大小
	->:链接指向
【*】输出重定向
	命令 > 文件 : 把输出到终端的内容输出到指定文件中(存在覆盖,不存在创建)
    如 : head -5 passwd > a.txt
    追加 : >>
    标准错误输出重定向 : 2>  2>>
    重定向所有输出 : &> &>>
    将文本作为终端输出 : echo 'str'
    管道操作 :
        将命令的输出重定向为另一个命令的输入:
            命令1 [参数] | 命令2 [参数] | 命令3 [参数] ...
            如 : cat /etc/passwd | grep "tarena" -n
【*】组管理
	配置文件 : /etc/group
    显示当前用户在哪些组 : groups
    创建一个组 : groupadd [option] 组名
    	指定id:-g 520
    删除一个组 : groupdel 组名
    修改一个组 : groupmod [option] 组名
    	修改id:-g id
    	修改名字:-n name
【*】用户管理
    用户信息存储文件 : /etc/passwd
    用户密码存储文件 : /etc/shadow
    添加用户 : useradd [选项] 新用户名
        指定组 :-g 组名或GID
        添加到其他组 : -G 组列表
        指定密码 : -p 密码
        创建用户主目录(home下) : -m
        指定其他的用户主目录 : -d 用户主目录
        指定新用户的登shell : -s SHELL程序路径
        修改用户权限:usermod -s /bin/bash 用户名 ----可以给用户能被其他root用户su切换的
    删除用户 : userdel [选项] 用户名
        删除用户的主目录和相关文件 : -r
    修改密码 : passwd [选项] 用户名
        删除用户密码(会导致空密码也无法登录) : -d
    修改用户相关信息 : usermod [选项] 用户名
         重新指定新的登录名 : -l 新登录名
         强制指定新主组 : -g 主组名或GID
         新的附加组 : -G 组列表
         指定新密码 : -p 密码
         指定其他的用户主目录(需要提前创建) : -d 用户主目录
         指定新用户的登shell : -s SHELL程序路径
    切换用户 : su [用户名] --默认到root用户
    	#:超级用户
    	$:普通用户
    	用户名@主机名 当前目录 用户权限符
   冻结账号 :passwd -l 用户名 
【*】磁盘管理
	df [opt] 列出文件系统整体磁盘使用量
		-h 兆G显示大小
	du [opt] 检查磁盘空间使用量(包括子文件)
		-a 显示全部(包括隐藏文件)
	目录挂载
		mount /dev/kuangshen /mnt/kuangshen (将前面挂载到后面)
		卸载:umount [-f] xxx
			-f 强制
【*】进程管理
	ps [opt] 查看系统正在执行的系统信息
		-a 显示当前终端运行的所有进程信息
		-u 以用户的信息显示进程
		-x 显示后台运行进程的参数
		| 管道符(将前面的输出作为后面的输入)
		grep 查找文件中符合条件的字符串
	ps -ef|grep mysql
		可以查到父进程的信息(当前进程号 父进程号)
	pstree [opt] 查看进程目录树
		-p 显示父id
		-u 显示用户主
	杀进程    killall xxx  |  pkill xxx
【*】查看文件
	正序:cat file
	倒序:tac file
	最后几行:tail [-n] file
	最前几行:head [-n] file
	显示行号:nl file
	按页显示:more (空格翻页,enter翻行,:f行号)
	往前显示:less同more (空格翻页,上下键往上下翻,q退出,向下查找/str,向上查找?str,下一个向上向下n/N)
【*】文件权限
	修改属组:charp -R 属组 文件
	修改属主:chown -R 属主 文件
	修改权限:chmod 777 文件  (r:4 	w:2     x:1)
【*】网络配置
	vim /etc/sysconfig/network-scripts/ifcfg-eno163xxx
【*】解与解压
	gzip/gunzip
    unzip -O CP936 filename.zip	ubuntu解压windows压缩文件,导致文件名乱码
    rar:压缩功能:安装 -- sudo apt-get install rar      卸载 -- sudo apt-get remove rar
        解压功能:安装 -- apt-get install unrar         卸载 -- sudo apt-get remove unrar
        解压:rar x FileName.rar           压缩:rar a FileName.rar DirName
* crontab
1 base
crond 命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
crontab [ -u user ] file	或
crontab [ -u user ] { -l | -r | -e }
	-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
	-r : 删除目前的时程表
	-l : 列出目前的时程表
时间格式如下:
	f1 f2 f3 f4 f5 program
	其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
	*表示每,a-b表示从到,*/n表示每n, a, b, c,... 表示第。
	使用者也可以将所有的设定先存放在文件中,用 crontab file 的方式来设定执行时间。
增加任务无需重启什么
输出命令不会把结果输出在shell上
2 eg
【1】0 6-12/3 * 12 * /usr/bin/backup		# 执行文件
【2】0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata	# 发邮件
【3】20 0-23/2 * * * echo "haha"	# 执行命令
【4】50 7 * * * /sbin/service sshd start	# 执行命令
【5】00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;	# 查找文件并删除
3 问题解决
【1】脚本无法执行问题
如果我们使用 crontab 来定时执行脚本,无法执行,但是如果直接通过命令(如:./test.sh)又可以正常执行,这主要是因为无法读取环境变量的原因。
解决方法:
	- 1、所有命令需要写成绝对路径形式,如: **/usr/local/bin/docker**。
	- 2、在 shell 脚本开头使用以下代码:
		#!/bin/sh
		. /etc/profile
		. ~/.bash_profile
	- 3、在 **/etc/crontab** 中添加环境变量,在可执行命令之前添加命令 **. /etc/profile;/bin/sh**,使得环境变量生效,例如:
		20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh
【2】邮件
当程序在你所指定的时间执行后,系统会发一封邮件给当前的用户(启动了tmux会将邮件提示展示在非tmux窗口),显示该程序执行的内容,若是你不希望收到这样的邮件,请在每一行空一格之后加上 > /dev/null 2>&1
【3】锁机制
flock -xn /tmp/stargate.lock -c '/usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &'	锁定中间件实现任务的实例串行化,即一个定时任务出现问题没有返回,该任务不会再建一个它的实例,即使时间到了;整体意思是,如果对/tmp/stargate.lock枷锁成功就执行后面的,否则不执行
	参数:-x排他锁;-n非阻塞模式;-c枷锁之后要执行的操作
* xshell
上传:rz
下载:sz file
* vim
x:删除当前光标字符
page up/down:上下翻页
gg/G:跳转首尾
* pycharm
shift + 左 右 home end
alt + 左 : 选择列
ctrl + 空格 : 快捷提示
ctrl + space :智能提示
\ : 换行
Ctrl + Alt + M : 提取方法
Ctrl + Q : 快速查看文档
shift + alt   #选择列
ctrl + c  #直接复制行(剪切同理)
ctrl + -/+  #折叠/展开所有代码
ctrl + shift + -/+  #折叠/显示代码
ctrl + shift  #下一步
shift + f10  #运行
ctrl + shift + f4  #退出运行
ctrl + shift + f  #全项目搜索字符串
shift + f6 # 变量及引用改名
ctrl + r # 查找替换
pycharm取消同窗   file-->Close Project in Current Window-->cd 不展示项目目录-->rm -rf .idea/
* vscode
ctrl + b 切换侧边栏ctrl + = / ctrl + - 缩放ctrl + d 批量多选相同的选择快ctrl + c / ctrl + v 复制当前行/将复制的粘贴到上一行--类似pycharm的ctrl + dctrl + x 剪删除当前行ctrl + shift + 上下键 多光标ctrl + t  选择主题
* 其他
【*】罗马输入法    中文模式下输入v和数字选中一行:shift + home/end选中单词:ctrl + shift + 左右
二、win
* base
清除	cls复制粘贴	ctrl+shiftt+c/右击行首/行尾	fn+左右查看目录	dir进入其他盘(需要加/D参数,本盘绝对路径不需要,或者直接d:进入其他盘根目录)		cd /D D:删除	del xxx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值