react 前端框架如何驱动企业数字化转型与创新发展
805
2022-08-27
杂记 (7) —— shell, gdb, vim, gcc, mingw32
diff的结果显示解释
a - addc - changed - delete
如: $ diff file1 file2
1c1< 时间:0.29000000---> 时间:0.42000000
代表第一行不同
1,2d0< 时间:0.29000000
代表第一个文件比第二个文件多第一行时间:0.29000000和第二行after sorted :。
0a1> hello
代表第一个文件比第二个文件少第一行hello。
查看磁盘空间
edemon@ubuntu1:~$ df -hFilesystem Size Used Avail Use% Mounted onudev 491M 0 491M 0% /devtmpfs 101M 5.2M 95M 6% /run/dev/sda5 20G 6.3G 13G 34% /tmpfs 501M 156K 501M 1% /dev/shmtmpfs 5.0M 4.0K 5.0M 1% /run/locktmpfs 501M 0 501M 0% /sys/fs/cgroupcgmfs 100K 0 100K 0% /run/cgmanager/fstmpfs 101M 56K 100M 1% /run/user/1000/dev/sr0 1.2G 1.2G 0 100% /media/edemon/Ubuntu 15.04
查看CentOS上mysql的版本
$ rpm -qi mysql-serverName : mysql-server Relocations: (not relocatable)Version : 5.1.73 Vendor: CentOSRelease : 7.el6 Build Date: Wed 11 May 2016 02:05:53 PM CSTInstall Date: Wed 07 Dec 2016 08:44:50 AM CST Build Host: worker1.bsys.centos.orgGroup : Applications/Databases Source RPM: mysql-5.1.73-7.el6.src.rpmSize : 25688915 License: GPLv2 with exceptionsSignature : RSA/SHA1, Thu 12 May 2016 06:46:25 PM CST, Key ID 0946fca2c105b9dePackager : CentOS BuildSystem < : : The MySQL server and related filesDescription :MySQL is a multi-user, multi-threaded SQL database server. MySQL is aclient/server implementation consisting of a server daemon (mysqld)and many different client programs and libraries. This package containsthe MySQL server and some accompanying files and directories.
产看文件系统类型
root@ubuntu1:/etc/init.d# df -hFilesystem Size Used Avail Use% Mounted onudev 491M 0 491M 0% /devtmpfs 101M 5.2M 95M 6% /run/dev/sda5 20G 6.7G 12G 36% /tmpfs 501M 156K 501M 1% /dev/shmtmpfs 5.0M 4.0K 5.0M 1% /run/locktmpfs 501M 0 501M 0% /sys/fs/cgroupcgmfs 100K 0 100K 0% /run/cgmanager/fstmpfs 101M 48K 100M 1% /run/user/1000/dev/sr0 1.2G 1.2G 0 100% /media/edemon/Ubuntu 15.04 i386root@ubuntu1:/etc/init.d# file -s /dev/sda5/dev/sda5: Linux rev 1.0 ext2 filesystem data (mounted or unclean), UUID=acbb6d51-cbc0-40cc-8341-d4b0a4471b44 (large files)
Can’t connect to local MySQL server through socket
抱着折腾的心思,我关闭了mysql服务端。
root@ubuntu1:~# mysqladmin -u root -p shutdown
然后尝试重新开启,出现下列错误:
root@ubuntu1:~# mysqld_safe &[1] 6366root@ubuntu1:~# 161211 10:20:13 mysqld_safe Can't log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect.161211 10:20:13 mysqld_safe Logging to '/var/log/mysql/error.log'.161211 10:20:13
根据最后一句话的提示,我杀死mysqld进程。但是随后新的mysqld又出现了。查阅后,我将/etc/init.d/mysql删除了(准确的说是误删,mv写成了rm,word天 -_-||) 神奇的是我又能正常登陆mysql了。这正常吗。。。 我重新来了一次,发现是这样的: mysqld确实正常启动了:
root@ubuntu1:/etc/init.d# mysqld_safe &[1] 7276root@ubuntu1:/etc/init.d# 161211 11:09:28 mysqld_safe Can't log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect.161211 11:09:28 mysqld_safe Logging to '/var/log/mysql/error.log'.161211 11:09:28 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql161211 11:09:30
登陆时出现问题:
edemon@ubuntu1:~$ mysql -u root -pEnter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
我查找sock文件,它并不存在。 重启mysql:
edemon@ubuntu1:~$ service mysql restart
OK:
root@ubuntu1:/home/edemon# mysql -u root -pEnter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 3
不过我在CentOS上使用同样的指令时他不认识mysql,我搜索了一下mysqld,然后重启mysql服务,最后正常了。/etc/rc.d/init.d/mysqld restart
bc进行浮点运算
man在线手册中有这样的话:
NUMBERS 45 The most basic element in bc is the number. Numbers are arbitrary precision numbers. This precision is both in the integer part and the 46 fractional part. All numbers are represented internally in decimal and all computation is done in decimal. (This version truncates 47 results from divide and multiply operations.) There are two attributes of numbers, the length and the scale. The length is the total 48 number of significant decimal digits in a number and the scale is the total number of decimal digits after the decimal point. For exam‐ 49 ple: 50 .000001 has a length of 6 and scale of 6. 51 1935.000 has a length of 7 and a scale of 3.
所以我们可以通过改变scale来控制输出浮点数的精度。 比如:
edemon@ubuntu1:~$ bcbc 1.06.95Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.This is free software with ABSOLUTELY NO WARRANTY.For details type `warranty'. 2/40scale=22/4.50
查看cpu、处理器等硬件信息
cat /proc/cpuinfo
gdb临时改变变量的值
假设改变浮点数value1的值:
(gdb) set var value1=1
负数的增长
-1在计算机中的表示: 32整数 —— 11111111111111111111111111111111 仅从负数的角度来看,负数在计算机中的表示也有一定的规律:
(gdb) set var $eax=-1(gdb) p/t $eax$3 = 11111111111111111111111111111111(gdb) set var $eax=-2(gdb) p/t $eax$4 = 11111111111111111111111111111110(gdb) set var $eax=-3(gdb) p/t $eax$5 = 11111111111111111111111111111101(gdb) set var $eax=-4(gdb) p/t $eax$6 = 11111111111111111111111111111100(gdb) set var $eax=-5(gdb) p/t $eax$7 = 11111111111111111111111111111011(gdb) set var $eax=-6(gdb) p/t $eax$8 = 11111111111111111111111111111010
Binary file (standard input) matches
grep提取特定信息出错,加上选项-a即可。 read_command |grep -a condition 专用于处理二进制文件的情况: Process a binary file as if it were text; this is equivalent to the --binary-files=text option
查gdb调试运行到哪一行
(gdb) bt查看堆栈信息,同时也能查看行数信息。
vim字体设置
ctrl \+ 0 常规字体 ctrl \+ shft \+ + 字体加大 ctrl \+ -字体变小
at计划任务
linux at命令可以用于在特定的时间执行设定的任务,如:
at 14:40at> ls -l > textat>
查看at任务列表:atq;删除at任务: atrm Job_number
run level
Linux默认的运行级别是
[root@CentOS Desktop]# runlevelN 5
查看各个运行级别的含义:
[root@CentOS Desktop]# cat /etc/inittab...# Default runlevel. The runlevels used are:# 0 - halt (Do NOT set initdefault to this)# 1 - Single user mode# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)# 3 - Full multiuser mode# 4 - unused# 5 - X11# 6 - reboot (Do NOT set initdefault to this)#
init 0可关机。
crontab
crontab的安装:yum install -y vixie-cron crontab -e编辑crontab文件,不存在则自动创建。 crontab前5列是时间和日期。
9 # .---------------- minute (0 - 59) 10 # | .------------- hour (0 - 23) 11 # | | .---------- day of month (1 - 31) 12 # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 13 # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 14 # | | | | | 15 # * * * * * user-name command to
开启crond服务:
[root@CentOS Desktop]# /etc/rc.d/init.d/crond restartStarting crond: [ OK ][root@CentOS Desktop]# ps -ef |grep crondroot 3636 1 15 15:41 ? 00:00:01 crondroot 3639 2872 0 15:41 pts/0 00:00:00 grep
在crontab文件中编辑任务:vim /etc/crontab 末尾增加任务:19 16 * * * date > /home/edemon/workspace/text 最后查看结果:
[edemon@CentOS workspace]$ cat textWed Jan 18 16:19:01 CST 2017
使用crontab -e来制定任务却一直未能成功,迷惑啊。
查看gcc的搜索路径
先看看gcc帮助:
shell> gcc --helpUsage: gcc [options] file...Options: -pass-exit-codes Exit --help Display --target-help Display --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...] Display specific types of command line options (Use '-v --help' to display command line options of sub-processes) --version Display -dumpspecs Display all of the built in -dumpversion Display -dumpmachine Display the compiler's target processor -print-search-dirs Display the directories in the compiler's search path -print-libgcc-file-name Display the name of the compiler's companion library -print-file-name=
根据提示查找搜索:
shell> gcc -print-search-dirsinstall: /usr/lib/gcc/i686-linux-gnu/4.9/programs: =/usr/lib/gcc/i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/bin/i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/bin/i386-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/bin/libraries: =/usr/lib/gcc/i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/lib/i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/lib/i386-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/lib/../lib/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../i686-linux-gnu/4.9/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../i386-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../lib/:/lib/i686-linux-gnu/4.9/:/lib/i386-linux-gnu/:/lib/../lib/:/usr/lib/i686-linux-gnu/4.9/:/usr/lib/i386-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/lib/:/usr/lib/gcc/i686-linux-gnu/4.9/../../../:/lib/:/usr/lib/#for c:shell> `gcc -print-prog-name=cc1` -vignoring nonexistent directory "/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/include"#include "..." search starts here:#include <...> search starts here: /usr/lib/gcc/i686-linux-gnu/4.9/include /usr/local/include /usr/lib/gcc/i686-linux-gnu/4.9/include-fixed /usr/includeEnd of search list.#for c++shell> `gcc -print-prog-name=cc1plus` -vignoring nonexistent directory "/usr/lib/gcc/i686-linux-gnu/4.9/../../../../i686-linux-gnu/include"#include "..." search starts here:#include <...> search starts here: /usr/include/c++/4.9 /usr/include/i386-linux-gnu/c++/4.9 /usr/include/c++/4.9/backward /usr/lib/gcc/i686-linux-gnu/4.9/include /usr/local/include /usr/lib/gcc/i686-linux-gnu/4.9/include-fixed /usr/includeEnd of search list.^C
mingw32头文件和库文件
查找mingw32的搜索路径是一样的:
shell> i686-w64-mingw32-gcc --helpUsage: i686-w64-mingw32-gcc [options] file...Options: -pass-exit-codes Exit with highest error code from a phase --help Display this information --target-help Display target specific command line options --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...] Display specific types of command line options (Use '-v --help' to display command line options of sub-processes) --version Display compiler version information -dumpspecs Display all of the built in spec strings -dumpversion Display the version of the compiler -dumpmachine Display the compiler's target processor -print-search-dirs Display the directories in the compiler's search path -print-libgcc-file-name Display the name of the compiler's companion library -print-file-name=
查看库文件搜索目录:
[edemon@CentOS ~]$ i686-w64-mingw32-gcc -print-search-dirs install: /usr/lib/gcc/i686-w64-mingw32/4.9.2/programs: =/usr/libexec/gcc/i686-w64-mingw32/4.9.2/:/usr/libexec/gcc/i686-w64-mingw32/4.9.2/:/usr/libexec/gcc/i686-w64-mingw32/:/usr/lib/gcc/i686-w64-mingw32/4.9.2/:/usr/lib/gcc/i686-w64-mingw32/:/usr/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/i686-w64-mingw32/4.9.2/:/usr/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/libraries: =/usr/lib/gcc/i686-w64-mingw32/4.9.2/:/usr/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/i686-w64-mingw32/4.9.2/:/usr/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/../lib/:/usr/i686-w64-mingw32/sys-root/mingw/lib/i686-w64-mingw32/4.9.2/:/usr/i686-w64-mingw32/sys-root/mingw/lib/../lib/:/usr/lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/lib/:/usr/i686-w64-mingw32/sys-root/mingw/lib/
优先搜索多个头文件库
i686-w64-mingw32-gcc sdl_back.c -lSDL -I/usr/include/ -I/usr/include/i386-linux-gnu/gnu/
mingw32在linux平台生成windows可执行文件
下面提到的win.c仅仅是一个简单的hello程序:
#include
然后使用mingw32生成汇编文件和win可执行文件:
root@ubuntu1:/home/edemon/workspace# i686-w64-mingw32-gcc -S -o win.s win.c root@ubuntu1:/home/edemon/workspace# i686-w64-mingw32-gcc -o win.exe win.c root@ubuntu1:/home/edemon/workspace# file win.exewin.exe: PE32 executable (console) Intel 80386, for MS Windowsroot@ubuntu1:/home/edemon/workspace# file win.swin.s: assembler source, ASCII textroot@ubuntu1:/home/edemon/workspace# cat win.s .file "win.c" .def ___main; .scl 2; .type 32; .endef .section .rdata,"dr"LC0: .ascii "hello\0" .text .globl _main .def _main; .scl 2; .type 32; .endef_main: pushl %ebp movl %esp, %ebp andl $-16, %esp subl $16, %esp call ___main movl $LC0, (%esp) call _puts movl $0, %eax leave ret .ident "GCC: (GNU) 4.9.2" .def _puts; .scl 2; .type 32; .endef
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~