Linux系统编程总结

0. 快捷键

1. ubuntu截图


1. 指定区域截图 shift + PrtSc

2. 截屏并复制到剪贴板 Ctrl+Alt+A

1. Linux指令

文件与目录操作

在这里插入图片描述

压缩解压缩指令

1. 通用格式


压缩:命令 + 参数 + 压缩包名字 + 压缩的文件或目录

解压缩:命令 + 压缩包名字 + 参数(rar没有参数) + 解压目录

进程管理

1. 查看当前在线用户的状况的命令


$ who

yufei    tty7        2018-10-14 10:57 (:0)

2. Linux下如何切换设备终端


alt + ctrl + F1~F7

3. Linux下各个设备终端之间是相互依赖的还是互不影响的?


互不影响

4. 写出命令,在终端下查看操作系统下所有的bash进程


$ ps aux | grep "bash"

yufei    7273  0.0  0.0  30040  5512 pts/4    Ss  17:11  0:00 bash

yufei    7357  0.0  0.0  21312  924 pts/4    R+  17:13  0:00 grep --color=auto bash

5. 如何使用kill命令查看信号编号


$ kill -l

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP

6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1

11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM

16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP

21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ

26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3

38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8

43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13

48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12

53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7

58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2

63) SIGRTMAX-1 64) SIGRTMAX

7. 写出命令,杀死进程编号为998877(PID)的进程


kill -9 998877

8. 查看当前进程环境变量的命令是哪一个?


$ env |grep path

DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path

MANDATORY_PATH=/usr/share/gconf/ubuntu.mandatory.path

网络管理

1. 获取网络接口信息的命令


$ ifconfig

enp0s31f6 Link encap:以太网  硬件地址 54:e1:ad:dd:4f:44 

          UP BROADCAST MULTICAST  MTU:1500  跃点数:1

          接收数据包:0 错误:0 丢弃:0 过载:0 帧数:0

          发送数据包:0 错误:0 丢弃:0 过载:0 载波:0

          碰撞:0 发送队列长度:1000

          接收字节:0 (0.0 B)  发送字节:0 (0.0 B)

          中断:16 Memory:ec300000-ec320000

enx00e04c3600cb Link encap:以太网  硬件地址 00:e0:4c:36:00:cb 

          inet 地址:192.168.1.2  广播:192.168.1.255  掩码:255.255.255.0

          inet6 地址: fe80::21a6:a59b:1f7f:6d51/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1

          接收数据包:1814079 错误:0 丢弃:0 过载:0 帧数:0

          发送数据包:1281111 错误:0 丢弃:0 过载:0 载波:0

          碰撞:0 发送队列长度:1000

          接收字节:2505593352 (2.5 GB)  发送字节:111407766 (111.4 MB)

lo        Link encap:本地环回 

          inet 地址:127.0.0.1  掩码:255.0.0.0

          inet6 地址: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:65536  跃点数:1

          接收数据包:7901 错误:0 丢弃:0 过载:0 帧数:0

          发送数据包:7901 错误:0 丢弃:0 过载:0 载波:0

          碰撞:0 发送队列长度:1000

          接收字节:773235 (773.2 KB)  发送字节:773235 (773.2 KB)

wlp4s0    Link encap:以太网  硬件地址 28:c6:3f:4f:c7:84 

          inet 地址:192.168.1.20  广播:192.168.1.255  掩码:255.255.255.0

          inet6 地址: fe80::1c92:d4e5:275f:6d86/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1

          接收数据包:12610 错误:0 丢弃:0 过载:0 帧数:0

          发送数据包:1435 错误:0 丢弃:0 过载:0 载波:0

          碰撞:0 发送队列长度:1000

          接收字节:1070689 (1.0 MB)  发送字节:207989 (207.9 KB)

2. 测试与目标主机连通性的命令


$ ping www.baidu.com

PING www.a.shifen.com (111.13.100.92) 56(84) bytes of data.

64 bytes from localhost (111.13.100.92): icmp_seq=1 ttl=55 time=5.53 ms

64 bytes from localhost (111.13.100.92): icmp_seq=2 ttl=55 time=5.81 ms

64 bytes from localhost (111.13.100.92): icmp_seq=3 ttl=55 time=5.95 ms

64 bytes from localhost (111.13.100.92): icmp_seq=4 ttl=55 time=6.69 ms

64 bytes from localhost (111.13.100.92): icmp_seq=5 ttl=55 time=6.88 ms

64 bytes from localhost (111.13.100.92): icmp_seq=6 ttl=55 time=5.87 ms

64 bytes from localhost (111.13.100.92): icmp_seq=7 ttl=55 time=5.81 ms

3. 查看服务器域名对应的IP地址的命令


$ nslookup www.baidu.com

Server: 127.0.1.1

Address: 127.0.1.1#53

Non-authoritative answer:

www.baidu.com canonical name = www.a.shifen.com.

Name: www.a.shifen.com

Address: 111.13.100.92

Name: www.a.shifen.com

Address: 111.13.100.91

用户管理

1. 写出命令创建出一个新的用户itcast


方法1 adduser

$ sudo adduser luffy

[sudo] yufei 的密码:

正在添加用户"luffy"...

正在添加新组"luffy" (1001)...

正在添加新用户"luffy" (1001) 到组"luffy"...

创建主目录"/home/luffy"...

正在从"/etc/skel"复制文件...

输入新的 UNIX 密码:

重新输入新的 UNIX 密码:

passwd:已成功更新密码

正在改变 luffy 的用户信息

请输入新值,或直接敲回车键以使用默认值

全名 []:

房间号码 []:

工作电话 []:

家庭电话 []:

其它 []:

这些信息是否正确? [Y/n] y


**方法2 创建用户的同时,创建用户的家目录 一般使用这组命令就可以了**

$ sudo groupadd itcast

$ sudo useradd -s /bin/bash -g itcast -d /home/itcast -m itcast

2. 写出命令删除一个用户itcast


方法1 不会删除家目录

$ sudo deluser itcast

正在删除用户 'itcast'...

警告:组"itcast"没有其他成员了。

完成。

$ sudo groupdel itcast

groupdel:“itcast”组不存在

** 当删除一个组内的最后一个成员后,组也自动删除 **

$ ls -l /home

总用量 12

drwxr-xr-x  2  1002  1002 4096 10月 14 17:32 itcast

drwxr-xr-x  2 luffy luffy 4096 10月 14 17:29 luffy

drwxr-xr-x 39 yufei yufei 4096 10月 14 10:57 yufei

** deluser没有删除用户的家目录**

$ sudo rm -rf itcast/

$ ls -l

总用量 8

drwxr-xr-x  2 luffy luffy 4096 10月 14 17:29 luffy

drwxr-xr-x 39 yufei yufei 4096 10月 14 10:57 yufei


**方法2 连同用户家目录一并删除 一般使用这个方法就可以了**

$ sudo userdel -r luffy

userdel: luffy 邮件池 (/var/mail/luffy) 未找到

yufei@yufei:home$ ls -l

总用量 4

drwxr-xr-x 39 yufei yufei 4096 10月 14 10:57 yufei

3. 写出命令切换到用户itcast


yufei@yufei:home$ su itcast

密码:

4. 写出命令在ubuntu下切换到root用户


$ sudo su

root@yufei:/home/yufei#

5. 写出命令修改或创建itcast用户的密码


$ sudo passwd itcast

输入新的 UNIX 密码:

重新输入新的 UNIX 密码:

passwd:已成功更新密码

ftp服务器搭建

1. ftp服务器安装完毕之后,服务会随系统的启动而自动启动吗?

2. 如果需要修改ftp服务器的配置文件,应该去哪个目录下找?

3. ftp服务器配置文件修改完毕之后,修改的配置能够立马生效吗?为什么?

4. 假设使用的ftp服务器为vsftpd,写出服务器重启命令

5. 从ftp服务器下载文件的命令是什么,上传文件的命令是什么?

6. ftp服务器自带的客户端能够对目录进行上传和下载操作吗?

7. 使用ftp自带的客户端如何使用匿名用户登录服务器,写出命令

8. 登录到ftp服务器之后,使用什么命令能够退出登录?

9. 如何使用lftp服务器匿名登录到ftp服务器?

2. sed指令

3. awk指令

4. 软件安装与配置

1. yf不在sudoers文件中


切换到root用户,vi /etc/sudoers

增加自己的用户名 例如:

## Allow root to run any commands anywhere

root    ALL=(ALL)    ALL

yf    ALL=(ALL)    ALL

2. vbox共享文件夹权限问题


$ sudo usermod -aG vboxsf $(whoami)

3. 不能挂载exfat格式u盘


$ sudo apt-get install exfat-utils

4. 安装JDK


$ vi ~/.bashrc

输入

JAVA_HOME=/usr/local/java

JRE_HOME=$JAVA_HOME/jre

CLASS_PATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASS_PATH

PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

export JAVA_HOME

export JRE_HOME

export CLASS_PATH

export PATH

$ source ~/.bashrc

$ java -version

java version "1.8.0_181"

Java(TM) SE Runtime Environment (build 1.8.0_181-b13)

Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

5. 安装eclipse


下载eclipse解压后拷贝到主目录

配置导航

编辑 $ sudo vi /usr/share/applications/eclipse_jee.desktop

[Desktop Entry]

Encoding=UTF-8

Name=EclipseJee

Comment=EclipseJee

Exec=/home/yufei/eclipse/eclipse

Icon=/home/yufei/eclipse/icon.xpm

Terminal=False

StartupNotify=true

Type=Application

Categories=Application;Development;

启动eclipse如果出现如下错误

A Java Runtime Environment (JRE) or Java Development Kit (JDK)

must be available in order to run Eclipse.

将安装的jdk中的jre链接到eclipse目录下

$ ln -s /usr/local/java/jre jre

6. 安装anaconda


下载anacona并安装

$ sh Anaconda3-5.3.0-Linux-x86_64.sh -b

配置

$ vi ~/.bashrc

输入

ANACONDA_HOME=/home/yufei/anaconda3

PATH=$ANACONDA_HOME/bin:$PATH

export PATH

export ANACONDA_HOME

$ source ~/.bashrc

7. 安装rar格式文件压缩解压缩工具


$ sudo apt-get install unrar -y

8. CentOS系统库网址


https://centos.pkgs.org/

9. 关掉Ubuntu全路径提示符


编辑~/.bashrc,将62行末尾的w改成W

if [ "$color_prompt" = yes ]; then

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

else

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W\$ '

fi

5. C++

6. Java

1. 运行Java程序报内存溢出


java -Xmx2048M -jar train.jar

扩展虚拟机运行内存

7. Python

1. 实用代码

1. 列出某一路径下的所有文件


#coding:gbk

"""

递归列出目录中所有文件 windows版

"""

import os

from fnmatch import fnmatch

def list_files(path):

    files_li = []

    for root, dirs, files in os.walk(path):

        for one_file in files:

            if os.path.getsize(ur"%s\%s" % (root, one_file)) > 0:

                files_li.append(ur"%s\%s" % (root, one_file))

    return files_li

files_li = list_files(ur"D:\zw_work\20170116-句子合理性分析-[9]\src\cpp\Preprocess\corpus\pmlc")

for file_name in [w for w in files_li if fnmatch(w,u'*.txt')]:

    print file_name


# Linux版

import os

def list_files(path):

    files_li = []

    for root, dirs, files in os.walk(path):

        for one_file in files:

            if os.path.getsize(u"%s/%s" % (root, one_file)) > 0:

                files_li.append(u"%s/%s" % (root, one_file))

    return files_li


# 文件名匹配

from fnmatch import fnmatch

file_li = [ ]

for file_name in [w for w in files_li if fnmatch(w,u'*.sgml')]:

    print file_name

8. Shell

9. 数据库

10. 开发过程中遇到的问题

你可能感兴趣的:(Linux系统编程总结)