Só quero instalar versões mais antigas de alguns aplicativos. Estou mais familiarizado com versões mais antigas de alguns aplicativos, no Windows você pode instalar arquivos exe mais antigos no Ubuntu idk.
Início
Sou muito novo no Ubuntu e não sei muito sobre como o Ubuntu funciona. Quando executo o sudo apt update ou quando quero instalar um aplicativo ou adicionar um repositório, recebo um erro de tempo limite ou não consigo buscar, também tentei mudar DNS.
Por exemplo :
Err:8 http://in.archive.ubuntu.com/ubuntu bionic InRelease
Could not connect to in.archive.ubuntu.com:80 (103.97.84.254), connection timed out
Há algo para alterar ou redefinir?
Eu tenho uma máquina Ubuntu no VMWare.
Inicialmente, ele tinha 40 Gb de armazenamento, mas recentemente comecei a receber avisos de pouco espaço em disco, então decidi aumentá-lo para 60 com o GParted.
O problema é que ainda recebo o aviso na inicialização.
A questão é que não tenho certeza do que estou olhando. O alerta diz que há apenas 600 MB disponíveis, o Disk Usage Analyzer diz que o root está em 100% de 25 Gb enquanto relata a capacidade total do sistema de arquivos em 42 Gb e em Discos vejo a partição em 60 Gb depois de aumentá-la de 40 Gb.
Alguma ideia? Estou lendo isso errado?
Um cartão µSD que estava em uma câmera de segurança parou de gravar repentinamente:
- Muitos dos dados desapareceram (não é um problema).
- Os dados que ainda existem estão corretos e legíveis.
- O cartão agora é sempre montado como somente leitura (no Chromebook, Windows e Ubuntu).
Não consigo reformatá-lo ou fazer muita coisa com ele:
$ df
/dev/mmcblk0 vfat 117G 15G 102G 13% /media/ray/xxx
$ sudo fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 116.1 GiB, 124657860608 bytes, 243472384 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: 0x00000000
$ sudo fsck /dev/mmcblk0
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
open: Read-only file system
$ sudo hdparm -r0 /dev/mmcblk0
/dev/mmcblk0:
setting readonly to 0 (off)
readonly = 1 (on)
$ sudo hdparm -r0 /dev/mmcblk0
/dev/mmcblk0:
setting readonly to 0 (off)
readonly = 1 (on)
$ sudo fsck /dev/mmcblk0
fsck from util-linux 2.34
fsck.fat 4.1 (2017-01-24)
open: Read-only file system
$ sudo umount /media/ray/xxx
$ sudo mount -o rw /dev/mmcblk0 /media/ray/xxx
mount: /media/ray/xxx: WARNING: device write-protected, mounted read-only.
Observe que este não é um cartão SD de tamanho normal; não há chave física de proteção contra gravação.
O cartão pode ser recuperado ou é lixo?
Costumo ler que é melhor esperar até que o primeiro ponto da versão LTS do Ubuntu (por exemplo, 24.04.1) seja lançado antes de atualizar. Também se aplica a atualizações da versão provisória (por exemplo, 23.10)? Mais especialmente se a versão provisória alcançada for End-of-Life (EOL)?
Eu tenho um firewall ufw com as seguintes regras:
Status: ativo Registro em log: ativado (baixo) Padrão: negar (entrada), permitir (saída), negar (roteado) Novos perfis: pular
Para a ação de
LIMITE 22/tcp EM Qualquer lugar
80 LIMITE EM Qualquer lugar
443 LIMITE EM Qualquer lugar
22/tcp (v6) LIMITE EM Qualquer lugar (v6)
80 (v6) LIMITE EM Qualquer lugar (v6)
443 (v6) LIMITE EM Qualquer lugar (v6)
Essas regras estabelecem um limite para o número de solicitações nas portas 22, 80 e 443. As regras são obedecidas exceto quando utilizo uma VPN como ExpressVPN. A porta 22 ainda tem um limite, mas as portas 80 e 443 não estão mais limitadas por uma VPN.
Como posso definir um limite para o número de solicitações para bloquear um hacker que se esconde atrás de uma VPN?
Minha GPU é Nvidia GTX 550 ti e devo extrair todos os frames dos arquivos de vídeo para o meu trabalho.
minha GPU não suporta a versão mais recente do CUDA.
Tentei vários softwares para usar minha GPU para extração de quadros, mas todos eles usam minha CPU.
existe algum software ou forma de extrair todos os frames de um vídeo usando minha placa GPU?
por favor, explique completamente sua solução para o meu problema (qual versão devo instalar e ...)
observe que não tenho orçamento suficiente para comprar uma nova placa GPU
Digamos que sou um psicopata que nomeia meus arquivos como:
[-] `{title: "Non-Metadata", id: "s4a4ji"}`{.JSON5}.dir
Essa é a minha melhor tentativa de criar o nome de arquivo mais horrível e plausível possível - ele usa Pandoc Markdown e JSON5.
POSIX
Se eu inserir isso ls
, ele me fornecerá uma versão que pode ser escapada de forma que qualquer shell compatível com POSIX (sh, é claro, mas também bash
, no Fedora 40) seja capaz de interpretá-lo sem problemas:
-
ls "$PWD"
-
' [-]'$'\t''`{title: "Non-Metadata",'$'\t''id: "s4a4ji"}`{.JSON5}.dir'
Octeto
No entanto, tree
e file
em vez disso, parece substituir caracteres não ASCII por um tipo de representação com escape de octeto, que não parece ser utilizável da maneira descrita acima:
-
tree "$PWD"
-
. └── [-]\011`{title: "Non-Metadata",\011id: "s4a4ji"}`{.JSON5}.dir 2 directories, 0 files
UTF-8
E, claro, o PowerShell Core Get-ChildItem
apenas gera a representação UTF-8 completa:
-
Get-ChildItem -LiteralPath "$PWD" | Select-Object -ExpandProperty 'Name'
-
[-] `{title: "Non-Metadata", id: "s4a4ji"}`{.JSON5}.dir
Como é que estes funcionam de forma diferente? Eu esperaria que ls
, tree
, e file
pelo menos operassem de forma idêntica, considerando que - até onde sei - estes são GNU CoreUtils. Além disso, o PowerShell parece demonstrar que nada força fundamentalmente essas ferramentas a escapar de caracteres não-ASCII, então por que estão fazendo isso?
Um guia de boas-vindas ao PowerShell contém os equivalentes do PowerShell dos comandos pwd
, cd
, ls
, find
, cp
, rm
, mkdir
, touch
, cat
, tail
, grep
, uname
, mkfs
, , ping
, man
e cut
:
https://mathieubuisson.github.io/powershell-linux-bash/
Além disso, é possível encontrar equivalências adicionais de outros comandos de linha de comando, como which , where , alias , wget , curl , type , %0 e até mesmo command overriding .
No entanto, ainda estou tendo problemas para descobrir como fazer uma for
declaração simples no Powershell. Por exemplo, o seguinte agruparia todos os arquivos com base no nome do arquivo, assumindo que cada nome de arquivo tenha um equivalente .txt:
set b=0
for %a in (*.txt) do set /a b=!b!+1 > NUL & echo (!b!) & dir /b %~na.*
Qual é o equivalente no PowerShell? O comando
ls *.txt | ForEach-Object {Split-Path -LeafBase -Path $_.Name}
lista os arquivos. No entanto, como passo o nome do arquivo para o dir /b %~na.*
comando? Parece que assim que fecho as chaves do comando For-Each-Object, os resultados querem passar como uma aglomeração, ao invés de poder processá-los uma linha por vez. E se eu adicionar outra camada ao redor do Split-Path, então ele $_
acaba sendo um objeto diferente, então não é possível separar o nome do arquivo da extensão.
EDIT: Existe uma maneira melhor de analisar os resultados um de cada vez? O for
comando foi sugerido nos comentários; Só tenho dificuldade em descobrir como fazer com que ele processe todo o arquivo *.txt; mas se isso fosse possível, talvez esse fosse o caminho a seguir?
A preferência é fazer isso a partir da linha de comando, sem precisar gravar em um arquivo, se possível.
Encontrei muitas soluções para encontrar a localização de quadros-chave em vídeos usando ffprobe, mas todas elas são lentas , como aproximadamente 0,1x em tempo real em um vídeo de 8k.
Embora isso seja bom para encontrar um quadro-chave próximo ao início de um vídeo, não quero esperar 10 horas para encontrar a posição de um quadro-chave próximo à marca de 1 hora.
Alguém conhece uma maneira de obter rapidamente a localização de um quadro-chave pouco antes ou depois de um carimbo de data/hora?
Exemplo de respostas lentas:
Como obter o carimbo de data/hora do quadro-chave mais próximo antes de um determinado carimbo de data/hora com FFmpeg?
obtenha o carimbo de data/hora de um quadro-chave exatamente antes de um determinado carimbo de data/hora com FFmpeg
Obtenha a lista de I-Frames em um vídeo em FFMPEG/Python
Quando estou usando este comando para instalar o jeprof assim:
yum install gperftools-devel -y
o comando executa com sucesso e instala o gperftools-devel-2.7-6.el8.x86_64
, mas quando uso este comando para mostrar a ferramenta:
jeprof --version
shows não encontrou o comando. Estou esquecendo de algo? Eu também tentei assim:
sudo yum install gperftools -y
Instalei o Debian 12 Bookworm recentemente e, até onde pude ler sobre uma nova instalação, ele vem com app-armor pré-instalado por padrão. Estou executando o comando aa-status
como root mas está retornando: bash: aa-status: command not found
. Eu sei que aa-status faz parte do apparmor-utils. E isso também está instalado.
Sendo mais preciso, o retorno apt list --installed | grep apparmor
aqui reside em:
apparmor-profiles/stable,stable,now 3.0.8-3 all [installed]
apparmor-utils/stable,stable,now 3.0.8-3 all [installed]
apparmor/stable,now 3.0.8-3 amd64 [installed]
libapparmor1/stable,now 3.0.8-3 amd64 [installed]
python3-apparmor/stable,stable,now 3.0.8-3 all [installed,automatic]
python3-libapparmor/stable,now 3.0.8-3 amd64 [installed,automatic]
Uma vez que eu "pergunto" ao systemctl sobre apparmor com systemctl status apparmor ele "diz":
● apparmor.service - Load AppArmor profiles
Loaded: loaded (/lib/systemd/system/apparmor.service; enabled; preset: enabled)
Active: active (exited) since Thu 2024-07-25 08:39:48 -03; 5min ago
Docs: man:apparmor(7)
https://gitlab.com/apparmor/apparmor/wikis/home/
Process: 978 ExecStart=/lib/apparmor/apparmor.systemd reload (code=exited, status=0/SUCCESS)
Main PID: 978 (code=exited, status=0/SUCCESS)
CPU: 359ms
Jul 25 08:39:48 mypc systemd[1]: Starting apparmor.service - Load AppArmor profiles...
Jul 25 08:39:48 mypc apparmor.systemd[978]: Restarting AppArmor
Jul 25 08:39:48 mypc apparmor.systemd[978]: Reloading AppArmor profiles
Jul 25 08:39:48 mypc systemd[1]: Finished apparmor.service - Load AppArmor profiles.
Também notei o apparmor.service finalizado - Carregar perfis do AppArmor. mas não sei o que isso significa. Preciso de um perfil para fazê-lo funcionar corretamente? Não vem com perfis padrão? Você poderia me ajudar a entender melhor?
Desde já, obrigado!
Em jq
scripts, eu precisava criar objetos json usando pares de valores de caminho (que são mais gerais do que os antigos pares de valores-chave). Ou seja, em vez de uma chave, preciso utilizar um caminho, para que o valor seja criado em um nível mais profundo. (Esses caminhos são fornecidos externamente, então não os conheço antecipadamente.)
Por exemplo, em pseudocódigo que não funciona, gostaria de usar caminhos para criar um objeto como este:
jq -n '{"a"."x" : 3, "b"."y" : 4}'
para que ele crie o mesmo objeto json que jq -n '{"a":{"x" : 3}, "b":{"y" : 4}}'
, ou seja,
{
"a": {
"x": 3
},
"b": {
"y": 4
}
}
De certa forma, isso é semelhante ao mdir -p
que permite criar diretamente um diretório de destino com todos os diretórios ancestrais ao longo do caminho. Mas preciso fazer isso para (muitos) objetos JSON. Daí a pergunta:
Qual é a maneira mais simples de criação de objetos por pares caminho-valor usando jq nativo (talvez mais algum bash)?
(Estou procurando uma solução de baixa complexidade sem programação séria. Isso é com jq-1.7.1. no Ubuntu 24.04 LTS)
-- Esclarecimento --
A entrada que tenho em mente é uma lista de caminhos mais uma lista de valores, como:
[".a.x", ".b.y"]
e
[3, 4]
. O caminho é separado por pontos. Para simplificar, presumo que cada parte entre os pontos seja um identificador simples como y
(não um identificador complexo como "y.z"
). Ou seja, não considero (por enquanto) caminhos como:
[".a.x", ".b.\"y.z\""]
Eu tenho um módulo de software que contém alguns arquivos com o mesmo padrão.
<whitespaces>private static final long serialVersionUID = \dL;
Como posso encontrar arquivos com o mesmo valor?
$ grep -R serialVersionUID
./path/to/Some.java: private static final long serialVersionUID = 111L;
./path/to/Other.java: private static final long serialVersionUID = 222L;
./path/to/Another.java: private static final long serialVersionUID = 111L;
Não é aquele recuo anterior diferente entre as colunas.
Agora quero encontrar esses arquivos com o mesmo valor na segunda coluna ( private static final ...
)?
$ grep -R serialVersionUID | .....
./path/to/Some.java: private static final long serialVersionUID = 111L;
./path/to/Another.java: private static final long serialVersionUID = 111L;
Obrigado.
Isso foi tudo que consegui encontrar até agora...
$ grep -R serialVersionUID | sed 's/[ ][ ]*/ /g' | sort -k 2
Tenho uma melhoria, mas imprime apenas a segunda coluna.
$ grep -R serialVersionUID | sed 's/[ ][ ]*/ /g' | sort -k 2 | uniq -f 2 -d
No Ed posso testar espaços em branco com este regex: g/ *$/p
. Suponho que não exista uma maneira de mostrar espaços em branco, talvez passando o conteúdo do buffer para outro comando shell.
Eu tenho dois servidores.
Um lixo recolhido, colado com fita adesiva e chiclete. É uma mistura de peças Dell R620 e Gen 8 HPE com 40 núcleos/1,5 TB de RAM. Executando o Ubuntu 22.04 e o SQL Server 2022 Dev Version. Raid 10 SSDs de 3,7 TB. O MDOP está definido como 16.
O outro é uma VM hospedada em um cluster de cabeça tripla Xenon Gold com SSD Nas em todos os 9 metros. Servidor 2019, padrão sql server 2022. 128 gigas/16 núcleos alocados. O MDOP também está definido como 16. O banco de dados foi um backup/restauração do servidor de teste.
A tabela principal abriga dados transmitidos ao vivo com uma média de 100 a 200 mil novos registros por dia, atualmente se aproximando de 30 bilhões de linhas com 4 colunas. Ele é configurado com um índice de armazenamento de coluna e os dados são classificados e preenchidos por meio de um campo de carimbo de data/hora.
Fazer uma consulta simples leva de segundos a minutos no servidor de teste, mas de minutos a quase uma hora no servidor que será de produção em breve.
O servidor de teste mostra todos os 16 núcleos sendo utilizados. No servidor de produção utilizará apenas dois núcleos. Se eu executar várias instâncias da mesma consulta, o servidor de produção consumirá um conjunto adicional de dois núcleos por consulta executada. Isso pode ser feito até que a CPU esteja com 100% de utilização.
A consulta que estou testando é select top 100 * from mlinkdatacsunixtime order by serialtime desc
No servidor de teste, ela é executada em 1 minuto a 1,5 min. Na produção são 11 minutos.
Eu verifiquei: soquete VM vs contagem de núcleos. 2 soquetes/8 núcleos cada. O servidor SQL verificado mostra todos os 16 como online e visíveis. Combinei todas as opções entre as duas instâncias sql. Configurações duplicadas do servidor e do banco de dados MDOP. Consulta executada diversas vezes para tentar carregar a tabela na memória. A tabela tem cerca de 50 GB, o servidor Prod mostra apenas 63 GB dos 128 utilizados após testar várias consultas. O servidor de teste gira em torno de 250 GB, mas tem muito mais recursos para outros projetos.
Realmente espero que alguém possa me dizer que perdi algo estúpido.
Meu próximo teste é reconstruir o servidor com a versão sql Dev para ver se é algo com padrão sql. Minha última gota é tentar convencer o administrador e o gerenciamento do sistema a me deixar executar um servidor Linux em produção.
Dadas estas duas tabelas:
Tabela 1
id1 | id2 |
---|---|
224 | 2341 |
5234 | 9394 |
6243 | 2342 |
⋮ | ⋮ |
Mesa 2
eu ia | valor |
---|---|
224 | 2 |
2341 | 52 |
2342 | 24 |
5234 | 23 |
6243 | 242 |
9394 | 99 |
⋮ | ⋮ |
Eu gostaria de criar esta tabela:
Tabela 3
id1 | id2 | diferença |
---|---|---|
224 | 2341 | 52-2 |
5234 | 9394 | 99-23 |
6243 | 2342 | 24-242 |
⋮ | ⋮ | ⋮ |
onde diff
= (valor de id2) - (valor de id1).
Tentei fazer isso com várias subconsultas aninhadas com junções, mas parecia uma maneira bastante elaborada/desajeitada de fazer isso. Qual é a maneira mais simples de fazer isso?
Temos um enorme ambiente de produção do MS SQL Server com milhares de tabelas que precisam urgentemente de ajuste e remoção de índices. Alguma sugestão sobre as melhores maneiras de testar as alterações propostas fora da produção?
Obviamente, podemos (e fazemos) criar um servidor de banco de dados DEV onde podemos fazer alterações, mas essa cópia do DEV não refletirá as demandas do mundo real feitas nas tabelas. Também temos um espelho de produção que usa envio de log de transações, mas os espelhos são sempre somente leitura (a menos que você faça failover deles para o primário), portanto, não podemos testar alterações de índice neles.
Existe alguma maneira de enviar logs de transações para uma instância que não seja um espelho somente leitura? Obviamente, isso pode encontrar problemas, especialmente se forem feitas alterações no esquema no ambiente de teste. Mesmo com alterações apenas no índice, você pode ter tempos limite de consulta e outros comportamentos inconsistentes.
Mas é exatamente isso que pretendemos fazer: dado um conjunto de alterações de índice, como funcionam as consultas do mundo real, sob carga do mundo real? Eles são mais rápidos? Eles falham?
Algumas consultas de teste não serão suficientes. Executamos todos os tipos de trabalhos de processamento noturnos, semanais e mensais que afetam fortemente o banco de dados. Também temos muitos scripts e serviços externos que consultam e atualizam o banco de dados de maneiras que nem sempre prevemos.
Dado o escopo das mudanças necessárias, estou muito hesitante em fazer quaisquer alterações no índice de produção ao vivo sem verificação.
Recebi um arquivo de backup do banco de dados.
Após a restauração, executei o script neste banco de dados e ele me mostra a contagem de linhas em termos de consulta:
SELECT qs.execution_count,
SUBSTRING(qt.text,qs.statement_start_offset/2 +1,
(CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(nvarchar(max), qt.text)) * 2
ELSE qs.statement_end_offset end -
qs.statement_start_offset
)/2
) AS query_text,
qt.dbid, dbname= DB_NAME (qt.dbid), qt.objectid,
qs.total_rows, qs.last_rows, qs.min_rows, qs.max_rows
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE qt.text like '%SELECT%'
ORDER BY qs.execution_count DESC;
No entanto, isso não retorna a mesma saída que vejo ao executá-lo no banco de dados de produção.
Os valores sys.dm_exec_query_stats são armazenados na alavanca do servidor ou no nível do banco de dados? Quero dizer, os dados não são retidos após a restauração?
Restaurei uma chave mestra e criei um certificado e uma chave simétrica SSMS com:
use AdventureWorks2022
DROP MASTER KEY
RESTORE MASTER KEY
FROM FILE = 'c:\stuff\master_key_backup.mas'
DECRYPTION BY PASSWORD = 'ASDF$E£%^IJYK*&234'
ENCRYPTION BY PASSWORD = '259087M#MyjkFkjhywiyedfgGDFD'
OPEN MASTER KEY DECRYPTION BY PASSWORD = '259087M#MyjkFkjhywiyedfgGDFD';
-- create new certificate and symkey to encode a new column
CREATE CERTIFICATE Certificate_test2 WITH SUBJECT = 'Protect my second data';
CREATE SYMMETRIC KEY SymKey_test2 WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE Certificate_test2;
Em seguida, criptografei uma coluna de uma tabela usando:
open symmetric key SymKey_test2 decryption by certificate Certificate_test2
update AdventureWorks2022.[Person].[EmailAddress]
set email_encrypt = ENCRYPTBYKEY(key_guid('symkey_test2'), emailaddress)
from AdventureWorks2022.[Person].[EmailAddress]
close symmetric key symkey_test2
e testei que funcionava com:
open symmetric key symkey_test2 decryption by certificate certificate_test2
select convert(nvarchar, decryptbykey(email_encrypt)) as 'decrypted email',*
from AdventureWorks2022.[Person].[EmailAddress]
close symmetric key symkey_test2
Coloquei o código que funcionou em um script novo, mas veio com o erro:
Please create a master key in the database or open the master key in the session before performing this operation.
Posso fazê-lo funcionar se incluir a linha: OPEN MASTER KEY DECRYPTION BY PASSWORD = '259087M#MyjkFkjhywiyedfgGDFD';
, mas não quero expor minha senha em um novo script que será chamado em um procedimento armazenado e em chamadas de dados do Excel.
Existe uma maneira de abrir uma chave mestra sem expor a senha? O objetivo final é configurar isso em um procedimento armazenado que é chamado pela conexão de dados do Excel, mas claro, não quero que os usuários finais tenham acesso à senha mestra.