# my_data **Repository Path**: xiyuanwang/my_data ## Basic Information - **Project Name**: my_data - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-22 - **Last Updated**: 2024-02-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 记录一些日常使用的命令和问题 - [记录一些日常使用的命令和问题](#记录一些日常使用的命令和问题) - [Linux](#linux) - [screen配置](#screen配置) - [华为云虚机在线扩容](#华为云虚机在线扩容) - [Python](#python) - [终端无法使用键盘方向键](#终端无法使用键盘方向键) - [GDB命令行调试python+C代码](#gdb命令行调试pythonc代码) - [VScode调试python+C代码](#vscode调试pythonc代码) - [RPM](#rpm) - [移除python自动Provide和requires](#移除python自动provide和requires) - [修改默认python执行器](#修改默认python执行器) - [Git](#git) - [本地存储git鉴权](#本地存储git鉴权) - [使用VIM编辑器](#使用vim编辑器) - [拉取PR到本地](#拉取pr到本地) - [OpenStack](#openstack) - [Devstack Master ARM嵌套虚拟化配置](#devstack-master-arm嵌套虚拟化配置) - [Kolla openEuler+iSula配置](#kolla-openeulerisula配置) - [pypi](#pypi) - [上传软件包到pypi](#上传软件包到pypi) - [pip改源](#pip改源) - [Ansible](#ansible) - [打开执行机ssh登录功能](#打开执行机ssh登录功能) ## Linux ### screen配置 `vi ~/.screenrc` ``` # allow roll screen with mouse termcapinfo xterm* ti@:te@ # look and feel caption always "%{= bb}%{+b w}%h %=%{=b rw} %l %{= db} ${USER}@%H %{= dg}%c" hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<" # skip the startup message startup_message off # go to home dir chdir # Automatically detach on hangup. autodetach on # Change default scrollback value for new windows defscrollback 10000 # start with visual bell as default vbell on vbell_msg "bell on %t (%n)" activity "Activity in %t(%n)" shelltitle "shell" shell -$SHELL ``` ### 华为云虚机在线扩容 使用openEuler镜像在华为云创建VM时,不论硬盘指定多大,VM的系统盘会固定为40G,因此需要在线扩容,满足工作需要。 1. 查看分区情况, 发现硬盘100G,但vda2只用了40G ``` $ fdisk -l Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x53af6437 Device Boot Start End Sectors Size Id Type /dev/vda1 2048 4194303 4192256 2G e W95 FAT16 (LBA) /dev/vda2 4194304 xxx xxx 38G 83 Linux $ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 4.0M 0 4.0M 0% /dev tmpfs 7.7G 0 7.7G 0% /dev/shm tmpfs 3.1G 8.6M 3.1G 1% /run tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup /dev/vda2 38G 35G 57G 38% / tmpfs 7.7G 0 7.7G 0% /tmp /dev/vda1 2.0G 200M 1.8G 10% /boot ``` 2. 执行fdisk /dev/vda,依次输出d 回车,n,一路回车,w 3. 刷新磁盘,扩容成功 ``` $ resize2fs /dev/vda2 $ partprobe ``` ## Python ### 终端无法使用键盘方向键 ``` apt install libncurses5-dev pip3 install readline 如果安装readline后,python异常,报core dump错误,可以试试 pip3 uninstall readline pip3 install gnureadline ``` ### GDB命令行调试python+C代码 > 前置要求:C语言代码需要Debug编译。 1. 执行`gdb python`,进入gdb并加载python,根据提示错误修复各种问题,如安装相关debuginfo包等。正确显示如下,重点是最后一行`Reading symbols`: ``` GNU gdb (GDB) openEuler 11.1-3.oe2203sp1 Copyright (C) 2021 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-openEuler-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from python... Reading symbols from /usr/lib/debug//usr/bin/python3.9-3.9.9-24.oe2203sp1.x86_64.debug... (gdb) ``` 2. 设置C++代码断点,比如我想debug pytorch的`torch.manual_seed`方法,通过阅读源码,发现C的实现是`THPGenerator_manualSeed`,命令如下: ``` (gdb) b THPGenerator_manualSeed Make breakpoint pending on future shared library load? (y or [n]) y ``` 3. 执行python文件或命令行,程序会自动在`THPGenerator_manualSeed`源码处暂停,命令如下: 1. 调试Python文件: ``` 执行python文件即可 (gdb) run test.py ``` 1. 调试python命令行: ``` 先进入python (gdb) run 然后执行python代码即可,程序会在上述的第二步的断点处暂停。 >>> import torch >>> torch.manual_seed(1) ``` ### VScode调试python+C代码 需要先安装以下插件: - C/C++ - Python - Python C++ Debugger 1. 在本地需要测试的python工程里新建或打开``.vscode/launch.json`文件,修改`configurations`内容,如下: ``` { "name": "Python C++ Debug", "type": "pythoncpp", "request": "launch", "pythonLaunchName": "Python: Current File", "cppAttachName": "gdb Attach", }, { "name": "gdb Attach", "type": "cppdbg", "request": "attach", }, { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": false } ``` 2. 打开需要debug的python文件,对应代码处设置断点,然后再VSCODE侧栏的`Run and Debug`里选择`Python C++ Debug`并执行Debug 3. 等待片刻后,代码会停在刚设置的python断点处,此时VSCODE侧栏`Run and Debug`里会显示两个进程,一个python,一个GDB,点开GDB,再点击暂停按钮,然后打开VSCODE底栏的`Debug Console`,选择`gdb Attach` console,输入C语言断点处,比如`-exec b THPGenerator_manualSeed`,设置完后再点击侧边栏GDB的运行按钮 4. 在python断点文件中点击继续执行python代码,则代码会停在刚才设置的C语言断点处。 ## RPM Python RPM官方指导: https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/ ### 移除python自动Provide和requires ``` 在SPEC中新增如下行 表示移除包含enum-compat的依赖 %global __requires_exclude .*enum-compat.* 移除以pythonXdist开头的provide信息 %undefine __pythondist_provides 移除不带版本的provide信息 %undefine __pythonname_provides ``` **解释**: 在使用`rpmbuild`构建python包时,RPM会自动生成一些provide和require。比如我现在打一个sqlalchemy 1.0.0的RPM包, 生成的python3-sqlalchemy.rpm的自动provide和require大概如下: ``` Provide: python-sqlalchemy python3-sqlalchemy python3.8dist(sqlalchemy) Requires: python3.8dist(six) ``` 如果想移除这些依赖,把上面提到的宏加到Spec中即可。 ### 修改默认python执行器 rpm默认使用/usr/bin/python作为执行器,但有时候用户希望rpmbuild能指向特性python版本,加上以下宏即可。 ``` %define __python /usr/bin/python2 ``` ## Git ### 本地存储git鉴权 ``` git config --global credential.helper store ``` ### 使用VIM编辑器 ``` git config --global core.editor "vim" ``` ### 拉取PR到本地 ``` git fetch pull//head: remote: 远端仓库,需要提前使用git remote add 配置 pr_number: PR编号 local_branch: 拉取到本地哪个分支 例如我的本地环境: git remote -v origin https://gitee.com/xiyuanwang/openstack (fetch) origin https://gitee.com/xiyuanwang/openstack (push) upstream https://gitee.com/openeuler/openstack (fetch) upstream https://gitee.com/openeuler/openstack (push) 执行 git fetch upstream pull/229/head:test 会拉取openeuler/openstack项目的229 PR到本地test分支 ``` ## OpenStack ### Devstack Master ARM嵌套虚拟化配置 ``` # Devstack ARM64 嵌套虚拟化配置 [[local|localrc]] DATABASE_PASSWORD=root RABBIT_PASSWORD=root SERVICE_PASSWORD=root ADMIN_PASSWORD=root OVN_BUILD_FROM_SOURCE=True [[post-config|$NOVA_CONF]] [libvirt] cpu_mode=custom cpu_model=cortex-a72 ``` ### Kolla openEuler+iSula配置 ``` [DEFAULT] tag = rocky base = openeuler pull = false #profile = keystone profile = openeuler_service base_runtime = isula [profiles] openeuler_service = ^keystone,^glance,^cinder,^nova(?!-mksproxy|join).*,^neutron-(?!bgp-dragent|lbaas-agent|vpnaas-agent|metadata-agent-ovn|server-ovn|server-opendaylight).*,^iscsid,^tgtd,^openvswitch,^ironic,^prometheus,^grafana,^dnsmasq,^rabbitmq,^haproxy,^mariadb,^tempest,^trove,^chrony,^multipathd,^kolla-toolbox,^cron,^keepalived,^memcached,^horizon keystone = ^keystone ``` ## pypi ### 上传软件包到pypi 1. 在pypi.org上注册账号,生成Token 2. 在本地用户根目录下创建`.pypirc`文件 ``` vi ~/.pypirc [pypi] username=__token__ password={token} ``` 3. 安装依赖 ``` pip install twine ``` 4. 选择一个想要发布的版本号,给本地git仓库打tag。(如果使用pyproject管理项目,可以忽略) ``` git tag 1.0.0 ``` 5. 本地构建 ``` python3 setup.py sdist 或pyproject方式 python -m build ``` 6. 上传 ``` twine upload dist/* ``` ### pip改源 `mkdir ~/.pip && vi ~/.pip/pip.conf` ``` [global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host = https://pypi.tuna.tsinghua.edu.cn ``` ## Ansible ### 打开执行机ssh登录功能 用户/密码: wxy/opendebug@123 ``` - name: debug user: name: wxy password: $6$HSWeJwi87pBTslKL$wtNLFyVsIMFtdK5y4RP2dL.VmgngYqMNpeCeSKy36WKpf6ReOChSfY.nszLyf1jTfbHWdmAjb66vZXgsX4MNo. shell: /bin/bash become: true when: ansible_facts.distribution == "openEuler" - name: Allow login with pasword shell: cmd: | sed -i 's/.*PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config systemctl restart sshd executable: /bin/bash become: true - name: Give sudo right lineinfile: dest=/etc/sudoers state=present line='{{item}}' validate='visudo -cf %s' with_items: - "wxy ALL=(ALL) NOPASSWD: ALL" become: true ```